用戶
用戶的類別:
管理員:root
普通用戶:
系統用戶:僅用於運行服務程序;
登錄用戶:系統資源的正常使用者;
用戶標識:UserID, UID
管理員:0
普通用戶:
系統用戶:
CentOS 5, 6: 1-499
CentOS 7: 1-999
普通用戶:
CentOS 5,6: 500+
CentOS 7: 1000+
名稱解析: username <--> UID
解析庫:/etc/passwd:用戶名、UID及其它屬性信息解析庫;
useradd命令:添加用戶
useradd [選項] 登錄名
-c, --comment COMMENT:註釋信息,一般爲Full Name;
-d, --home /PATH/TO/HOME_DIR:家目錄路徑;目標路徑不能事先存在,否則會有警告,不會得利skel相關的文件給用戶;
-g, --gid GROUP:用戶的基本組組名或GID;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用戶所屬的附加組列表,彼此間用逗號隔開,中間沒有空格;
-m, --create-home:強制創建家目錄;
-M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置 (CREATE_HOME) 爲 yes;
-r, --system:創建一個系統賬戶
-s, --shell SHELL:用戶的登錄 shell 名,默認爲留空,讓系統根據 /etc/default/useradd 中的 SHELL 變量選擇默認的登錄shell;
-u, --uid UID:用戶 ID 的數字值。此值必須爲唯一的,除非使用了 -o 選項。此值必須非負,默認使用大於等於UID_MIN,且大於任何其他用戶 ID 最小值。
注意:創建登錄用戶時,爲其自定義的shell程序必須爲可登錄shell,且要位於/etc/shells文件中;
useradd -D:顯示創建用戶時的默認設置;
useradd -D 選項:設置某默認選項;
-e, --expiredate EXPIRE_DATE:用戶賬號的過期期限;過期後會被鎖定;日期以 YYYY-MM-DD 格式指定
-f, --inactive INACTIVE:密碼過期後,賬戶被徹底禁用之前的天數。0 表示立即禁用,-1 表示禁用這個功能。
爲用戶提供默認配置的配置文件:
/etc/login.defs, /etc/default/useradd
usermod命令:修改賬號信息
-c, --comment COMMENT
-d, --home HOME_DIR:修改家目錄爲新的位置,但一般應該同時使用-m選項以保證原家目錄中的文件會移動到新目錄中;
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改時會覆蓋原有的附加組;一同使用-a選項,表示爲用戶添加新的附加組;
-l, --login NEW_LOGIN:修改當前用戶的用戶名;
-s, --shell SHELL
-u, --uid UID
-L, --lock:鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!”
-U, --unlock:解鎖用戶的密碼。這將移除加密的密碼之前的“!”
userdel命令:刪除用戶賬號
userdel [選項] 登錄名
-r, --remove:用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除
用戶組
用戶組的類別:
管理員組:
普通用戶組:
系統組
登錄組
組標識:GroupID, GroupID
管理員組:0
普通用戶組:
系統組:
CentOS 5,6: 1-499
CentOS 7: 1-999
登錄組:
CentOS 5,6: 500+
CentOS 7: 1000+
名稱解析:groupname <--> gid
解析庫:/etc/group
組類別:以用戶爲核心
用戶的主組:基本組;
用戶的附加組:額外組;
組類別:根據組內容納的用戶來劃分
私有組:與用戶名相同,且只有一個此用戶;
公共組:組內包含了多個用戶;
groupadd命令:添加組
groupadd [選項] group
-g GID:指明GID;
-r, --system:系統組;
groupmod命令:修改組信息
groupmod [選項] GROUP
-g GID
-n NEW_NAME:修改組名;
groupdel命令:刪除組
groupdel [選項] GROUP
認證
認證機制:驗正用戶的確是他所聲稱的人;
通過對比事先存儲的,與登錄時所提供的信息是否一致;
存儲於何處:
用戶的認證信息庫:/etc/shadow
組的認證信息庫:/etc/gshadow
影子口令文件:/etc/shadow
密碼:加密存放,使用單向加密機制;
單向加密:僅能加密,不能解密;提取數據特徵碼;
算法:
1:md5: message digest, 128bits
2:sha1: secure hash algorithm, 160bits
3:sha224
4:sha256
5:sha384
6:sha512
添加salt:取隨機數;
隨機數:
熵池:
/dev/random:僅從熵池返回隨機數,隨機數耗盡時會阻塞進程;
僞隨機數:軟件模擬產生;
/dev/urandom:先從熵池返回隨機數,熵池耗盡時,則從僞隨機數生成器返回隨機數;
passwd命令:密碼管理命令
passwd [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [--stdin] [username]
(1) passwd:修改自己的密碼;
(2) passwd username:修改其它用戶的密碼,僅root有此權限;
密碼複雜度:
(1) 不能少於8個字符;
(2) 不能使用與過去的密碼太相似的密碼;
(3) 應該使用四類字符中的至少三類;
-l:鎖定密碼
-u:解鎖解密
-d:清除密碼
--stdin:從標準輸入接收密碼;
echo "PASSWORD" | passwd --stdin
gpasswd命令:爲組添加密碼
組密碼文件:/etc/gshadow
gpasswd [選項] group
-a USERNAME:把用戶添加至組中;
-d USERNAME:從此組中移除此用戶;
id命令:查看用戶相關的id信息;
id [OPTION]... [USER]
-u:僅查看uid
-g:僅查看gid
-G:查看所屬的所有組的ID;
-n:顯示名稱,而非ID;
su命令:switch user
切換用戶時:
(1) 不讀取目標用戶的配置文件(非登錄式切換,半切換);
su USERNAME
(2) 讀取目標用戶的配置文件(登錄式切換,完全切換);
su -l USERNAME
su - USERNAME
-c command, --command=command:僅以指定的用戶的身份運行此處指定的命令,而不執行真正的身份切換操作;
注意:root切換至任何其它用戶無須認證密碼;普通用戶切換至其它用戶,都需要密碼;
權限管理:
文件:
r:可獲取文件的數據;
w:可修改文件的數據;
x:可將此文件運行爲進程;
目錄:
r:可使用ls命令獲取其下的所有文件列表;但不可以使用“ls -l”去獲取詳細信息,也不可以cd至此目錄中;
w:可修改此目錄下的文件列表, 即可以在此目錄下創建或刪除文件;
x:可以使用"ls -l“命令來獲取其下的文件的詳細屬性信息,也可cd至此目錄中;
rwxrwxrwx:
owner: rwx
group: rwx
other: rwx
權限組合機制:
以owner爲例:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
ownership: 僅管理員有權限
改屬主:chown
改屬組:chgrp
mode(permission):僅屬主
chmod命令:
作用:change file mode bits
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
MODE:
賦權表示法:直接操作一類用戶的所有權限位rwx;
u=
g=
o=
a=
兩類用戶權限相同:ug=, go=
不同類的用戶權限不同:u=,g=,o=
授權表示法:操作一類用戶一位或多位權限;
u+, u-
g+, g-
o+, o-
a+, a-
兩類用戶權限收授機制相同:ug+, ug-, ...
不同類的用戶權限不同:u+,g+,o+
常用選項:
-R, --recursive:遞歸修改;
chown命令:
作用:改變屬主
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
常用選項:
-R, --recursive:遞歸修改;
chgrp命令:
作用:改變屬組
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
umask:顯示或設定文件模式掩碼
文件:
666-umask
目錄:
777-umask
注意:之所以文件用666去減,表示文件默認不能有執行權限;如果減得的結果中,u,g或o有執行權限時,則需要加1;
顯示:umask
設定:umask MASK
注意:此設定僅對當前shell進程有效;