修改所屬人,所屬組 文件的 r w x 權限 修改文件的權限chmod umask
文件系統上的特殊權限 設定文件特定屬性 ACL
文件權限
1.修改所屬人,所屬組 chown
(1)change owner 修改文件的所屬人
owner.group 或 owner:group 修改文件的所屬人和所屬組
以上只有root才能修改文件的所有人
(2)chgrp : change group 或 chown :group [ .group] 修改文件的所屬組
root和文件的owner可以修改文件的所屬組(owner修改所屬組時,owner必須屬于目標組)
chown -R 遞歸
chown –reference test.sh(源文件) house(修改的文件)
2.文件的 r w x 權限
(1)文件的權限主要針對三類對象進行定義:
owner: 所屬人, u
group: 所屬組, g
other: 其他人, o
(2)權限判斷的順序(beta)
先判斷是否是文件的所有人,如果是,則執行所屬人的權限后結束,如果不是所有人,則判斷是否所屬組(可以是主組也可以是輔助組),如果是,則執行所屬組的權限后結束,如果不是則執行其他人的權限后結束。
所有人->所有組->其他人
(3)普通文件 (三種常用權限)
r: 可以讀取文件的內容
例: cat less more nano vim 執行腳本
w: 可以修改文件的內容
例: nano vim > >> tee gedit
x: 可以執行該文件 (單獨無作用)
例: 執行腳本
rwx:最大權限 666
(4)目錄文件
r: 用戶可以列出目錄下有哪些文件(不能查看文件的詳細信息)
w: 只有w無意義。
x: 用戶可以進入該目錄(如果知道文件名,且有相對應的文件權限 ,可以執行對應的操作)
rx : 用戶可以進入目錄,且可以長列出。
rw:等于只有r
wx: 能進入,能創建能刪除,不能列出。故用戶能否刪除文件與文件自身權限無關。
rwx: 最大權限 777
—:null
目錄文件只有rx :
目錄文件只有wx :
用數字表示權限
— 0 –x 1 -w- 2 -wx 3 r– 4 r-x 5 rw- 6 rwx 7
3.修改文件的權限 chmod
只有所屬人和root可以更改文件的權限
(1)字符修改 chmod u=..,g=..,o=… filename
ugo+rwx 或 a=rwx filename 給文件所有權限
a= filename 沒有任何權限
u+-…,g=-…,o=-…
chmod -R a+X dir1 遞歸給目錄加x權限;X 當普通文件本身沒有x權限時,則跳過,給目錄加上所以x權限。一般用于批量修改多個文件、目錄的權限時,自動跳過沒有執行權限的文件。
(2)數字修改 chmod n filename
chmod –reference 源文件 目的文件
4.umask 最大權限-umask=默認權限(創建文件touch,創建目錄mkdir時)
最大權限 777(目錄文件) 666(普通文件)
umask 022 (root默認) 022 (root下) (普通用戶 002 002)
默認權限 755 644
當umask中全部是偶數時,可以直接減,當umask中包含奇數時,對于目錄直接減,對于文件,在奇數所在的位減完后加一。
umask 231 設置umsk為231
例 777 rwxrwxrwx(目錄文件) 666 rw-rw-rw-(普通文件)
231 -w–wx–x 021 -w–wx–x
546 r-xr–rw- 446 r–r–rw-
umask –S 字符模式方式顯示默認權限
umask –p 輸出可被調用
全局設置: /etc/bashrc 用戶設置:~/.bashrc(永久生效)
cp時 當目標文件不存在時(相當于touch了一個新文件) 目標文件的權限=源文件-umask
當目標文件存在時,被覆蓋, 目標文件還是目標文件的權限 (目錄也一樣)
5.文件系統上的特殊權限
SUID, SGID, Sticky
(1)suid 當對一個可執行的二進制文件作用了SUID權限之后,任何擁有執行該文件權限的人,在執行的過程時都臨時擁有該文件所屬人的權限。 例:passwd -rwsr-xr-x
權限設定:chmod u+s FILE 或 chmod 4… file
SUID: 占據所屬人的執行權限位x
s: 所屬人擁有x 權限 S :所屬人沒有x
(2)sgid 當對一個可執行的二進制文件作用了SGID權限之后,任何擁有執行該文件權限的人,在執行的過程時都臨時擁有該文件所屬組的權限。
當對一個目錄作用了SGID權限之后,任何對該目錄有wx權限的用戶在該目錄下創建的文件及目錄的所有屬均為該目錄的所有組。
權限設定:chmod g+s file 或 chmod 2… file
SGID: 占據屬組的執行權限位
s: group 擁有x 權限 S :group 沒有x
(3)sticky 當對一個目錄作用了sticky之后(只限制組用戶w權限,目錄的owner不受影響),該目錄下的文件僅其所屬人,目錄所屬人(有wx權限),root才能刪除。
權限設定:chmod o+t 目錄 或 chmod 1… 目錄
Sticky: 占據other 的執行權限位,但和其他人無關
t: other 擁有x 權限 T :other 沒有x
chmod 6… file 即有suig也有sgid
3… file 即有sgid也有sticky
5… file 即有suid也有sticky
7… file all
5.設定文件特定屬性
lsattr 顯示特定屬性
chattr +i 不能刪除,改名,更改 -i解除
chattr +a 只能追加內容,不能刪除,改名,更改 -i解除
6. ACL
(1) CentOS7當中,無論是操作系統安裝時還是之后手工創建的文件系統(xfs、ext4)均會開啟ACL功能。
CentOS6及之前的版本,僅操作系統安裝時創建的文件系統才會默認開啟ACL,手工創建的文件系統,需要手工開啟ACL功能。
mount -o acl /dev/sda7 開啟ACL,重新掛載時不指定即可
tune2fs -o acl /dev/sda7 開啟ACL 取消的方式 tune2fs -o ^acl /dev/sda7
(2) 有ACL時權限判斷的順序
先判斷是否是文件的OWNER,如果是,則執行OWNER的權限后結束,如果不是OWNER,則判斷是否是ACL的USER,如果是則執行USER權限后結束,如果不是ACL的USER, 則判斷是否屬于GROUP或ACL GROUP,如果是,則取最大權限。如果不屬于任何GROUP,則執行OTHER。
owner > ACL的USER > 文件所屬組+ACL的group+所屬組屬于的組(weiguo)相加的最大權限 > other
(3) 用法:
①setfacl -m u:liubei:— f1 設置ACL USER
setfacl -m g:shuguo:rwx f1 設置ACL GROUP
setfacl -m u::rw,u::rw,g::r,o:: f1 設置多個
②setfacl -M test.sh f1 重新給f1加上原來的ACL
test.sh 內容來自getfacl f1 > test.sh,如下
# file: f1
# owner: root
# group: root
user::rw-
user:caopi:rwx
group::r–
mask::rwx
other::r–
③setfacl -x u:liubei f1 單獨去除一條ACL權限
setfacl -X aclrm.txt f1[ f2 f3 *] 可以批量刪除ACL的用戶和組
先編輯aclrm.txt 內容如下
u:liubei
g:shuguo
④setfacl -m mask :r f1 或 chmod g=r f1 一旦設置了ACL權限后,原有的文件GROUP不可再更改,使用chmod即修改ACL MASK
ACL MASK隨著新的ACL設置會被重置,重置的標準是讓該文件上的所有ACL及文件原GROUP上的權限都有效。
setfacl -Rm u:zhangfei:rwx acltest/ 遞歸設置
⑤備份和恢復ACL
主要的文件操作命令cp和mv 都支持ACL,cp 命令需要加上-p復制權限。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt 將目錄下的所有文件的ACL屬性備份到文件
setfacl -R -b /tmp/dir1 清除目錄下所有文件的ACL屬性
setfacl -R –set-file=acl.txt /tmp/dir1 通過文件還原ACL屬性的方法1
setfacl –restore acl.txt 通過文件還原ACL屬性的方法2
⑥setfacl -m d:u:caocao:rwx d1 設置ACL默認權限 ,僅影響新創建的文件及目錄,不影響當前。
setfacl -m g:caopi:rwx d1
setfacl -x d:caocao d11 刪除一條默認權限
setfacl -k d1 刪除全部默認權限
setfacl -b f1 去除該文件上ACL屬性。
有 什 么 錯 誤 請 大 家 指 教!
原創文章,作者:along,如若轉載,請注明出處:http://www.www58058.com/82761