主要內容:
useradd與usermod對比
groupadd與groupmod對比
passwd與chage對比
gpasswd與groupmems對比
切換用戶
chown與chgrp用法
一般權限與特殊權限
chmod用法
useradd創建用戶的初始信息存放在/etc/login.defs和/etc//default/useradd文件中。
/etc/login.defs: 設置mail_dir目錄、mail_file、密碼最短時效,最長時效,警告時間,最小的UID,最大的UID。最大的GID以及最小的GID,是否創建家目錄,umask。
/etc/default/useradd: 默認shell,家目錄,skel目錄,是否創建郵件目錄。
注:家目錄從/etc/skel/文件中復制文件。
4個配置文件:
/etc/passwd 用戶信息 用戶名:密碼:用戶id:組id:注釋:家目錄:bash
當用戶有附加組時,是否會顯示?不會顯示,會顯示在/etc/group中
/etc/group 組信息 組名:組id:密碼:以該組為附加組的用戶
/etc/shadow 用戶名:密碼:最近一次修改時間:最小使用時間:最大使用時間:警告時間
/etc/gshadow 組名:密碼:管理員賬戶:以該組為附加組的用戶名。
newusers passwd格式的文件:批量創建用戶
chpasswd 批量修改用戶密碼
useradd用法與usermod用法對比
useradd用法 |
usermod用法 |
||
-u UID |
指定新建用戶的UID |
-u UID |
修改新UID |
-g GID |
指定新建用戶的GID,必須存在 |
-g GID |
修改新GID |
-d HOME_DIR |
指定家目錄 |
-d HOME |
修改家目錄,-m搬過來 |
-s SHELL |
指定shell |
-s SHELLS |
修改shell |
-G grp1,grp2 |
添加附加組 |
-l login_name |
新的名字 |
-N |
不創建私用組做主組 |
-L |
鎖定指定用戶,密碼欄增加! |
-r |
創建系統用戶 |
-U |
-U解鎖用戶,密碼欄減少! |
-o |
解除uid唯一性限制 |
-e |
指明用戶賬戶過期日期 |
-c ‘comment’ |
注釋 |
-f |
設定非活動期限 |
useradd -N user:創建一個用戶user,不創建私用組作為主組,而使用users組作為主組。
userdel [option] …login:刪除指定用戶
-r刪除指定用戶,包括家目錄。
id [option]… user
-u:UID 查看用戶的UID
-g:GID 查看用戶的GID
-G:Groups 查看用戶的組
-n:Name 查看用戶的名字
su [options] [-] [user]
切換用戶方式:
su username:非登錄式切換,不會讀取用戶的配置文件,不改變當前的工作目錄。
su – username:登錄式切換,會讀取用戶的配置文件,切換至家目錄,完全切換。
使用另一個用戶執行命令:
su – UserName -c ‘COMMAND’
passwd和chage用法對比
passwd用法 |
chage用法 |
||
-l |
鎖定指定用戶 |
-l |
顯示密碼策略 |
-u |
解鎖指定用戶 |
-d |
last_day |
-e |
強制用戶下次修改密碼 |
-E |
過期時間 |
-n |
密碼最短使用期限 |
-m |
密碼最小使用期限 |
-x |
密碼最大使用期限 |
-M |
密碼最大使用期限 |
-w |
提前多少天開始警告 |
-W |
提前多少天開始警告 |
-i |
非活動期限 |
-I |
非活動期限 |
–stdin |
從標準輸入接收密碼 |
chage -d 0 test1:下次登錄強制重設密碼。
groupadd:
groupadd -g GID :創建組時指明GID
-r:創建系統組
groupmod:
-n group_name:新名字
-g GID:新的GID
組刪除:
groupdel group:當有組中有用戶時,無法進行刪除。
gpasswd和groupmems用法對比
gpasswd用法 |
groupmems用法 |
||
-a user group |
將user添加到指定組中 |
-a user |
指定用戶加入組中 |
-d user group |
從指定組中移除user |
-d user |
從組中刪除指定用戶 |
-A user1,user2 |
設置有管理權限的user |
-p |
從組中清空用戶 |
-l |
顯示組成員列表 |
newgrp:臨時切換組。
groups username:查看用戶屬組信息。
文件權限:
chown:設置文件的所有者
chown [option]…[owner][:group] file:
chown user file修改屬組
chown user : group file 也可以同時修改屬組
chown :group file 也可以單獨修改屬組
-R 遞歸
chown –reference=RFILE FILE…. 修改為與文件同樣的權限。
chgrp:設置文件的屬組信息。
chgrp [option] …group file:修改文件屬組。
chgrp [option]…–reference=RFILE FILE..
-R 遞歸
文件的權限主要針對三類對象進行定義: owner: 屬主, u group: 屬組, g other: 其他, 每個文件針對每類訪問者都定義了三種權限: r: Readable w: Writable x: eXcutable
文件:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啟動為一個進程 ?
目錄:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄
X:只給目錄x權限,不給文件x權限
chmod用法:
chmod [options] 八進制數字(3位)file
-R:遞歸修改權限。
chmod [options] 字母模式 file
修改一類用戶所有權限。
u=,g=,o= ,a=
u+,u_,g+,o+,o-,a+,a-
chmod [options] –reference=RFILE FILE
新建文件和目錄的默認權限:
umask:設置用戶創建文件的默認權限。
新建FILE默認權限:666-umask
如果所得結果某位為奇數(存在執行位),權限加1
新建DIR權限:777-umask
非特權用戶umask為002
root的umask為022
umask:查看umask值
umask 3位數字:設定umask的值
umask -S模式方式顯示umask
umask -p輸出可被調用
全局設置:/etc/bashrc 用戶設置:~/.bashrc
Linux文件系統上的特殊權限
三種常用權限:r, w, x user, group, other
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者 對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為 發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a)進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
任何一個可執行程序文件能不能啟動為進程:取決發起者對 程序文件是否擁有執行權限啟動為進程之后,其進程的屬主為原程序文件的屬主。
SUID權限:
任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限。
啟動為進程之后,其進程的屬主為原程序文件的屬主(比如其它用戶執行cat之后,這個進程的屬主就變成了root)
SUID只對二進制可執行程序有效,SUID設置在目錄上無意義
權限設定: chmod u+s FILE… chmod u-s FILE…
可執行文件上SGID權限
任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限。
啟動為進程之后,其進程的屬主為原程序文件的屬組。
權限設定: chmod g+s FILE… chmod g-s FILE…
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此 目錄中創建的文件所屬的組為此目錄的屬組。
通常用于創建一個協作目錄
權限設定: chmod g+s DIR… chmod g-s DIR…
Sticky位:
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權,在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件。
sticky 設置在文件上無意義
權限設定: chmod o+t DIR… chmod o-t DIR…
4表示SUID, 2表示SGID,1表示Sticky。
權限位映射
SUID: user,占據屬主的執行權限位 s: 屬主擁有x權限 S:屬主沒有x權限 4
SGID: group,占據屬組的執行權限位 s: group擁有x權限 S:group沒有x權限 2
Sticky: other,占據other的執行權限位 t: other擁有x權限 T:other沒有x權限 1
chattr +i 不能刪除,改名,更改
chattr +a 只能增加
lsattr 顯示特定屬性
setfacl命令:
-b,–remove-all:刪除所有擴展的acl規則,基本的acl規則(所有者,群組,其他)將被保留。
-k,–remove-default:刪除缺省的acl規則。如果沒有缺省規則,將不提示。
-n,–no-mask:不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。
–mask:重新計算有效權限,即使ACL mask被明確指定。
-d,–default:設定默認的acl規則。
–restore=file:從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。通過這種機制可以恢復整個目錄樹的acl規則。此參數不能和除–test以外的任何參數一同執行。
–test:測試模式,不會改變任何文件的acl規則,操作后的acl規格將被列出。
-R,–recursive:遞歸的對所有文件及目錄進行操作。
-L,–logical:跟蹤符號鏈接,默認情況下只跟蹤符號鏈接文件,跳過符號鏈接目錄
-P,–physical:跳過所有符號鏈接,包括符號鏈接文件。
–version:輸出setfacl的版本號并退出。
–help:輸出幫助信息。
選項-m和-x后邊跟以acl規則。多條acl規則以逗號(,)隔開。選項-M和-X用來從文件或標準輸入讀取acl規則。
選項–set和–set-file用來設置文件或目錄的acl規則,先前的設定將被覆蓋。
選項-m(–modify)和-M(–modify-file)選項修改文件或目錄的acl規則。
選項-x(–remove)和-X(–remove-file)選項刪除acl規則。
ACL組成部分:
Entry tag type:(標簽入口類型)
ACL_USER_OBJ:相當于Linux里file_owner的permission
ACL_USER:定義了額外的用戶可以對此文件擁有的permission
ACL_GROUP_OBJ:相當于Linux里group的permission
ACL_GROUP:定義了額外的組可以對此文件擁有的permission
ACL_MASK:定義了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大權限
ACL_OTHER:相當于Linux里other的permission
一開始文件沒有ACL的額外屬性:
[root@localhost ~]# ls -l -rw-rw-r– 1 root admin 0 Jul 3 22:06 test.txt [root@localhost ~]# getfacl –omit-header ./test.txt
user::rw-
group::rw-
other::r–
設置格式:setfacl -m user:john:rw- ./test.txt
查看格式: getfacl –omit-header ./test.txt
我們先讓用戶john擁有對test.txt文件的讀寫權限:
[root@localhost ~]# setfacl -m user:john:rw- ./test.txt
[root@localhost ~]# getfacl –omit-header ./test.txt
user::rw-
user:john:rw-
group::rw-
mask::rw-
other::r–
這時我們就可以看到john用戶在ACL里面已經擁有了對文件的讀寫權。
這個時候如果我們查看一下linux的permission我們還會發現一個不一樣的地方。 [root@localhost ~]# ls -l ./test.txt -rw-rw-r–+ 1 root admin 0 Jul 3 22:06 ./test.txt
在文件permission的最后多了一個+號,當任何一個文件擁有了ACL_USER或者ACL_GROUP的值以后我們就可以稱它為ACL文件,這個+號就是用來提示我們的。
我們還可以發現當一個文件擁有了ACL_USER或者ACL_GROUP的值時ACL_MASK同時也會被定義。 接下來我們來設置dev組擁有read permission:
[root@localhost ~]# setfacl -m group:dev:r– ./test.txt
[root@localhost ~]# getfacl –omit-header ./test.txt
user::rw-
user:john:rw-
group::rw-
group:dev:r–
mask::rw-
other::r–
注意:在Linux file permission里面大家都知道比如對于rw-rw-r–來說, 當中的那個rw-是指文件組的permission. 但是在ACL里面這種情況只是在ACL_MASK不存在的情況下成立。如果文件有ACL_MASK值,那么當中那個rw-代表的就是mask值而不再是group permission了。
Default ACL:針對目錄的。Access ACL針對文件。
設置格式:setfacl -d -m user:john:rw ./dir
注意:刪除acl用setfacl -x不能刪除+,應該使用chfacl才能徹底刪除。
原創文章,作者:liuzhuo,如若轉載,請注明出處:http://www.www58058.com/30526