用戶和組管理:
以下區間區別於centos6,和centos7
Linux用戶:Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499, 1-999
對守護進程獲取資源進行權限分配;
登錄用戶:500+, 1000+
交互式登錄;
Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999
普通組:500+, 1000+
組的類別:
用戶的基本組(主組):
#組名同用戶名,且僅包含一個用戶:私有組
用戶的附加組(額外組):一個用戶可能屬於多個組
Linux用戶和組相關的配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、基本組ID等等);
/etc/group:組及其屬性信息;
/etc/shadow:用戶密碼及其相關屬性;
/etc/gshadow:組密碼及其相關屬性;
Linux安全上下文:
運行中的程序:進程 (process)
以進程發起者的身份運行:
root: cat 則cat以系統管理員root權限運行
tom: cat 則cat以普通用戶tom權限運行
進程所能夠訪問的所有資源的權限取決於進程的發起者的身份;
Linux用戶和組相關的配置文件:
/etc/passwd:name:password:UID:GID:GECOS:directory:shell (用戶名:密碼:UID:GID:GECOS:主目錄:默認shell)
/etc/group:group_name:password:GID:user_list [組名:組密碼:GID:以當前組爲附加組的用戶列表(分隔符爲逗號)]
/etc/shadow:用戶密碼及其相關屬性;
用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期:賬戶過期日期:保留字段
/etc/gshadow:組密碼及其相關屬性;
用戶和組相關的管理命令:
用戶創建:useradd
useradd [options] LOGIN
-u UID: [UID_MIN, UID_MAX], 定義在/etc/login.defs
-g GID:指明用戶所屬基本組,可爲組名,也可以GID;
-c "COMMENT":用戶的註釋信息;
-d /PATH/TO/HOME_DIR: 以指定的路徑爲家目錄;
-s SHELL: 指明用戶的默認shell程序,可用列表在/etc/shells文件中;
-G GROUP1[,GROUP2,...[,GROUPN]]]:爲用戶指明附加組;組必須事先存在;
-r: 創建系統用戶
CentOS 6: ID<500
CentOS 7: ID<1000
默認值設定:/etc/default/useradd文件中
刪除用戶:userdel
userdel [OPTION]... login
-r: 刪除用戶家目錄;
組創建:groupadd
groupadd [OPTION]... group_name
-g GID: 指明GID號;[GID_MIN, GID_MAX]
-r: 創建系統組;
CentOS 6: ID<500
CentOS 7: ID<1000
組刪除:groupdel
groupdel GROUP
用戶屬性修改:usermod
usermod [OPTION] login
-u UID: 新UID
-g GID: 新基本組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append;
-s SHELL:新的默認SHELL;
-c 'COMMENT':新的註釋信息;
-d HOME: 新的家目錄;原有家目錄中的文件不會同時移動至新的家目錄;若要移動,則同時使用-m選項;
-l login_name: 新的名字;
-L: lock指定用戶
-U: unlock指定用戶
-e YYYY-MM-DD: 指明用戶賬號過期日期;
-f INACTIVE: 設定非活動期限;
給用戶添加密碼:passwd
passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限
passwd: 修改自己的密碼;
常用選項:
-l: 鎖定指定用戶
-u: 解鎖指定用戶
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限;
--stdin:從標準輸入接收用戶密碼;
echo "PASSWORD" | passwd --stdin USERNAME
組密碼:gpasswd
gpasswd [OPTION] GROUP
-a user: 將user添加至指定組中;
-d user: 刪除用戶user的以當前組爲組名的附加組
-A user1,user2,...: 設置有管理權限的用戶列表
newgrp命令:臨時切換基本組;
如果用戶本不屬於此組,則需要組密碼;
組屬性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID;
切換用戶或以其他用戶身份執行命令:su
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件;
su - UserName:登錄式切換,會讀取目標用戶的配置文件;完全切換;
//Note:root su至其他用戶無須密碼;非root用戶切換時需要密碼;
換個身份執行命令:
su [-] UserName -c 'COMMAND'
選項:
-l:“su -l UserName”相當於“su - UserName”
文件權限管理:
文件的權限主要針對三類對象進行定義:
owner: 屬主, u
group: 屬組, g
other: 其他訪問者, o
每個文件針對每類訪問者都定義了三種權限:
r: Readable 讀
w: Writable 寫
x: eXcutable 執行
文件:
r: 可使用文件查看類工具獲取其內容;
w: 可修改其內容;
x: 可以把此文件提請內核啓動爲一個進程;
目錄:
r: 可以使用ls查看此目錄中文件列表;
w: 可在此目錄中創建文件,也可刪除此目錄中的文件;
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄;
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
640: rw-r-----
rwxr-xr-x: 755
修改文件權限:chmod
chmod [OPTION]... OCTAL-MODE FILE...
-R: 遞歸修改權限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一類用戶的所有權限:
u=
g=
o=
ug=
a=
u=,g=
修改一類用戶某位或某些位權限
u+
u-
chmod [OPTION]... --reference=RFILE FILE...
參考RFILE文件的權限,將FILE的修改爲同RFILE;
修改文件的屬主:chown 僅root可用;
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
Note: 命令中的冒號可用.替換;
-R: 遞歸
chown [OPTION]... --reference=RFILE FILE...
修改文件的屬組:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R
申請進程執行權限:
前提:進程有屬主和屬組;文件有屬主和屬組;
(1) 任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限;
(2) 啓動爲進程之後,其進程的屬主爲發起者;進程的屬組爲發起者所屬的組;
(3) 進程訪問文件時的權限,取決於進程的發起者:
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限;
(b) 進程的發起者,屬於文件的屬組;則應用文件屬組權限;
(c) 應用文件“其它”權限;
在LINUX文件或文件夾存在3種特殊權限:SUID,SGID,sticky
SUID
文件擁有SUID後,當用戶有執行權限,啓動爲進程之後,其進程的屬主爲原程序文件的屬主;
權限設定:
chmod u+s FILE...
chmod u-s FILE...
SGID
默認情況下,用戶創建文件時,其屬組爲此用戶所屬的基本組;
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組爲此目錄的屬組;
權限設定:
chmod g+s DIR...
chmod g-s DIR...
Sticky
對於一個多人可寫的目錄,如果設置了sticky,則每個用戶僅能刪除自己的文件;
#/tmp默認擁有Sticky權限 防止用戶刪除非自身文件
權限設定:
chmod o+t DIR...
chmod o-t DIR...
文件或目錄創建時的遮罩碼:umask
FILE: 0666-umask
Note: 如果某類的用戶的權限減得的結果中存在x權限,則將其權限+1
DIR: 0777-umask
其中第一位爲 (SUID, SGID, Sticky)
umask: 查看
umask #: 設定