Linux系統用戶是根據用戶ID來識別的,默認ID長度為32位,從默認ID編號從0開始,但是為了和老式系統兼容,用戶ID限制在60000以下,Linux用戶分總共分為三種,分別如下:
root用戶 (ID 0)
系統用戶 (ID 1-499)
普通用戶 (ID 500以上)
Linux系統中的每個文件或者文件夾,都有一個所屬用戶及所屬組,使用id命令可以顯示當前用戶的信息,使用passwd命令可以修改當前用戶密碼。Linux操作系統用戶的特點如下:
每個用戶擁有一個UserID,操作系統實際讀取的是UID,而非用戶名;
每個用戶屬於一個主組,屬於一個或多個附屬組,一個用戶最多有31個附屬組;
每個組擁有一個GroupID;
每個進程以一個用戶身份運行,該用戶可對進程擁有資源控制權限;
每個可登陸用戶擁有一個指定的Shell環境。
Linux用戶管理
Linux用戶在操作系統可以進行日常管理和維護,涉及到的相關配置文件如下:
/etc/passwd 保存用戶信息
/etc/shdaow 保存用戶密碼(以加密形式保存)
/etc/group 保存組信息
/etc/login.defs 用戶屬性限制,密碼過期時間,密碼最大長度等限制
/etc/default/useradd 顯示或更改默認的useradd配置文件
如需創建新用戶,可以使用命令useradd,執行命令useradd test1即可創建test1用戶,同時會創建一個同名的組test1,默認該用戶屬於test1主組。
Useradd test1命令默認創建用戶test1,會根據如下步驟進行操作:
在/etc/passwd文件中添加用戶信息;
如使用passwd命令創建密碼,密碼會被加密保存在/etc/shdaow中;
為test1創建家目錄:/home/test1;
將/etc/skel中的.bash開頭的文件復制至/home/test1家目錄;
創建與用戶名相同的test1組,test1用戶默認屬於test1同名組;
test1組信息保存在/etc/group配置文件中。
在使用useradd命令創建用戶時,可以支持如下參數:
用法:useradd [選項] 登錄
useradd -D
useradd -D [選項]
選項:
-b, --base-dir BASE_DIR 指定新賬戶的家目錄;
-c, --comment COMMENT 新賬戶的 GECOS 字段;
-d, --home-dir HOME_DIR 新賬戶的主目錄;
-D, --defaults 顯示或更改默認的 useradd 配置;
-e, --expiredate EXPIRE_DATE 新賬戶的過期日期;
-f, --inactive INACTIVE 新賬戶的密碼不活動期;
-g, --gid GROUP 新賬戶主組的名稱或ID;
-G, --groups GROUPS 新賬戶的附加組列表;
-h, --help 顯示此幫助信息並推出;
-k, --skel SKEL_DIR 使用此目錄作為骨架目錄;
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默認值;
-l, --no-log-init 不要將此用戶添加到最近登錄和登錄失敗數據庫;
-m, --create-home 創建用戶的主目錄;
-M, --no-create-home 不創建用戶的主目錄;
-N, --no-user-group 不創建同名的組;
-o, --non-unique 允許使用重復的 UID 創建用戶;
-p, --password PASSWORD 加密后的新賬戶密碼;
-r, --system 創建一個系統賬戶;
-R, --root CHROOT_DIR chroot 到的目錄;
-s, --shell SHELL 新賬戶的登錄 shell;
-u, --uid UID 新賬戶的用戶 ID;
-U, --user-group 創建與用戶同名的組;
-Z, --selinux-user SEUSER 為SELinux 用戶映射使用指定 SEUSER。
Linux組管理
所有的Linux或者Windows系統都有組的概念,通過組可以更加方便的管理用戶,組的概念應用於各行行業,例如企業會使用部門、職能或地理區域的分類方式來管理成員,映射在Linux系統,同樣可以創建用戶,並用組的概念對其管理。
Linux組有如下特點:
每個組有一個組ID;
組信息保存在/etc/group中;
每個用戶至少擁有一個主組,同時還可以擁有31個附屬組。
通過命令groupadd、groupdel、groupmod來對組進行管理,詳細參數使用如下:
groupadd用法
-f, --force 如果組已經存在則成功退出;
並且如果 GID 已經存在則取消 –g;
-g, --gid GID 為新組使用 GID;
-h, --help 顯示此幫助信息並推出;
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默認值;
-o, --non-unique 允許創建有重復 GID 的組;
-p, --password PASSWORD 為新組使用此加密過的密碼;
-r, --system 創建一個系統賬戶;
groupmod用法
-g, --gid GID 將組 ID 改為 GID;
-h, --help 顯示此幫助信息並推出;
-n, --new-name NEW_GROUP 改名為 NEW_GROUP;
-o, --non-unique 允許使用重復的 GID;
-p, --password PASSWORD 將密碼更改為(加密過的) PASSWORD;
groupdel用法
groupdel admin 刪除admin組;
二、 Linux權限管理
Linux權限是操作系統用來限制對資源訪問的機制,權限一般分為讀、寫、執行。系統中每個文件都擁有特定的權限、所屬用戶及所屬組,通過這樣的機制來限制哪些用戶或用戶組可以對特定文件進行相應的操作。
Linux每個進程都是以某個用戶身份運行,進程的權限與該用戶的權限一樣,用戶的權限越大,則進程擁有的權限就越大。
Lnux中有的文件及文件夾都有至少權限三種權限,常見的權限如表5-1所示:
權限 |
對文件的影響 |
對目錄的影響 |
r(讀取) |
可讀取文件內容 |
可列出目錄內容 |
w(寫入) |
可修改文件內容 |
可在目錄中創建刪除內容 |
x(執行) |
可作為命令執行 |
可訪問目錄內容 |
目錄必須擁有 x 權限,否則無法查看其內容 |
Linux權限授權,默認是授權給三種角色,分別是user、group、other,Linux權限與用戶之間的關聯如下:
U代表User,G代表Group,O代表Other;
每個文件的權限基於UGO進行設置;
權限三位一組(rwx),同時需授權給三種角色,UGO;
每個文件擁有一個所屬用戶和所屬組,對應UGO,不屬於該文件所屬用戶或所屬組使用O來表示;
在Linux系統中,可以通過ls –l查看peter.net目錄的詳細屬性,如圖5-1所示:
drwxrwxr-x 2 peter1 peter1 4096 Dec 10 01:36 peter.net |
peter.net目錄屬性參數詳解如下:
d 表示目錄,同一位置如果為-則表示普通文件;
rwxrwxr-x 表示三種角色的權限,每三位為一種角色,依次為u,g,o權限,如上則表示user的權限為rwx,group的權限為rwx,other的權限為r-x;
2表示文件夾的鏈接數量,可理解為該目錄下子目錄的數量;
從左到右,第一個peter1表示該用戶名,第二個peter1則為組名,其他人角色默認不顯示;
4096表示該文件夾占據的字節數;
Dec 10 01:36 表示文件創建或者修改的時間;
peter.net 為目錄的名,或者文件名。
peter.net目錄屬性參數詳解如下:
d 表示目錄,同一位置如果為-則表示普通文件;
rwxrwxr-x 表示三種角色的權限,每三位為一種角色,依次為u,g,o權限,如上則表示user的權限為rwx,group的權限為rwx,other的權限為r-x;
2表示文件夾的鏈接數量,可理解為該目錄下子目錄的數量;
從左到右,第一個peter1表示該用戶名,第二個peter1則為組名,其他人角色默認不顯示;
4096表示該文件夾占據的字節數;
Dec 10 01:36 表示文件創建或者修改的時間;
peter.net 為目錄的名,或者文件名。
Chmod用戶及組權限
修改某個用戶、組對文件夾的權限,用命令chmod實現,其中以代指ugo,、-、=代表加入、刪除和等於對應權限,具體案例如下:
(1) 授予用戶對peter.net目錄擁有rwx權限
chmod –R u+rwx peter.net |
(2) 授予組對peter.net目錄擁有rwx權限
chmod –R g+rwx peter.net |
(3) 授予用戶、組、其他人對jpeter.net目錄擁有rwx權限
chmod –R u+rwx,g+rwx,o+rwx peter.net |
(4) 撤銷用戶對peter.net目錄擁有w權限
chmod –R u-w peter.net |
(5) 撤銷用戶、組、其他人對peter.net目錄擁有x權限
chmod –R u-x,g-x,o-x peter.net |
(6) 授予用戶、組、其他人對jpeter.net目錄只有rx權限
Chmod二進制權限
Linux權限默認使用rwx來表示,為了更簡化在系統中對權限進行配置和修改,Linux權限引入二進制表示方法,如下代碼:
Linux權限可以將rwx用二進制來表示,其中有權限用1表示,沒有權限用0表示; Linux權限用二進制顯示如下: rwx=111 r-x=101 rw-=110 r--=100 依次類推,轉化為十進制,對應十進制結果顯示如下: rwx=111=4+2+1=7 r-x=101=4+0+1=5 rw-=110=4+4+0=6 r--=100=4+0+0=4 得出結論,用r=4,w=2,x=1來表示權限。 |
使用二進制方式來修改權限案例演示如下,其中默認peter.nett目錄權限為755:
(1) 授予用戶對peter.net目錄擁有rwx權限
chmod –R 755 peter.net |
(2) 授予組對peter.net目錄擁有rwx權限
chmod –R 775 peter.net |
(3) 授予用戶、組、其他人對peter.net目錄擁有rwx權限
Linux特殊權限及掩碼
Linux權限除了常見的rwx權限之外,還有很多特殊的權限,細心的讀者會發現,為什么Linux目錄默認權限755,而文件默認權限為644呢,這是因為Linux權限掩碼umask導致。
每個Linux終端都擁有一個umask屬性,umask熟悉可以用來確定新建文件、目錄的默認權限,默認系統權限掩碼為022。在系統中每創建一個文件或者目錄,文件默認權限是666,而目錄權限則為777,權限對外開放比較大,所以設置了權限掩碼之后,默認的文件和目錄權限減去umask值才是真實的文件和目錄的權限。
對應目錄權限為:777-022=755;
對應文件權限為:666-022=644;
執行umask命令可以查看當前默認的掩碼,umask -S 023可以設置默認的權限掩碼。
在Linux權限中,除了普通權限外,還有如下表5-2所示,三個特殊權限:
權限 |
對文件的影響 |
對目錄的影響 |
Suid |
以文件的所屬用戶身份執行,而非執行文件的用戶 |
無 |
sgid
|
以文件所屬組身份去執行 |
在該目錄中創建任意新文件的所屬組與該目錄的所屬組相同 |
sticky
|
無 |
對目錄擁有寫入權限的用戶僅可以刪除其擁有的文件,無法刪除其他用戶所擁有的文件 |
表5-2 Linux三種特殊權限
Linux中設置特殊權限方法如下:
q 設置suid: chmod u+s peter.net
q 設置sgid: chmod g+s peter.net
q 設置sticky: chmod o+t peter.net
特殊權限與設置普通權限一樣,可以使用數字方式表示:
SUID = 4
SGID = 2
Sticky = 1
可以通過chmod 4755 peter.net對該目錄授予特殊權限為s的權限,Linux系統中s權限的應用常見包括:su、passwd、sudo,
本章小結
通過對本章內容的介紹,讀者可以了解Linux用戶和組的系統知識,同時賬號Linux用戶和組在系統中各種案例操作。讀者可以熟練新建用戶、刪除用戶、修改用戶屬性、添加組、修改組以及刪除組。
覺得筆者寫的還可以的話可以關注一下哦 謝謝!