本文分爲兩部分:第一部分先介紹用戶與權限的各種觀念
第二部分再集中介紹一下相關命令
個人理解的用戶,文件,與進程關係之間的關係如下:(以下的文件不包含目錄)
用戶通過對該文件的權限來操作文件,使文件在進程中運行,此時用戶的作用可表現爲進程的發起者
查看文件的權限可通過以下命令執行
ls -l :查看當前目錄中的文件與目錄的詳細信息:
在查詢結果中可查看當前目錄下的詳細文件信息:
首先看一下查詢結果中的第一部分:-rw-r–r– 在這裏我們可以獲取到的信息由文件的格式與權限信息
第一個 “ – ” 表示的是該文件的類型 :
剩餘部分每三個字符爲一組 分別表示三個用戶類別的權限:用戶權限,組權限,其他權限
用戶與組的組成關係如下圖
每一組權限由三個字符組成:r–可讀,w–可寫,x–可執行
舉例: 一個文件信息中第一部分爲: -rwxrw-r–
代表該文件爲普通文件 rwx:屬主對其可執行的權限
rw-:屬組可執行的權限
r–:其他用戶可執行的權限 –其他用戶:既不是該文件的屬主,也不屬 於該文件的組的用戶
在文件詳細信息中,第二列 第三列的 分別表示該文件的屬主與屬組
之後分別是文件的大小,創建日期,文件名
接下來就要詳細說明一下關於用戶,組的信息與概念
每個用戶,組都有一個唯一的ID 命令id可查看當前登錄的用戶信息
用戶UID中 管理員用戶爲0 ,系統用戶爲1~499(CentOS6.7),普通用戶爲500~60000
組GID中 管理員組爲0,系統用戶組爲1~499(CentOS6.7),普通用戶爲500~6000
進程是以發起者的身份運行。即 進程對文件的訪問權限取決於發起進程的用戶/用戶所屬組的權限
什麼是系統用戶?
在系統中的後臺進程和服務類進程都需要以用戶的身份運行,如果以管理員身份運行的話有可能會對系統造成危險。所以需要一組普通用戶來運行,此類用戶不需要登錄系統。–這就稱之爲系統用戶
用戶的私有組:組名與用戶名一樣,且只包含一個用戶。在我們創建新用戶時系統會默認的給我們創建一個同名的用戶組
密碼:輸入 chage -l username 可以看到指定用戶的密碼信息
自上而下分別爲:最後一次的密碼更改時間。密碼過期時間。非活動時間。賬戶過期時間。兩次密碼改變之間最小距離天數。最大天數。密碼過期前開始警告的天數
在非活動時間內:賬戶依然存在,不過必須要在修改了密碼後才能繼續使用
在賬戶過期之後就只能以管理員的身份來解決
查看組的信息庫: /etc/group
查看用戶的信息庫: /etc/passwd
用戶名:密碼:UID:GID:註釋信息:家目錄:默認shell
其中密碼是獨立存放於 /etc/shadow中的
其中$6$中6表示該密碼採用了 sha-512(86位)的算法 其他加密算法有:
1:MD5(22位)
2a:Blowfish–只在一部分linux分支中使用的加密算法
5:SHA-256(43位)
在設置密碼時爲了安全:1.使用隨機碼
2.最短長度不要低於8位
3.使用大寫/小寫字母,數字,標點符號中至少三類
4.定期更換
接下來就介紹一下linux用戶與權限管理中常用到的命令:
ps:只介紹了命令中的部分參數選項,詳細的參數及使用方法可以自行man COMMAND查看
更換用戶: su
管理員在切換其他用戶的時候可以無需密碼直接登錄
su username :非登錄式切換 不會讀取用戶目標的配置文件進行初始化
su – username :登錄式切換 通過重新讀取用戶的配置文件來重新初始化
-c ,–command : 需要用某個用戶來執行命令。但不想切換到該用戶的時候可以用這個選項
像我這個樣門都沒入的新手看來這個選項目前是不知道有什麼意義。
創建新用戶: useradd useradd [選項] logname
常見的選項有:
-u:制定uid 默認情況下uid是自動分配的。id=最後一個UID+1
-g:制定基本組ID 此組必須要事先存在
-G:知名用戶的附加組
-c:註釋信息
-d:指明家目錄
-s:制定默認shell
-r:創建系統用戶
修改用戶屬性: usermod usermod [選項] username
-u:修改id爲指定id
-g:修改用戶的基本組,指定的組必須事先存在
-G:修改附加組。會默認覆蓋用戶原來的附加組。若是想追加用戶組可用-a選項一起使用
-c:修改註釋信息
-l:修改用戶名
-L:鎖定用戶。禁止登錄。-原理爲在用戶的密碼字符串中首部加一個!
-U:解鎖用戶
userdel:刪除用戶
-r:刪除用戶時把用戶的家目錄一起刪除 默認情況下不刪除家目錄
groupadd: 添加組
groupmod:修改組的選項
groupdel:刪除組
由於這三條命令使用方法與用戶的添加修改刪除差不多。所以就不需要舉例。可自行查看幫助手冊
對組的成員用戶進行操作: gpasswd gpasswd [選項] group
-a username: 像組中添加用戶
-d username: 從組中移除用戶
newgrp:臨時切換爲制定的組爲基本組 newgrp [-] [group]
-:模擬用戶重新登錄-重新初始化其工作環境
文件權限管理部分的常用命令:
在這裏需要注意一件事 : 那就是用戶只能修改屬主爲自己的權限
進程對文件的訪問權限應用模型:
進程的屬主與文件的屬主是否相同:如果相同則應用屬主權限進行,否則則看發起者是否屬於文件的屬組
屬於屬組則使用屬組權限 否則使用其他權限
修改文件(目錄)的權限:chmod 修改目錄時隻影響目錄本身
有三種格式的用法:
1.chmod [option] …mode[,mode,mode]…file
在圖1中 是直接覆蓋之前的權限。如果只需要添加或者刪除某一個權限就可以用+(添加)或- (刪除)來組合使用
u 用戶 g組 o 其他用戶 ugo可單獨使用也可以組合使用
2.chmod [OPTION]… OCTAL-MODE FILE…
現在就要講一下文件權限的另一種表示方法
如果把我們輸入 chmod 22 file 沒有給出3位數看看是什麼結果
從結果中可以知道在沒有給三位出的情況下會默認往首位填0 即 22=022
3.chmod [OPTION]… –reference=RFILE FILE.
chmo –reference=file1 file2把2的權限改爲和1一樣
-R,–recursive: 遞歸修改:修改目錄下的所有目錄,子目錄 文件。
修改文件的屬主: chown
chown [OPTION]… [OWNER][:[GROUP]] FILE…OWNER:GROUP或OWNER.GROUP皆可
chown [OPTION]… –reference=RFILE FILE…
-R:遞歸修改
修改文件的屬組:chgrp
在創建文件的時候之所以會有默認權限。是因爲umask存在
umask:件權限的反向掩碼,遮罩碼:防止創建出來的文件/目錄爲777
umask有個默認值 022
由於文件不應該有執行權限 所以: 666-umask就是創建文件時的默認權限
如果最後運算所得的結果爲3/5等帶有執行權限的。就會+
如666-043=623 就會+1得 624
目錄中是: 777-umask
但是實際上當我們查看umask值得時候看見的是0002四位數.
左邊多出來的那一位代表的就是文件的 SUID,SGID,STYCKY屬性
SUID:當用戶在運行某程序時 對該文件擁有SUID權限時.該用戶不是運行的發起者. 文件會以自己的屬主爲發起者
設置:chmod u+s
user位的x位置爲s時.代表別的用戶能以該用戶的權限運行文件
應用: /bin/passwd
雖然test用戶不是passwd的屬主/屬組. 但是依然能執行該文件修改自己的密碼
SGID chmod g+s
目錄屬組有寫權限,而且有SGID權限時.那麼所有屬於此目錄的屬組.且以屬組身份再次目錄中心創建文件或目錄時新文件的屬組不是用戶的基本組:而是此目錄的屬組.
STYCKY chmod o+t
對於屬組或全局可寫的目錄.組內的所有任務或系統上的所有用戶在此目錄中都能創建新文件或刪除所有的已有文件.如果爲此類目錄設置Sticky權限.則每個用戶能創建新文件,且只能刪除自己的文件.
效果:只要該目錄有t位. 別人不能刪掉 即使是有讀權限也不能刪除 只有該文件擁有者可以刪除
一般與SGID一起使用.在共享文件夾中的應用
facl 文件訪問控制列表
facl可理解爲對不屬於文件屬主/屬組的用戶/組賦予與文件屬主/屬組權限無關的單獨授權
引用圖
getfacl:查看某文件的列表:
getfacl FILE
user:USERNAME:MODE
group:GROUPNAME:MODE
setfacl命令:
setfacl -m u:USERNAME:MODE FILE…
-m g:GROUPNAME:MODE FILE…
撤銷賦權:
setfacl -x u:USERNAME:MODE FILE…
-x g:GROUPNAME:MODE FILE…
否定優先級最高: 一個用戶在a b兩個組 ab兩個組都是文件A的特權組 此時 該用戶執行A文件的時候 是執行否定級的 即 a組 — b組 rwx 時 該用戶對該文件的權限是—
Posted in: 系統基礎