Linux User and Group、Mode Management
早期Linux系統(tǒng)設(shè)計為了能夠?qū)崿F(xiàn)多用戶、多進程高效的利用服務器資源,在此種情況下,為了能夠保證用戶與用戶之間的文件不被隨意的訪問及修改、刪除等操作,用戶、組的管理能在某種程序上實現(xiàn)管理用戶或批量管理用戶。由于Linux的設(shè)計哲學思想『一切皆文件』,用戶對設(shè)備的訪問就是對文件的訪問。
此章節(jié)涉及到的命令匯總
useradd,usermod,userdel,groupadd,groupdel,groupmod,passwd,gpasswd,newgrp,su,id,chmod,chown,chgrp,setfacl,getfacl
==============
理論相關(guān)
User:
管理員
UID:0,GID:0
系統(tǒng)用戶
UID:1-499 GID:1-499(Centos6)
UID:1-999 GID:1-999(Centos7)
普通用戶
UID:500-60000 GID:500-6000(Centos6)
UID:1000-60000 GID:1000-60000(Centos7)
group:
分類一:
系統(tǒng)組
普通用戶組
分類二:
基本組
附加組
分類三:
私有組
公有組
注:組的UID、GID跟用戶的分配類似
File Mode:
Linux系統(tǒng)安全上下文:
當一個用戶發(fā)起一個進程時,此進程將繼承用戶的屬主、屬組的權(quán)限,再以進程繼承的權(quán)限來控制文件的訪問權(quán)限。
Linux權(quán)限標識:
r: Readable 讀
W: writable 寫
x: executable 執(zhí)行
rwx標識對文件及目錄的意義:
對文件:
r : 可以讀取文件中的內(nèi)容
w : 可以修改及刪除文件中的內(nèi)容
x : 可以將其發(fā)起為一個進程
對目錄:
r : 可以查看目錄中的文件,可以使用ls命令, 但不能使用 -l選項
w : 可以創(chuàng)建、刪除目錄,但不能修改文件中的內(nèi)容
x : 可以使用cd命令進入目錄
文件及目錄權(quán)限詳細表示方面
文件:-rwxrwxrwx
從左邊第二位開始,每三位代表一個權(quán)限類別:
u : owner
g : owner group
o : other
a : 代表以上三項
目錄:drwxrwxrwx
u、g、o同文件權(quán)限位
Linux內(nèi)核對文件權(quán)限的表示方法:
rwx: 4 2 1
Umask Mode Control
Linux對初始權(quán)限的控制來自于Umask的設(shè)定,其工作原理如下:
對新建立的文件:
666 - Umask值(由于Linux對文件的執(zhí)行權(quán)限控制很嚴格,默認取消了文件的執(zhí)行權(quán)限,所以這里是666)
對新建立的目錄:
777 - Umask值
Umask對管理員ROOT的初始值:022
Umask對普通用戶的初始值為:002
普通用戶建立的文件及目錄權(quán)限如下:
文件:
666-002=664 (如果減得的結(jié)果為奇數(shù),就自動加1)對應的權(quán)限如下:
-rw-rw-r--
目錄:
777-002=775 ,對應的權(quán)限如下:
drwxrwxr-x
對管理員root建立的文件及目錄權(quán)限如下:
文件:
666-022=644,對應的權(quán)限如下:
-rw-r--r--
目錄:
777-022=755,對應的權(quán)限如下:
drwx-r-xr-x
注:Umask的值可以使用umask命令來設(shè)置,但只對當前進程(即shell)有效,如要長期有效,需將此值設(shè)置到/etc/profile文件中,或者家目錄下的.開頭的文件中
===================
Configuration file for Linux system
User:
`/etc/passwd` (記錄用戶的詳細信息)
`/etc/shadow` (記錄用戶的密碼信息)
Group:
`/etc/group` (記錄組的詳細信息)
`/etc/gshadow` (記錄組的密碼信息)
定義創(chuàng)建用戶時的默認配置信息:
`/etc/default/useradd`(記錄創(chuàng)建用戶所需設(shè)定的值)
useradd -D 可以設(shè)置對應的參數(shù)
`/etc/login.defs`(配置創(chuàng)建用戶預設(shè)詳細參數(shù))
對應文檔的格式說明
/etc/passwd
root:x:0:0:root:/root:/bin/bash
用戶名:密碼:UID:GID:用戶注釋信息:用戶家目錄:Shell定義
- 用戶名: 用戶的名稱
- 密碼: X表示占位符,也可以是密碼
- UID: 用戶識別代碼
- GID: 用戶所屬組的GID(基本組)
- 用戶注釋信息:Comment,可以完善用戶的基本信息
- 用戶家目錄: 系統(tǒng)登錄用戶后的工作目錄
- shell: 定義用戶登錄系統(tǒng)所使用的shell,指定的shell需要在/etc/shells中出現(xiàn)
/etc/shadow
root:$6$YqkEsOcfKPptyhnS$YD0ym4BZ52pzcCnU....:16781:0:99999:7:::
用戶名:密碼:上一次修改密碼的時間:密碼最小使用期限:最長使用期限:警告時間:帳戶過期時間:保留字段
- 用戶名: 用戶的名稱,對應/etc/passwd文件中
- 密碼: Centos6中使用MD5加密算法,Centos7中使用sha1的算法,第一個$后面加密算法類型,第二個$后面表示salt,第三個$后面表示密碼的提取碼(參照加密類型)
- 上一次修改密碼的時間: 指用戶上次修改密碼的時間,計算方法:從Linux元年1970年01月01日0點0分到目錄所經(jīng)過的秒數(shù)
- 密碼最小使用期限: 指用戶修改密碼后,需要到多少天后方可更改密碼,0表示禁用
- 密碼最長使用期限: 指用戶的密碼到多少天后需要修改密碼
- 警告時間: 指用戶密碼到期前多少天提示用戶修改密碼,0和空字段表示禁用此功能
- 帳戶過期時間: 批帳戶在密碼過期后多少天還未修改密碼,將被停用
/etc/group
root:x:0:
組名:密碼:GID:User_list
- 組名:組的名稱,默認同名用戶名
- 密碼: 組的密碼占位符,用于用戶臨時切換至需要的組以獲取相應權(quán)限,可以使用
newgrp - GROUP_NAME切換 - GID:組的全局識別號
- User_list:隸屬此組的用戶,多個用戶使用","隔開
/etc/gshadow
root:$6$PLRAi/Z/svr$PRelPtvLuGJqvFG3D8fbjYHDho2RQUe93glO.::
組名:密碼:組管理者:User_list
- 組名:組的名稱,同步/etc/group文件中
- 密碼:第一個$后面表示加密算法,第二個$后面表示加密的密碼
- 組管理者:可以對此組成員有操作權(quán)限,如果有多個,可以用逗號隔開
- User_list: 用戶的列表,如果有多個,可以使用逗號隔開
=============
Linux管理用戶的相關(guān)命令
添加用戶:
`useradd` - create a new user or update default new user information
synopsis: useradd [options] LOGIN
useradd -D [options]
options:
-u : 指定用戶的UID
-g : 指定GID
-c : 指定注釋信息,如果有空格,需要使用" "包含
-d : 指定用戶家目錄,創(chuàng)建用戶時,會自動將/etc/skel中的文件復制到用戶家目錄下,如果指定的文件存 在將不會復制文件,如果父目錄不存在,創(chuàng)建也將會失敗
-s : 指定用戶shell
-r : 指定創(chuàng)建一個系統(tǒng)用戶
-M :不創(chuàng)建用戶家目錄
-G : 指定附加組,多個使用逗號隔開
-D :修改創(chuàng)建用戶的配置信息,文件位于/etc/default/useradd
注:創(chuàng)建用戶時的諸多默認設(shè)定配置文件為/etc/login.defs
修改用戶:
`usermod` - modify a user account
synopsis: usermod [options] LOGIN
options:
-u : 修改用戶UID
-g : 修改用戶GID
-c : 修改用戶的注釋信息
-d : 修改用戶家目錄,需要配合使用-m選項才會自動復制用戶家目錄下的文件到新的家目錄
-m : move-home to new directory
-s : 修改用戶的shell
-l : 修改用戶的登陸名,即login名稱
-G : 修改用戶的附加組信息,需要配合-a(append)一起使用,如果不使用-a將刪除原來的附加組
-a : --append,連接多個附加組的參數(shù)
-L : 鎖定用戶,即lock,在/etcpasswd文件中,密碼前面加!(一個)
-U : 解鎖用戶,即unlock,在/etc/passwd文件中,取消密碼前面的!號
刪除用戶
`userdel` - delete a user account and related files
synopsis: userdel [options] LOGIN
options:
-r : 刪除用戶的同時刪除用戶的家目錄,即--remove參數(shù)
用戶密碼設(shè)置
`passwd` - passwd - update user's authentication tokens
synopsis:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
1、passwd (修改自己的密碼)
2、passwd USERNAME(修改其他用戶的密碼,root權(quán)限 )
options:
-l : 鎖定用戶,在/etc/passwd的密碼前面加!!,
-u : 解鎖用戶,在/etcpasswd的密碼前!!取消
-d : --delete,刪除用戶密碼
-e DATE : --expire,設(shè)定過期時間
-i DAYS : 非活動時間
-n days : 最短使用期限
-x days : 最長使用期限
-w days : 警告期限
--stdin : `echo "PASSWD" | passwd --stdin root`
Linux管理組的相關(guān)命令
添加組
`groupadd` - create a new group
synopsis: groupadd [options] group
options:
-g : 指定GID號
-r : 指定為一個系統(tǒng)組
修改組
`groupmod` - modify a group definition on the system
synopsis: groupmod [options] GROUP
options:
-g : 修改GID號碼
-n : 修改組名稱 (groupmod -n NEW_GROUP OLD_GROUP)
刪除組
`groupdel` - delete a group
synopsis: groupdel GROUP_NAME
組密碼設(shè)置
`gpasswd` - administer /etc/group and /etc/gshadow
synopsis: gpasswd [option] group
options:
-a USER_NAME GROUP_NAME: 向組內(nèi)添加用戶
-d USER_NAME GROUP_NAME: 把用戶從組內(nèi)刪除
-r USER_NAMEG : 刪除組的密碼
臨時切換到其他組,好能夠獲取相應權(quán)限
`newgrp` - log in to a new group
synopsis: newgrp [-] [group]
- : 模擬用戶登陸, 以實現(xiàn)重新初始化環(huán)境變量
查看用戶相關(guān)信息
`id` - print real and effective user and group IDs
synopsis: id [OPTION]... [USERNAME]
options:
-u : 查看UID號
-g : 查看GID號
-G : 查看附加組GID號,其他包含基本組ID號
-n : 將各ID轉(zhuǎn)換為對應的名稱
切換用戶
`su` - switch user
sysnopsis: su [-] USER
options:
- : 以登陸方式切換用戶,以完成用戶環(huán)境變量、配置信息加載
-c : 不用登陸用戶即可以以指定用戶執(zhí)行命令
`su - mariabd -c 'id -u'`
用戶權(quán)限管理
`chmod` - change file mode bits
sysnopsis: chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
options:
-r --recursive : 遞歸修改
--reference : 參照某文件來修改
Usage:
1、賦權(quán)等值法
chmod u=rwx,g=rwx,0=rwx FILE
chmod a=rwx FILE
2、賦權(quán)加減法
chmod u-rwx,g-rwx,o-rwx FILE
chmod ugo-x FILE
chmod u+rwx,go+r FILE
chmod a+r FILE
3、十進制賦權(quán)法
chmod 777 FILE
4、參照賦值法
chmod --reference/var/log/file FILE
注意:1、在使用a+w的情況下,只有屬主才會加w,go是不會加上W權(quán)限
2、目錄有寫權(quán)限操作,但對目錄下的文件同有寫權(quán)限時,用戶是不能寫文件、但有刪除文件的能力
=============
chmod自己沒有執(zhí)行權(quán)限的解決方法:
1、使用ACL控制修復
- 1、setfacl -m u:root:rwx /bin/chmod
- 2、/bin/chmod 755 /bin/chmod
- 3、setfacl -b /bin/chmod (-b表示清除所有ACL訪問規(guī)則 )
2、使用系統(tǒng)盤的emergency模式,使用光盤的chmod修改根文件系統(tǒng)中的chmod權(quán)限
=========
用戶屬主、屬組修改(ownership)
`chown` - change file owner and group
synopsis: chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
options:
-R : --recursive 遞歸修改
--reference : 參照某文件來修改
Usage:
chown mariadb FILE : 只修改文件的屬主為mariadb
chown mariadb:mariadb FILE :修改文件的屬主、屬組為mariadb
chown mariadb:mariadb FILE : 同上
chown --reference=/var/log/file FILE : 參照/var/log/file來修改FILE的屬主、屬組
`chgrp` - chgrp - change group ownership
synopsis: chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注:由于chgrp只能修改屬組,故一般情況都使用chown代替
=============
Useradd、Usermod、Userdel、groupadd、groupdel、groupmod參數(shù)匯總
通用參數(shù)
用戶管理類
useradd:
-u
-g
-c
-d
-s
-G
-r
-M
-D
usermod:
-u
-g
-c
-d
-s
-G
-a
-m
-l
-L
-U
userdel:
-r
id:
-u
-g
-G
-n
su
-c
說明:前四個命令中,命令使用的參數(shù)意義大體一樣,只是useradd 和userdel的-r參數(shù)意義不一樣,前者表示為system,后者表示為remove,最后的su命令-c表示為command的意義。
=========
passwd:
-d
-l
-u
-i
-e
-n
-x
-w
--stdin
說明:passwd與上者三個命令有重合的參數(shù)-l,-u與usermod -L和-u大小寫不一樣,userdel的-r 與passwd中的-d表示不一樣,同為刪除,前者表示為remove,后者表示為delete.
=======
組管理類
groupadd:
-r
-g
groupmod:
-g
-n
groupdel:
無參數(shù)
說明:以上三個組管理命令 -g -r同管理用戶的命令,groupmod中的-n代表為new的意義
========
Linux系統(tǒng)特殊權(quán)限
Linux的安全上下文:
- 進程以某用戶的身份運行,進程是發(fā)起此進程用戶的代理,因此以此用戶的身份和權(quán)限完成所有操作
- 權(quán)限匹配模型:
- 判斷進程的屬主,是否為被訪問文件的屬主,如果是則應用屋主的權(quán)限,否則進入第二步;
- 判斷進程的屬主,是否屬于被訪問文件的屬組,如果是則應用屬組的權(quán)限,否則進入第三個步
- 應用Other權(quán)限
特殊權(quán)限位
一. SUID
SUID為什么需要?
默認情況下,用戶發(fā)起的進程,其運行的進程屬主是其發(fā)起者
SUID的作用
SUID模型就是為了改變上述情況的匹配模型,當用戶運行某程序時,如果此程序擁有SUID權(quán)限,那么此程序運行為進程時,進程的屬主不再是進程的發(fā)起者,而是程序文件自己的屬主。
SUID實例應用:
如用戶需要修改密碼調(diào)用passwd程序時,需要將修改好的密碼保存至/etc/shadow文件中,但如果以Linux安全上下文的模型應用,用戶根本沒有權(quán)限將新密碼保存至/etc/shadow文件中,故passwd的程序就是一個擁有SUID權(quán)限的程序。當有新用戶發(fā)起此程序時,進程的屬主不再是進程發(fā)起者,而是/etc/passwd文件的屬主,即root。
SUID權(quán)限的表示方法
-
-rws------: 如果原本的U上有x權(quán)限,設(shè)置SUID后,x位變成小寫的s -
-rwS------: 如果原本的U上沒有x權(quán)限,設(shè)置SUID后,x位變成大寫的s
SUID的設(shè)置文件
chmod u+s FILEchmod 4000 FILE
二、SGID
SGID為什么需要?
通常用戶于目錄,將多個用戶添加進一個附加組,在這個目錄下建立的文件都屬于這個附加組,附加組的成員都可以來修改屬于這個附加組的文件,有修改,刪除權(quán)限。
SGID的作用
當目錄屬主有寫權(quán)限,且有SGID權(quán)限位時,所有屬于此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不再是用戶的基本組,而是此目錄的屬組,用戶可以修改此附加組下的所有文件
SGID的應用實例
即SGID就是有效的解決了基本安全模型中,用戶自能修改自己的文件。改進成了:在要在此目錄下建立的文件,屬組都屬于目錄的屬主,只要是需要這個附加組的成員,都可以修改。類似團隊協(xié)同工作的情況下,可以以此類模型工作。
SGID權(quán)限的表示方法
-
----rws---:如果原本G上有x權(quán)限,設(shè)置SGID后,x位變成小寫的s. -
----rwS---:如果原本G上有x權(quán)限,設(shè)置SGID后,x位變成大寫的S.
SGID的設(shè)置文件
chmod g+s FILEchmod 2000 FILE
三、Sticky
sticky為什么需要?
應用于SGID這樣協(xié)同辦公的情況下, 用戶能做到修改自己、其他用戶的文件,卻也能刪除其他用戶的文件,這種情況下非常的不安全,不能保證其他用戶文件的安全存放問題。
sticky的作用
即為了解決以上情況,應用上層目錄有寫權(quán)限,屬于此目錄的組中的用戶,只能修改文件,卻不能刪除別人的文件,能刪除屬于自己的文件
Sticky的表示方法
-
-------rwt:如果原本o上有x權(quán)限,設(shè)置Sticky后,x位變成小寫的t. -
-------rwT:如果原本o上有x權(quán)限,設(shè)置Sticky后,x位變成大寫的T.
四、facl(filesystem access control list)
為什么需要facl功能?
由于Linux安全模型中,當user1所擁有的文件想讓user2來讀取、寫,只能通過如下方式實現(xiàn):
- 將user2加入user1組中,即設(shè)置user2的附加組為user1;
- 在user1的文件中,在Other權(quán)限中加入rw操作
以上操作首先需要有管理員才能操作,另外,Other中應用r或者w權(quán)限安全隱患太大,故需要facl來解決。
facal的功能
- 實現(xiàn)用戶自己管理權(quán)限;
- 對需要權(quán)限的用戶設(shè)置單獨的權(quán)限
facl應用后,權(quán)限訪問模型發(fā)生的改變
- 當用戶訪問一個文件時,系統(tǒng)會先檢查用戶的屬主是否等于文件的屬主,否則,向下應用;
- 檢查facl權(quán)限中應用的user權(quán)限位,有沒有對應用戶的授權(quán)權(quán)限,如果有則應用,否則,向下應用;
- 檢查用戶的屬組是否跟文件的屬組一致,或者檢查此用戶的附加組,有沒有添加為文件的屬組,有則應用,否則;
- 檢查facl權(quán)限中應用的group權(quán)限位,有沒有對應組的授權(quán)權(quán)限,如果有則應用,否則
- 檢查Other的權(quán)限。
facl的設(shè)置
`facl` - filesystem access control list
sysnopsis: facl [options] [u|g]:[USER|GROUP][MODE][FILE]
options:
`-m` : 設(shè)置權(quán)限
`-x` : 清除權(quán)限
應用實例
-
facl -m u:mariadb:rw ./file: 設(shè)置用戶為mariadb對當前目錄下的file有讀寫權(quán)限; -
facl -m g:mygrp:rw ./file: 設(shè)置組為mygrp對當前目錄下的file文件有讀寫權(quán)限 -
setfacl -x u:user5 dir/:清除user5對dir目錄的權(quán)限 -
setfacl -b ./file: 清除file文件的所有用戶和組的facl權(quán)限設(shè)置
facl權(quán)限的查看方法
getfacl FILE : 查看file文件的facl的權(quán)限控制
有facl權(quán)限控制機制的文件,展示格式
----------+ : 在權(quán)限位后面多出來一個+號,表示此文件有設(shè)置facl權(quán)限位
==========
轉(zhuǎn)載請注明出處