文件權限管理
文件屬性格式
文件屬性操作
chown 設置文件的所有者
chgrp 設置文件的屬組信息
修改文件的屬主:
chown [選項] [所有者][:[組]] file
命令中的冒號可用.替換;
-R :遞歸操作文件或目錄
chown [選項] –reference=RFLE FILE
-rw-r–r–. 1 root root 0 8月 3 18:17 xiaomage 這是沒更改屬主時候的文件
例如:~]# chown -R makangbo xiaomage
(命令加選項-R 將原來的屬主root 修改為makangbo屬主 后面跟文件名稱)
-rw-r–r–. 1 makangbo root 0 8月 3 18:17 xiaomage 這是更改成功的結果
修改文件的屬組
chgrp [選項] group file
chgrp [選項] –reference=RFILE FILE
-R : 遞歸操作文件或目錄
-rw-r–r–. 1 makangbo root 0 8月 3 18:17 xiaomage
(這個是上面改過屬主的, 然后組還沒改)
例如:~]# chgrp -R makangbo xiaomage
(命令選項-R makangbo組名 xiaomge文件)
-rw-r–r–. 1 makangbo xiaomage 0 8月 3 18:17 xiaomag
(這個就是更改過組的,將原來的root組更改為makangbo組)
文件權限的主要對三類對象進行定義
owner: 屬組,u
group: 屬組,g
other: 其他,o
每個文件針對每類訪問者都定義了三種權限
r: readable 可讀的
w: writable 可寫的
x: excutable 可執行的針對二進制程序或腳本
文件的權限
r:可使用文件查看類工具獲取里面內容
w:可修改文件里面的內容
x:可以把此文件提交給內核啟動為一個進程操作,對二進制程序或腳本有效
目錄的權限
r:可以查看dir內文件列表,但不能訪問文件,不能cd,也不能查看文件的元數據
w:可以在dir中創建文件,,也可以刪除此dir中的文件
x:可以使用查看類命令查看dir中的列表,可以cd進入此dir
X:只給目錄x權限,不給文件x權限 (前提是本身沒有x權限)
文件權限,示意圖
權選項 文件類型 讀 寫 執行 讀 寫 執行 讀 寫 執行
字符表示(d|l|c|s|p)(r) (w) (x) (r) (w) (x) (r) (w) (x)
數字表示 4 2 1 4 2 1 4 2 1
權限分配 ( 文件所有者 ) 文件所屬組用戶) ( 其他用戶 )
八進制數字
— 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—– (其中rw-是6 r–是4 —是0 )
755; rwxr-xr-x (其中rwx是7 r-x是5 r-x=5)
umask值,可以用來保留在創建文件權限
umask 666 文件
umask 777 目錄
dir: 777-umask 目錄的最大
file:666-umask 文件的最大 ;有奇數加1,偶數保留
非特權用戶是002
root的umask是022
umask 查看結果
umask [權限掩碼] 設定
umask -S 新建文件直接模式顯示
umask -p 輸出可被調用
全局設置 : /etc/bashrc
用戶設置:~/.bashrc
修改文件權限
chmod [選項] 八進制數字的方式 文件
-R遞歸修改權限
修改一類用戶的所有權限
u=權限 UID=什么權限
g=權限
o=權限 不是管理員的用戶=權限
ug=權限 UID和GID=權限
a=ugo
修改一類用戶某位或某些位權限
u+
u-
g+
g-
o+
o-
a+
a-
+ 增加權限
– 減去權限
特殊權限
suid
sgid
sticky
進程有屬主和屬組;文件有屬主和屬組
》任何一個可執行程序文件能不能啟動為進程,取決于發起者對程序文件是否擁有執行權限
》啟動為進程后,其進程的屬主為發起者;進程的屬組為發起者所屬的組
可執行文件上suid權限
啟動為進程之后,其進程的屬主為原文件的屬主
chmod u+s file 增加文件權限 。
相對應普通用戶的權限,s相當于繼承root的權限,進行某些操作 (只有二進制程序才有意義)
chmod u-s file 減去文件權限 。 suid設置在目錄上無意義
可執行文件上sgid權限
啟動進程之后,其進程的屬主為源程序文件的屬組
chmod g+s file 相對應組的GID 權限 (作用二進制程序)
chmod g-s file
目錄上的sgid權限
如果作用在目錄上將使該目錄中新建文件或目錄將自動繼承該目錄所屬組
通常用戶創建一個協作目錄
chmod g+ dir
chmod g- dir
sticky具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權
在目錄上設置sticky,只有文件的所有者或者root可以刪除該文件
對文件無效
chmod o-t dir
chmod o-t dir
例如 ~]# ls -ld /tmp
rwxrwxrwt. 13 root root 4096 8月 4 08:40 /tmp 加了t權限的
suid;sgid都占據屬主的執行權限位
s代表UID擁有x權限,S表帶UID沒有x權限
GID GID
t占據其他的執行權限位
不管是suid和sgid還有sticky三個都要配合x權限
設定文件特定屬性
chattr +i 不能刪除,改名,更改
chattr +a 只能增加
lsattr 顯示特定屬性
關于ACL : Access Control List 實現靈活的權限管理
除了文件的所有著,所屬組和其他人,可以對更多的用戶設置權限
ACL生效順序:所屬主,自定義ACL屬主,所屬組,自定義ACL組 ,其他用戶
setfacl -m u:xiaommage:0(rwx) file
(命令選項) (用戶名稱 )(給定權限) 文件)
setfacl -x u:xiaoamge file
(命令選項)(用戶名名稱)(文件)
getfacl file
(查看文件給定的用戶權限)
不僅可以設定用戶權限 也可以g組設定權限
setfacl -m u:xiaomage:rwx file
(命令選項 uid用戶名:權限:文件)
setfacl -m g:xiaomage:rwx file
(命令選項 gid用戶名:權限:文件)
setfacl -m d:u:xiaomage:rwx file
( 加了d選項,就是指以后在文件夾中創建的文件都帶有該權限 )
setfacl -k dir 刪除默認ACL權限
getfacl file1 | setfacl –set-file=- file2
復制file1的ACL權限給file2
]# getfacl f1 | setfacl –set-file=- f2
(命令)(file)(管道傳給命令=f1 到f2)
從file1文件中保存到file2文件中,保留了ACL權限
setfacl -b file
(命令選項清空文件內所有ACL權限)
批量加權限
vim file.txt
u:xiaomage:0
u:xiaomage:rwx
g:xiaoamge:rx
g:xiaomage:0
setfacl -M file.txt (調用文檔內容并執行)
批量刪權限
vim file2.txt
u:xiaomage:0
u:xiaomage:rwx
g:xiaoamge:0
g:xiaomage:rwx
setfacl -X file.txt(調用文檔內容并執行)
ACL文件上的group權限是mask值 自定義用戶或者組,擁有組的最大權限,而不是傳統的組權限
一旦設置ACL權限后,權限已經變成mask的權限
mask的權限相當于高壓線 其他用戶只能比他小,或者相等。
用戶或組的設置必須存在與mask權限設定的方位內才會生效
格式:setfacl -m mask::rx file
備份和恢復ACL
主要文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p參數。
但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
cp -a file dirfile
cp -p file dirfile
getfacl -R /tmp/dir1 > acl.txt
(命令加選項)(指定某個目錄路徑)(重定向到文本文檔中)
getfacl -R * > /dir1/file.txt
(在當前目錄下將所有的ACL重定向到某個目錄中并定義名稱)
setfacl -R -b /tmp/dir1
(命令加選項)-b清空目錄中的ACL
setfacl -R –set-file=cal.txt /tmp/dir1 file.txt*
(命令加選項) (命令=讀取文檔恢復ACL) (到指定的文件目錄)
原創文章,作者:小馬哥,如若轉載,請注明出處:http://www.www58058.com/28963
文章整體結構層次清晰,對命令的總結很詳細,但是少了一些具體實踐,在以后的寫作中可以加上自己的實際操作部分。