Linux基礎(chǔ)教程之Linux權(quán)限管理
Linux文件權(quán)限
文件的屬性和權(quán)限的設(shè)置對(duì)于Linux系統(tǒng)來(lái)說(shuō)是相當(dāng)重要的,如果對(duì)這一塊的知識(shí)沒(méi)有一個(gè)深入的了解,你的系統(tǒng)就有可能有很大的危險(xiǎn)。那么首先我們來(lái)看一看文件的屬性所對(duì)應(yīng)的都是什么意思吧。
上圖第一個(gè)字符是d,他代表了文件的類(lèi)型,d的意思就是目錄文件,那么除了目錄文件還有什么文件呢?
d:目錄 -:文件 l:鏈接文件 b:可以存儲(chǔ)的接口設(shè)備?c:串行端口設(shè)備(鍵盤(pán),鼠標(biāo))
接下來(lái)的九個(gè)字符以三個(gè)為一組分別是
rwx:屬主的權(quán)限。 r-x:屬組的權(quán)限。 r-x:其他人的權(quán)限。
r(read):可讀取 w(write):可寫(xiě)入 x(execute):可執(zhí)行
所以上面這個(gè)文件的屬主是root。他對(duì)文件可讀取可寫(xiě)入可執(zhí)行。文件的屬組是root,root組內(nèi)成員可讀取可執(zhí)行,除了屬主屬組之外的其他人對(duì)該文件可讀取可執(zhí)行。
更改屬主屬組權(quán)限命令
chown:改變文件所屬的用戶組。
chgrp:改變文件的所有者。
chmod:改變文件的權(quán)限。
修改文件的屬主:chown
chown [OPTION]… [OWNER][:[GROUP]] FILE…
用法: OWNER
OWNER:GROUP
:GROUP 命令中的冒號(hào)可用.替換;
-R: 遞歸
chown [OPTION]… –reference=RFILE FILE…
修改文件的屬組:chgrp
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
-R 遞歸
修改文件的權(quán)限:chmod
文件權(quán)限的改變可以使用chmod這個(gè)命令,但是權(quán)限的設(shè)置方法有兩種,分別可以使用數(shù)字或者是符號(hào)來(lái)進(jìn)行更改。
命令使用格式
chmod [OPTION]… OCTAL-MODE FILE…
-R: 遞歸修改權(quán)限
chmod [OPTION]… MODE[,MODE]… FILE… MODE:
chmod [OPTION]… –reference=RFILE FILE… 參考RFILE文件的權(quán)限,將FILE的修改為同RFILE;
數(shù)字改變文件權(quán)限
Linux系統(tǒng)的基本權(quán)限有9個(gè),每三個(gè)一組,每一組分別對(duì)應(yīng)了owner、group、others三種身份。我們可以使用數(shù)字來(lái)代表各個(gè)權(quán)限分別是
r:4 w:2 x:1
當(dāng)要設(shè)置xx文件權(quán)限為[-rwxr-xr-x]
owner=rwx=4+2+1=7
group=r-x=4+1=5
others=r-x=4+1=5
所以在設(shè)置權(quán)限時(shí),該文件權(quán)限的設(shè)置數(shù)字就是755.執(zhí)行chmod 755 xx就可以了。
符號(hào)改變文件權(quán)限
三種身份用user=u;group=g;others=o來(lái)表示,讀寫(xiě)執(zhí)行權(quán)限用rwx來(lái)表示
當(dāng)xx文件權(quán)限為[-rwxr-xr-x]我們要給它加入所有權(quán)限時(shí)執(zhí)行
1、chmod a=rwx
2、chmod g=rwx,u=rwx,a=rwx
3、chmod g+w,o+w
目錄/文件的權(quán)限意義
權(quán)限對(duì)文件的意義
r(read):可讀取此文件的內(nèi)容,比如讀取文本文件里的內(nèi)容。
w(write):可以編輯、新增或者是修改該文件的內(nèi)容。
x(execute):該文件可以被系統(tǒng)執(zhí)行。
權(quán)限對(duì)目錄的重要性
r:表示具有讀取目錄結(jié)構(gòu)列表的權(quán)限??梢圆樵?cè)撃夸浗Y(jié)構(gòu)下的文件列表。
w:表示你具有更改該目錄結(jié)構(gòu)列表的權(quán)限
如:新建新的文件與目錄。
刪除已存在的文件與目錄(不管該文件的權(quán)限如何)。
將已存在的文件或目錄進(jìn)行重命名。
轉(zhuǎn)移該目錄內(nèi)的文件、目錄位置。
x:代表的是用戶能否進(jìn)入該目錄成為工作目錄。
新建文件和目錄的默認(rèn)權(quán)限
umask值 可以用來(lái)保留在創(chuàng)建文件權(quán)限
新建FILE權(quán)限: 666-umask 如果所得結(jié)果某位存在執(zhí)行(奇數(shù))權(quán)限,則將其權(quán)限+1
新建DIR權(quán)限: 777-umask
非特權(quán)用戶umask是 002 root的umask 是 022
umask: 查看
umask #: 設(shè)定
umask 002
umask –S 模式方式顯示
umask –p 輸出可被調(diào)用
全局設(shè)置: /etc/bashrc 用戶設(shè)置:~/.bashrc
這里加入我們新建一個(gè)文件默認(rèn)讓它沒(méi)有權(quán)限,根據(jù)規(guī)則,命令為:
umask 777
666-777=-1-1-1
每一項(xiàng)加1得000
Linux系統(tǒng)中三種特殊權(quán)限
SUID, ?表現(xiàn)為s ?數(shù)字為4(作用在二進(jìn)制程序)
SGID, ?表現(xiàn)為s ?數(shù)字為2(作用在二進(jìn)制程序)
Sticky 表現(xiàn)為t ? 數(shù)字為1(作用在目錄上)
安全上下文
SUID
前提:進(jìn)程有屬主和屬組;文件有屬主和屬組
(1) 任何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程:取決發(fā)起者 對(duì)程序文件是否擁有執(zhí)行權(quán)限
(2) 啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為發(fā)起者;進(jìn)程的屬組為 發(fā)起者所屬的組
(3) 進(jìn)程訪問(wèn)文件時(shí)的權(quán)限,取決于進(jìn)程的發(fā)起者
(a) 進(jìn)程的發(fā)起者,同文件的屬主:則應(yīng)用文件屬主權(quán)限
(b) 進(jìn)程的發(fā)起者,屬于文件屬組;則應(yīng)用文件屬組權(quán)限
(c) 應(yīng)用文件“其它”權(quán)限
SGID
任何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程:取決發(fā)起者對(duì) 程序文件是否擁有執(zhí)行權(quán)限
啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為原程序文件的屬主
SUID只對(duì)二進(jìn)制可執(zhí)行程序有效
SUID設(shè)置在目錄上無(wú)意義
當(dāng)一個(gè)目錄有S權(quán)限時(shí)在該目錄下創(chuàng)建的所有新文件子目錄文件自動(dòng)繼承該目錄的屬組
Sticky(粘滯位:可以讓其他人不能刪除文件。)
具有寫(xiě)權(quán)限的目錄通常用戶可以刪除該目錄中的任何 文件,無(wú)論該文件的權(quán)限或擁有權(quán)
在目錄設(shè)置Sticky 位,只有文件的所有者或root可 以刪除該文件
sticky 設(shè)置在文件上無(wú)意義
權(quán)限設(shè)定: chmod o+t DIR… chmod o-t DIR…
例如:
ls -ld /tmp drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp
注意:對(duì)文件夾來(lái)說(shuō)其他權(quán)限必須配合x(chóng)權(quán)限。
設(shè)定文件的特殊屬性
chattr +i 不能刪除,改名,更改
chattr +a 只能增加\讀取。
chattr +A 鎖定文件訪問(wèn)時(shí)將。
lsattr 顯示特定屬性
訪問(wèn)控制列表(ACL:Access Control List)
ACL:Access Control List,實(shí)現(xiàn)靈活的權(quán)限管理
除了文件的所有者,所屬組和其它人,可以對(duì)更多的用戶設(shè) 置權(quán)限
CentOS7.0默認(rèn)創(chuàng)建的xfs和ext4文件系統(tǒng)有ACL功能。
CentOS7.X之前版本,默認(rèn)手工創(chuàng)建的ext4文件系統(tǒng)無(wú)ACL 功能。需手動(dòng)增加: tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1 /mnt
ACL生效順序:所有者,自定義用戶,自定義組,其他人
FAT分區(qū)不支持權(quán)限。
有關(guān)acl的命令例
為多用戶或者組的文件和目錄賦予訪問(wèn)權(quán)限r(nóng)wx
mount -o acl /directory
getfacl file |directory ?查看目錄的具體acl權(quán)限
setfacl -m u:user:rwx file|directory
setfacl -Rm g:user:rwX directory ?對(duì)于
setfacl -M file.acl file|directory ?讀取文件內(nèi)容設(shè)置目標(biāo)目錄權(quán)限
setfacl -m g:user:rw file| directory
setfacl -m d:u:user:rx directory
setfacl -m m::r directory ?更改所有目錄的有效權(quán)限
setfacl -x u:user file |directory ?刪除用戶權(quán)限
setfacl -X file.acl directory 讀取文件內(nèi)容刪除目標(biāo)目錄權(quán)限
setfacl -b directory 徹底清空文件acl權(quán)限
添加acl時(shí)目錄所屬組的權(quán)限更新為mask權(quán)限。但是mask權(quán)限只影響添加進(jìn)acl的用戶權(quán)限與用戶組的權(quán)限
acl訪問(wèn)控制列表
ACL文件上的group權(quán)限是mask 值(自定義用戶,自定義組 ,擁有組的最大權(quán)限),而非傳統(tǒng)的組權(quán)限
getfacl 可看到特殊權(quán)限:flags
默認(rèn)ACL權(quán)限給了x,文件也不會(huì)繼承x權(quán)限。
base ACL 不能刪除
setfacl -k dir 刪除默認(rèn)ACL權(quán)限
setfacl -b file1清除所有ACL權(quán)限
getfacl file1 | setfacl –set-file=- file2 復(fù)制file1 的acl權(quán)限給file2
mask只影響除所有者和other的之外的人和組的最大權(quán)限 Mask需要與用戶的權(quán)限進(jìn)行邏輯與運(yùn)算后,才能變成有限的權(quán)限 (Effective Permission) 用戶或組的設(shè)置必須存在于mask權(quán)限設(shè)定范圍內(nèi)才會(huì)生效。 setfacl -m mask::rx file
–set選項(xiàng)會(huì)把原有的ACL項(xiàng)都刪除,用新的替代,需要注意的 是一定要包含UGO的設(shè)置,不能象-m一樣只是添加ACL就可以. 如:
setfacl –set u::rw,u:wang:rw,g::r,o::- file1
備份和恢復(fù)ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 參數(shù)。但是tar等常見(jiàn)的備份工具是不會(huì)保留目錄 和文件的ACL信息
#getfacl -R /tmp/dir1 > acl.txt
#setfacl -R -b /tmp/dir1
#setfacl -R –set-file=acl.txt /tmp/dir1
#getfacl -R /tmp/dir1