CentOS文件权限管理
CentOS文件權(quán)限管理
目錄
????文件屬性
????????chown更改所有者
????????chgrp更改所屬組
????文件權(quán)限rwx
????????chmod修改權(quán)限
????????默認(rèn)權(quán)限umask
????????權(quán)限判定的順序
????特殊權(quán)限SUID,SGID,sticky
????隱藏權(quán)限chattr,lstattr
????ACL
?
在說權(quán)限之前,我們應(yīng)該簡(jiǎn)單的了解文件的屬性,和如何更改文件屬性:
通過我們上面的圖片我們可以看出來文件的一些基本屬性,有權(quán)限,鏈接數(shù),所有者和所屬組,文件大小,修改時(shí)間,文件名等,我們先來介紹兩個(gè)用來更改所有者和所屬組的命令,然后對(duì)權(quán)限的管理展開討論。
修改文件所有者
?? ??命令:chown
?? ??格式:chown?[option] newuser filename
??? ?選項(xiàng):
??? ????-R?遞歸更改
???? ???--reference source target?參照source修改target
對(duì)于chown來說,既可以更改所有者其實(shí)也可以更改所屬組,我們可以利用chown user:group filename直接更改所有者和所屬組,或者chown :group filename來更改所屬組,只不過,前者只能由root來完成,后者可以是普通用戶,但是用戶必須是文件的所有者,并且還要是已經(jīng)加入了目標(biāo)組才可以。我們做一個(gè)簡(jiǎn)單的演示:
?
接下來是chgrp用來修改所屬組的,這個(gè)命令是所有用戶都可以使用的,但是,用戶必須是文件的所有者,并且屬于目標(biāo)組才可以,否者不能更改,基本和上圖一樣,不在做演示。
修改所屬組
????命令:chgrp
? ???格式:chgrp?[option] group filename
? ???選項(xiàng):
?? ?????-R?遞歸更改
?????????? ??--reference source target?參照source修改target
接下來才是最重要的,權(quán)限!我們知道每個(gè)文件都有所有者,所屬組和其他人,而每一位都是有對(duì)應(yīng)的權(quán)限的,這樣的設(shè)計(jì)目的試問了保證隱私和文件的安全,所有者對(duì)應(yīng)的是u,所屬組對(duì)應(yīng)的是g,其他人對(duì)應(yīng)的是o,而每個(gè)文件針對(duì)每一類訪問者都有三種基本權(quán)限:r:Readable;w:Writable;x:eXcutable,我們通過對(duì)三類訪問者設(shè)定不同的rwx值就可以控制訪問者對(duì)文件的權(quán)限。
????無論是對(duì)于文件還是目錄,都是有rwx權(quán)限,但是,目錄的rwx權(quán)限卻和文件的rwx權(quán)限是不一樣的,此外對(duì)于目錄的設(shè)置還有一個(gè)X權(quán)限,我們會(huì)在后面說到。我們先說一下,rwx權(quán)限所對(duì)應(yīng)的數(shù)字意義:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x?101 5
rw-?110 6
rwx?111 7
在一般情況下,我們會(huì)選擇使用數(shù)字來更改權(quán)限,例如742 = -rwxr--w-;621 = -rw--w---x
有權(quán)限,自然可以修改權(quán)限,下面我們來說一個(gè)更改文件權(quán)限的命令chmod。
修改文件權(quán)限
? ???命令:chmod
??? ?格式:chmod?[option] mode[,mode] filename
??? ?格式:
??? ????mode:修改一類權(quán)限
???? ?????? ?u= g= o= ug= uo= go= ugo=
???? ???mode:修改一些用戶的某個(gè)權(quán)限
???? ? ? ? ?u+ u- g+ g- o+ o-
?????? ?--reference source target參照source修改target
-R遞歸修改權(quán)限
我們可以通過上面的方式對(duì)文件權(quán)限進(jìn)行修改,為了方便,我們也可以通過使用數(shù)字來對(duì)權(quán)限進(jìn)行修改,比如:chmod 744 test1.txt。
我們剛才說,還有一個(gè)針對(duì)于目錄的大X權(quán)限,這是啥嘞,這是由于我們我們會(huì)修改目錄權(quán)限至少為x,但是,我們?nèi)绻M(jìn)行遞歸修改的話,會(huì)把文件也設(shè)置成x權(quán)限,由于x對(duì)于文件來說是可執(zhí)行權(quán)限,很不安全,所以我們?cè)谶f歸修改目錄權(quán)限時(shí),可以使用X權(quán)限,這樣就不會(huì)將目錄下面的文件加上x權(quán)限了,可是如果我們目錄下的某一個(gè)文件無論所有者所屬組還是其他人只有有一個(gè)用于x權(quán)限,使用X修改目錄權(quán)限時(shí)依然會(huì)將此文件所有者所屬組和其他人都加上x權(quán)限。但是一般情況下我們可以不用X權(quán)限的,因?yàn)榻o目錄的默認(rèn)權(quán)限是有x權(quán)限的,什么是默認(rèn)權(quán)限,我們?cè)谙旅鎭碇v。
我們無論是新建文件還是目錄,當(dāng)我們建好后都會(huì)有一些默認(rèn)的權(quán)限,(root的默認(rèn)權(quán)限和普通用戶的不同),這些默認(rèn)權(quán)限是哪里來的呢,為什么要這樣設(shè)定默認(rèn)權(quán)限?首先我們先說哪里來的,我們可以使用umask查看當(dāng)前用戶的默認(rèn)權(quán)限,如果你是一般用戶,你會(huì)發(fā)現(xiàn)默認(rèn)權(quán)限是0002 root用戶是0022,后三位是普通權(quán)限位,第一位是特殊權(quán)限位,我們先來說普通權(quán)限位。當(dāng)umask中全部是偶數(shù)時(shí),可以直接減,當(dāng)umask中包含奇數(shù)時(shí),對(duì)于目錄直接減,對(duì)于文件,在奇數(shù)所在的位減完后加一。默認(rèn)全局配置文件在/etc/bashrc中:(個(gè)人配置在~/.bashrc)
?
這時(shí)候我們會(huì)感覺很奇怪,為啥呢,以root用戶來說,我們默認(rèn)的權(quán)限是022,但是我們的創(chuàng)建的目錄權(quán)限是755:rwxr-xr-x,這是為啥嘞,我們先說一下,文件的最高權(quán)限是666,即:rw-rw-rw-,目錄的最高權(quán)限是777即:rwxrwxrwx,當(dāng)我們用777-755?我們發(fā)現(xiàn)正好是022,正好是默認(rèn)權(quán)限,默認(rèn)權(quán)限正是最高權(quán)限-實(shí)際權(quán)限的。
接下來,我們來說作用于目錄和文件的權(quán)限都有什么作用:
普通文件
r:?可以讀取文件的內(nèi)容
????? ???cat less more nano vim?執(zhí)行腳本
w:?可以修改文件的內(nèi)容
?????? ??nano?vim > >> tee gedit
x:?可以執(zhí)行該文件
????? ???執(zhí)行腳本
?
目錄文件
r:?用戶可以列出目錄下有哪些文件(不能查看文件的詳細(xì)信息)
w:?只有w無意義。
x:?用戶可以進(jìn)入該目錄(如果知道文件名,且有相對(duì)應(yīng)的文件權(quán)限 ,可以執(zhí)行對(duì)應(yīng)的操作)
rx:?用戶可以進(jìn)入目錄,且可以長(zhǎng)列出。
rw:等于只有r
wx:?能進(jìn)入,能創(chuàng)建能刪除,不能列出。故用戶能否刪除文件與文件自身權(quán)限無關(guān)。
rwx:?全部權(quán)限。
---:null
我們可以看出,文件和目錄的權(quán)限的作用是有很大區(qū)別的,我們即便對(duì)文件有全權(quán)限,如果對(duì)它的目錄沒有足夠的權(quán)限的話,我們還是無法對(duì)文件進(jìn)行增刪查改,更何況他們還是有所有者,所屬組和其他人的區(qū)別。比如:當(dāng)我們想查看一個(gè)目錄下的某一個(gè)文件內(nèi)容時(shí),我們至少要對(duì)目錄有什么權(quán)限,對(duì)文件有什么權(quán)限?由我們上面的總結(jié)我們知道,我們對(duì)目錄至少有一個(gè)x權(quán)限,對(duì)文件至少有r權(quán)限,這樣雖然我們無法看到目錄下有什么文件,但是我們知道有一個(gè)我們知道的文件就在該目錄下,我們依舊可以使用工具查看:?
權(quán)限判斷的順序
????先判斷是否是文件的所有人,如果是,則執(zhí)行所屬人的權(quán)限后結(jié)束,如果不是所有人,則判斷是否所屬組(可以是主組也可以是輔助組),如果是,則執(zhí)行所屬組的權(quán)限后結(jié)束,如果不是則執(zhí)行其他人的權(quán)限后結(jié)束。
????所有人->所有組->其他人
?
特殊權(quán)限
除了普通權(quán)限外,我們的文件還是有特殊權(quán)限的,比如我們常見的文件/etc/shadow文件,我們發(fā)現(xiàn)它的權(quán)限是---------,可是我們作為普通用戶還是可以進(jìn)行修改自己的密碼,這就意味著我們修改了shadow的內(nèi)容,這是為什么呢,我們知道root這個(gè)大變態(tài)即便對(duì)文件沒有任何權(quán)限,依舊可以修改查看它,所以,這會(huì)不會(huì)和root有關(guān)呢?我們?cè)谛薷拿艽a時(shí)不是直接對(duì)文件修改,而是使用命令passwd對(duì)shadow進(jìn)行修改的,而passwd這個(gè)程序所屬組和所有者都是root,這是意味著我們可能是臨時(shí)借用了root這個(gè)上帝之手對(duì)我們的密碼進(jìn)行修改的,我們?cè)诳纯?span style="line-height:1.8;">passwd的權(quán)限:
我們看到了什么東西?在root所有者的x位居然變成了s,這是什么呢,這就是特殊權(quán)限之一SUID權(quán)限。suid?當(dāng)對(duì)一個(gè)可執(zhí)行的二進(jìn)制文件作用了SUID權(quán)限之后,任何擁有執(zhí)行該文件權(quán)限的人,在執(zhí)行的過程時(shí)都臨時(shí)擁有該文件所屬人的權(quán)限。這下我們就該知道為什么我們可以用passwd命令修改對(duì)于我們沒有任何權(quán)限的shadow了吧。因?yàn)槲覀兣R時(shí)獲取了passwd的root所有者的權(quán)限,我們是在以root的身份在修改我們的密碼呀!!!
除了SUID還有SGID。sgid?當(dāng)對(duì)一個(gè)可執(zhí)行的二進(jìn)制文件作用了SGID權(quán)限之后,任何擁有執(zhí)行該文件權(quán)限的人,在執(zhí)行的過程時(shí)都臨時(shí)擁有該文件所屬組的權(quán)限。?當(dāng)對(duì)一個(gè)目錄作用了SGID權(quán)限之后,任何對(duì)該目錄有wx權(quán)限的用戶在該目錄下創(chuàng)建的文件及目錄的所有屬均為該目錄的所有組。對(duì)于第二個(gè)作用,我們做一個(gè)測(cè)試:
Html目錄屬于HTML組,而redhat用戶也有HTML附加組,然后我們?cè)?span style="line-height:1.8;">HTML中創(chuàng)建文件:
此時(shí)我們發(fā)現(xiàn)如果僅作為一個(gè)組用戶進(jìn)入改組,創(chuàng)建的文件所屬組依然是自己的,作為同組的其他用戶還是無法修改,接下來我們加上SGID權(quán)限chmod 2770 html:
這時(shí)候我們發(fā)現(xiàn),Redhat用戶創(chuàng)建的文件所屬組變成了HTML,這就是SGID的作用之一,作為同組的人員,我們可以對(duì)此文件進(jìn)行修改,團(tuán)隊(duì)合作起來更方便。
??? ?接下來我們看特殊權(quán)限的最后一個(gè)sticky,它的作用是當(dāng)對(duì)一個(gè)目錄使用了sticky之后(只限制組用戶,目錄的owner不受影響),該目錄下的文件僅其所屬人才能刪除。屬于這個(gè)組的其他成員可以對(duì)目錄下的文件查看,修改,就是無法刪除。
?
我們之前說默認(rèn)權(quán)限有4位比如root的默認(rèn)權(quán)限是0022,最前面的那個(gè)是特殊權(quán)限,由于特殊權(quán)限默認(rèn)是什么都沒有,所以是0,我們剛剛的演示其實(shí)也可以看出,設(shè)置特殊權(quán)限是SUID對(duì)應(yīng)的是4,SGID對(duì)應(yīng)的2,sticky對(duì)應(yīng)的是1,還有就是我們發(fā)現(xiàn)特殊權(quán)限居然有大寫的,這是為什么呢,我們可以看到,三個(gè)特殊權(quán)限都是在x位上,為了區(qū)分權(quán)限,如果在某一位有x權(quán)限,對(duì)應(yīng)的特殊權(quán)限就是小寫的,如果沒有x權(quán)限,對(duì)應(yīng)的特殊權(quán)限就是大寫的,三個(gè)權(quán)限分別是sS,sS,tT。
隱藏權(quán)限
對(duì)于隱藏權(quán)限,我們不會(huì)說太多,說兩個(gè)我們平時(shí)最常用的選項(xiàng):
設(shè)置:
????命令:chattr
????格式:chattr?[option] filename
????格式:
???????+i??不能刪除不能改
????????+a??不能刪除,只能追加
這設(shè)置就厲害了,就連我們的root也無法改變,其實(shí)他就是為了防止root誤操作而刪除文件的,我們還可以利用lsattr進(jìn)行查看:
ACL權(quán)限管理
為了滿足我們對(duì)細(xì)化權(quán)限的設(shè)置,在linux系統(tǒng)中添加了ACL權(quán)限,用于對(duì)單個(gè)用戶或者單個(gè)組進(jìn)行經(jīng)典的rwx權(quán)限設(shè)置,在centOS6中創(chuàng)建了新的分區(qū)后需要我們單獨(dú)進(jìn)行ACL功能的添加才可以使用,我們也不能將一個(gè)具有ACL權(quán)限的文件或目錄拷貝到還沒有使用ACL的分區(qū)上面,centOS7的xfs文件系統(tǒng)時(shí)自動(dòng)啟動(dòng)ACL功能的。
?
ACL權(quán)限的設(shè)置與取消
如何設(shè)置ACL權(quán)限,我們需要知道ACL是針對(duì)于用戶和組進(jìn)行設(shè)置的,對(duì)其他人無效,并且ACL目標(biāo)是文件或目錄。
對(duì)于用戶設(shè)置,我們使用的命令是:setfacl –m u:username:rwx /path/filename,在我們針對(duì)目錄或文件設(shè)置完ACL權(quán)限以后,我們可以通過getfacl命令查看我們?cè)O(shè)置的ACL權(quán)限。
?
我們可由上圖看到,在設(shè)置完ACL權(quán)限時(shí),其他人的權(quán)限位后多了有個(gè)“+”,這就是ACL權(quán)限的標(biāo)志。在我們顯示出的tty.txt的ACL權(quán)限里,我們看到#號(hào)后面的是我們本文件的原本信息,并且,設(shè)置完ACL權(quán)限以后,mask就會(huì)占領(lǐng)g位,所以我們要是直接設(shè)置
setfacl –m g::rw filename的話其實(shí)就是在設(shè)置mask,所以,當(dāng)我們?cè)谠O(shè)置完ACL權(quán)限后,除非我們刪除全部的ACL權(quán)限,否則,無法在對(duì)用戶的g位設(shè)置任何權(quán)限。
我們?cè)卺槍?duì)某一目錄設(shè)置完ACL權(quán)限之后,能不能在目錄下創(chuàng)建文件讓它也具有相同的ACL權(quán)限呢?我們看一下:
我們以實(shí)際行動(dòng)說明了使用setfacl –m u:username:rwx /path/filename設(shè)置完權(quán)限后,我們對(duì)其目錄一下的文件都不能繼承父目錄的ACL權(quán)限,咋辦?好辦,我們可以使用setfacl –mR d:u:username:rw /path/filename來對(duì)目錄設(shè)置這個(gè)權(quán)限,這樣的話,目錄下面的文件和新目錄也能繼承父目錄的ACL權(quán)限了,但是有一點(diǎn)需要注意,我們使用setfacl –m u:username:rwx /path/filename和設(shè)置它下面的文件的ACL權(quán)限是有一點(diǎn)不一樣的,因?yàn)槲覀冃枰M(jìn)入目錄后查看修改子文件,所有我們?cè)谠O(shè)置目錄的ACL權(quán)限時(shí),一定要注意,如果需要進(jìn)入目錄的話ACL權(quán)限應(yīng)該加上x;
?
對(duì)用戶的ACL權(quán)限設(shè)置我們已經(jīng)看到了,對(duì)組的ACL設(shè)置同樣是如此:
setfacl?–m g:username:rwx /path/filename
setfacl?–mR g:u:username:rw /path/filename
ACL權(quán)限判斷的順序
????先判斷是否是文件的OWNER,如果是,則執(zhí)行OWNER的權(quán)限后結(jié)束,如果不是OWNER,則判斷是否是ACL的USER,如果是則執(zhí)行USER權(quán)限后結(jié)束,如果不是ACL的USER,?則判斷是否屬于GROUP或ACL GROUP,如果是,則取最大權(quán)限。如果不屬于任何GROUP,則執(zhí)行OTHER。
????所有人->所有組->其他人
還有剛才那個(gè)mask,他是對(duì)最大權(quán)限的設(shè)置,我們一般不會(huì)管他,我們?cè)谠O(shè)定ACL權(quán)限時(shí),它是默認(rèn)隨著我們ACL權(quán)限的設(shè)置而變化的,保證我們?cè)O(shè)置的每個(gè)權(quán)限都能生效,如果我們想限定最大權(quán)限,我們可以在設(shè)置完所有ACL權(quán)限時(shí),對(duì)它進(jìn)行設(shè)置。
設(shè)置命令:setfacl?-m mask:rwx f1
ACL權(quán)限的其他參數(shù)和取消設(shè)置
????base ACL?不能刪除
???setfacl -k dir?刪除默認(rèn)ACL權(quán)限
setfacl?--set u::rw,u:wang:rw,g::r,o::- file1
????setfacl?-M acl.txt f1[dir1]
????????acl.txt?內(nèi)容來自getfacl f1 > acl.txt,如下
????????????#?file: fstab
????????????#?owner: root
????????????#?group: root
????????????user::rw-
????????????user:zhangfei:rwx
????????????group::r--
????????????mask::rwx
????????????other::r—
????setfacl -x u:liubei f1??單獨(dú)去除一條ACL權(quán)限
setfacl?-X aclrm.txt f1[ f2 f3 *]
???????????????aclrm.txt?內(nèi)容如下
??????????????u:liubei
??????????????g:shuguo
setfacl -b f1?去除該文件上ACL屬性。
?
?
備份和恢復(fù)ACL
?主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p?參數(shù)。但是tar等常見的備份工具是不會(huì)保留目錄和文件的ACL信息
備份ACL權(quán)限信息
getfacl?-R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1(刪除ACL權(quán)限)
還原ACL權(quán)限信息
setfacl?-R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
?
轉(zhuǎn)載:http://www.cnblogs.com/duzhaoqi/
轉(zhuǎn)載于:https://blog.51cto.com/lixin752299/2061361
總結(jié)
以上是生活随笔為你收集整理的CentOS文件权限管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Windows 系列》- 右击添加管理
- 下一篇: 【Android】Android 8种对