本篇博客是對文件權限的簡單介紹,將會簡述下權限的數字表現形式,還有字母表現形式,還有一些特殊的suid、sgid、sticky的權限介紹,還有對ACL權限的簡述。
一、權限的定義
關于權限,百度百科的解釋如下:權限(privilege)是指某個特定的用戶具有特定的系統資源使用權力,像是文件夾,特定系統指令的使用或存儲量的限制。通常,系統管理員,或者在網絡中的網絡管理員,對某個特定資源的使用分配給用戶不同的權限,系統軟件則自動地強制執行這些權限。所以,對于文件,也同樣有讀寫執行的權限,只有擁有了這些權限,才能進行操作,否則,也是無權進行操作的。
二、權限的數字字母表現形式
1.chown chgrp命令
要先介紹下chown和chgrp命令,一個是設置文件所有者,一個是設置文件的屬組信息。
chown owner.(:)group file 可以用此命令設置文件file的所有人file及所在組group的信息
chown -R owner.(:)group file 指可以進行目錄的遞歸操作
以上只有root才能修改文件的所有人,且owner必須屬于group
charp group file 設置file的所屬組group
charp -R group file 可以進行遞歸操作
2.文件的讀、寫、執行權限
文件讀權限 r:十進制100 二進制4 cat、less、more、nano、vim、執行腳本需要讀權限
文件寫權限 w:十進制010 二進制2 nano、vim、>、>>、tee、gedit需要寫權限
文件執行權限 x:十進制001 二進制1 執行腳本需要執行權限
r w x組合的意義:
r: 用戶可以列出目錄下有哪些文件(不能查看文件的詳細信息)
w: 只有w無意義。
x: 用戶可以進入該目錄(如果知道文件名,且有相對應的文件權限 ,可以執行對應的操作)
rx: 用戶可以進入目錄,且可以長列出。
rw:等于只有r
wx: 能進入,能創建能刪除,不能列出。故用戶能否刪除文件與文件自身權限無關。
rwx: 全部權限。
—:null
chmod 權限的修改命令
u代表user g代表group o代表other
①chmod ugo+rwx
可以直接在u g o上直接加權限(文件加執行權限是很危險的,可以用chmod ugo+X只給目錄加執行權限)
②chmod u=…,g=…,o=…
直接修改u g o的權限
③chmod 777
直接用數字來修改file權限r=4 w=2 o=1,用rwx的組合
umask
文件權限最大666 目錄權限最大是777
umask root用戶=002 普通用戶=022
權限值=權限最大值-umask(當umask中包含奇數時,對于目錄直接減,對于文件,在奇數所在的位減完后加一。)
3.文件的suid、sgid、sticky權限
suid權限是一種特殊的權限,舉個簡單的例子,用戶的密碼存在于/etc/passwd目錄中,但是該文件的權限是r——–,即400,只有文件所有人和root用戶才能修改密碼,但是普通用戶怎么修改自己的密碼呢?所以引入了suid權限,即普通用戶可以以文件所有者的身份對文件進行修改,用ll命令長列出文件信息時,會發現在user的執行權限位上是s,這個就是suid權限。
sgid和suid同理,只是一個是以所有人身份運行,一個以所有組身份運行。
Sticky屬性只能應用在目錄,當目錄擁有Sticky屬性所有在該目錄中的文件或子目錄無論是什么權限只有文件或子目錄所有者和root用戶能刪除。比如當用戶test在“/app”目錄中建立一個文件并將該文件權限配置為777,當/charles目錄擁有Sticky屬性時,只有root和test用戶可以將該文件刪除。在使用ll命令瀏覽目錄時,如果其他用戶權限的第三位是一個小寫的“t”就表明該執行文件或目錄擁有Sticky屬性。
配置普通權限時可以使用字符或數字,SUID、SGID、Sticky也是一樣。使用字符時s表示SUID和SGID、t表示Sticky;4表示SUID、2表示SGID、1表示Sticky。在配置這些屬性時還是使用chmod命令,數字和字母都可以用。
例如:chmod 7777 file chmod u+s file
三、ACL權限
1.ACL權限的簡單定義
傳統的權限僅有三種身份(owner,group,others)搭配三種權限(r,w,x)以及三種特殊的權限(SUID,SGID,SBIT),隨著應用的發展,這些權限組合已不能適應現在復雜的文件系統權限控制要求,所以引入了ACL(Access Control Lists)權限。舉個簡單的例子:目錄data的權限為:rwxr-x—,所有者與所屬組均為root,在不改變所有者和所屬組的前提下,要求用戶mage對該目錄有完全訪問權限(rwx),但又不能讓其他有用完全權限(rwx)。這個要求看似不能實現,這就看出來傳統的權限管理設置有時候也會力不從心。這時候,我們就可能通過ACL來實現。ACL可以針對單個用戶,單個文件或目錄來進行r,w,x的權限設定,特別適用于需要特殊權限的使用情況。但是ACL權限只支持linux:ext2 ext3 ext4 xfs vfat ntfs的文件系統。
2.如何查看ACL權限是否開啟
CentOS7當中,無論是操作系統安裝時還是之后手工創建的文件系統(xfs、ext4)均會開啟ACL功能。
CentOS6及之前的版本,僅操作系統安裝時創建的文件系統才會默認開啟ACL,手工創建的文件系統,需要手工開啟ACL功能。
mount -o acl /dev/sda7 取消的方式,重新掛載時不指定即可
mount -o remount,acl /dev/sda7
以上兩種方式開啟的ACL可以通過mount |grep sdaX查看
創建: tune2fs -o acl /dev/sda7
取消: tune2fs -o ^acl /dev/sda7
使用以上方式開啟的ACL可以通過tune2fs -l /dev/sda7 |grep option查看
3.關于ACL權限命令
setfacl -m u:liubei:rwx f1 設置ACL user
setfacl -m g:shuguo:rwx f1 設置ACL group
setfacl -M acl.txt f1
acl.txt 內容來自getfacl f1 > acl.txt(把ACL權限導入文件acl.txt),文件如下
# file: fstab
# owner: root
# group: root
user::rw-
user:zhangfei:rwx
group::r–
mask::rwx
other::r–
setfacl -Rm u:zhangfei:rwx acltest/ 遞歸設置user權限
setfacl -m mask:rwx f1
或 chmod g=rwx f1 一旦設置了ACL權限后,原有的文件group不可再更改,使用chmod即修改ACL mask
ACL mask隨著新的ACL設置會被重置,重置的標準是讓該文件上的所有ACL及文件原group上的權限都有效。
setfacl -x u:liubei f1 單獨去除一條ACL權限
setfacl -X aclrm.txt f1[ f2 f3 *]
aclrm.txt 內容如下
u:liubei
g:shuguo
setfacl -x d:sunquan d11 刪除一條默認權限
setfacl -k d1 刪除全部默認權限
setfacl -b d1 刪除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
以上便是本篇博客的全部內容,如有什么問題還請各位大牛幫忙提出,謝謝!
原創文章,作者:Mr.DONG,如若轉載,請注明出處:http://www.www58058.com/82987