我們都知道linux是一個多用戶,多任務(wù)的系統(tǒng)。這也是它的最優(yōu)秀的特性,也就是說,可能有很多人同時在系統(tǒng)上工作,因此請不要強(qiáng)行關(guān)機(jī)。
同時,為了保護(hù)每個人的隱私和工作環(huán)境,對于某個文檔(文件,目錄),Linux系統(tǒng)定義了三個身份,即擁有者(owner)、群組(group)、其他人(others)。每個身份對應(yīng)三種類型的權(quán)限:可讀和可寫,可執(zhí)行(Excutable),通過這種設(shè)計可以確保每個用戶擁有的數(shù)據(jù)的隱私性。
文檔屬性
使用命令ls -al --full-time,或者此命令的縮寫ll可以查看文件或目錄的所有屬性。如下:
從上面可以看到,每一行都有7列,分別是:
第一列
總共有10位。第一位表示文件類型,d表示目錄,-表示文件,l表示鏈接的文件,d表示可以隨機(jī)訪問的設(shè)備(例如U盤),c表示一次性讀取的設(shè)備,例如 作為鼠標(biāo)或鍵盤等等。
后9位數(shù)字按順序?qū)?yīng)于三個身份所擁有的權(quán)限,身份順序?yàn)椋核姓撸M,其他,并且權(quán)限順序?yàn)椋嚎勺x,可寫和可執(zhí)行。例如:-r-xr-x ---表示當(dāng)前文檔是文件,所有者是可讀寫的,并且同一組中的用戶是可讀寫的,其他用戶沒有任何權(quán)限。
第二列
表示鏈接數(shù),表示有多少個文件鏈接到inode號碼。
第三列
表示擁有者
第四列
表示所屬群組
第五列
表示文檔的大小,以字節(jié)為單位
第六列
表示文檔的最后修改時間。請注意,這不是文檔的創(chuàng)建時間。
第七列
表示文檔名稱。以點(diǎn)(.)開頭的是隱藏文檔
變更擁有者(owner)
位置
cat /etc/passwd
注意:它必須是此位置中已經(jīng)存在的帳戶。也就是說,/ etc / passwd中有記錄的擁有者才可以更改它。
語法
chown [-R] [帳號名稱] [文件或目錄]
chown [-R] [帳號名稱]:[群組名稱] [文件或目錄]
備注:此命令也可以順便變更文檔群組,但是仍然建議使用chgrp命令更改文檔組。
選項(xiàng)
-R 遞歸變更,即連同次目錄下的所有文件(夾)都要變更。
用法
chown daemon test 變更文件夾test賬號為daemon。
chown daemon:root test 變更文件夾test群組為root。
chown root.users test 變更文件夾的賬號為root,群組為users
chown .root test 單獨(dú)變更群組為root
備注:盡管可以在擁有者與群組間加小數(shù)點(diǎn)(.),但為了避免有的友友在命名中帶點(diǎn),所以還是建議使用冒號“:”來隔開擁有者與群組,以避免誤判。
變更群組(group)
位置
etc/group
備注:你可以從這里查看到所有群組
語法
chgrp [-options] [群組名] [文檔路徑]
備注:關(guān)于options,可以通過man chgrp、info chgrp、chgrp --help等命令可以查詢詳細(xì)用法。
用法
chgrp -R users test 命令:改變test文件夾及其所有子文件(夾)的群組為users。
注意:群組名稱不在位置內(nèi),將會報錯invalid group。
變更權(quán)限
Linux文檔只有三種基本權(quán)限,分別是read/write/execute,加上身份owner/group/others也一共有九個。更改權(quán)限的方法有兩種,即符號方法和數(shù)值方法。
符號法
使用u,g,o來分別代表三種身份,a表示全部身份;分別使用r、w、x表示三種權(quán)限;分別使用+、-、=表示操作行為
語法
chmod | u g o a | +(加入) -(除去) =(設(shè)置) | r w x | 文檔路徑
設(shè)置權(quán)限(=)
如:變更目錄test的權(quán)限為任何人都可讀、寫、執(zhí)行。
chmod u=rwx,g=rwx,o=rwx test
--或
chmod ugo=rwx test
--或
chmod a=rwx test
去掉權(quán)限(-)
去掉目錄test執(zhí)行權(quán)限
chmod u-x,g-x,o-x test
--或
chmod ugo-x test
--或
chmod a-x test
備注:執(zhí)行權(quán)限(x),對目錄而已就是其他用戶是否可以通過cd test成為工作目錄。
添加權(quán)限(+)
增加目錄test執(zhí)行權(quán)限
chmod u+x,g+x,o+x test
--或
chmod ugo+x test
--或
chmod a+x test
備注:如果我們編寫完一個shell文件test.sh后,通過chmod a+x test.sh就添加了文件執(zhí)行權(quán)限。
數(shù)字法
顧名思義,它使用數(shù)字表示權(quán)限,并且r,w和x分別為4、2和1。三種權(quán)限累加就可以得出一種身份的權(quán)限。
把目錄test的權(quán)限設(shè)置為任何人都可讀、寫、執(zhí)行。如下:
chmod 777 test
目錄test的權(quán)限設(shè)置為任何人都可讀與寫。
chmod 666 test
賦予一個shell文件test.sh可執(zhí)行權(quán)限,擁有者可讀、寫、執(zhí)行,群組賬號和其他人可讀、執(zhí)行。
chmod 755 test
備注:是不是發(fā)現(xiàn)數(shù)字法更簡單啊
文件和目錄權(quán)限差異
文檔權(quán)限對于文件和目錄有巨大的差異
文件
針對的是該文件內(nèi)容
- readable 可讀取該文件的實(shí)際內(nèi)容
- writable 可以編輯、新增或者是修改該文件的內(nèi)容
- executable 有可以被系統(tǒng)執(zhí)行的權(quán)限
備注:擁有w權(quán)限并不意味著您可以刪除文件。刪除文件是目錄權(quán)限控制的范圍。
這是因?yàn)槟夸浀南嚓P(guān)權(quán)限和屬性記錄在目錄的inode中,并且目錄中所有文件的名稱和相應(yīng)的索引文件(inode)號都記錄在目錄所屬的塊中,因此當(dāng)我們 讀取某個文件讀取文件時,必須先讀取目錄的索引節(jié)點(diǎn),然后讀取目錄的塊信息,然后獲取要讀取的文件的索引信息。
也就是說,在哪個塊上存儲文件,最后可以讀取文件內(nèi)容(此內(nèi)容需要了解Linux文件系統(tǒng),例如Ext2 / Ext3 / Ext4,我們將在后面詳細(xì)介紹)。請記住,文件權(quán)限僅對文件內(nèi)容有效。
示例說明
使用root身份讀取目錄test001下的文件test001-1
查看目錄物理全路徑:pwd
列出有關(guān)的目錄和文件:ll -di / /root /root/test001 /root/test001/test001-1
通過man ls 查看-i,全稱inode,即 print the index number of each file
- 目錄/的inode:通過掛載點(diǎn)的信息找到inode號碼為2的block。
- 目錄/的block:通過上一步驟找到的block,找到root/目錄的inode號碼為131073。
- 目錄root/的inode:讀取編號為131073的inode找到目錄的block。
- 目錄root/的block:通過上一步驟找到的block,找到root/test001/目錄的inode號碼為527524。
- 目錄root/test001/的inode:讀取編號為527524的inode找到目錄的block。
- 目錄root/test001/的block:通過上一步驟找到的block,找到文件test001-1目錄的inode號碼為527526。
- 文件test001-1的inode:讀取編號為527526的inode找到文件的block。
- 文件test001-1的block:通過上一步驟找到的block,讀取文件內(nèi)容。
由于是root用戶,因此有權(quán)閱讀任何文檔。如果使用一般帳戶,則上述每個步驟的讀取內(nèi)容也會與權(quán)限匹配。
目錄
針對的是該目錄下的文件對象
- readable 擁有讀取目錄結(jié)構(gòu)列表的權(quán)限,即可以通過ls命令查詢目錄清單
- writable 具有變動該目錄結(jié)構(gòu)清單的權(quán)限,即可以在該目錄中創(chuàng)建,遷移,刪除和重命名文件。
- executable 擁有進(jìn)入此目錄的權(quán)限,您可以使用cd命令成為工作目錄。
備注:從上面可以得出結(jié)論,當(dāng)打開目錄供任何人瀏覽時,至少需要授予r或x權(quán)限。要讀取目錄文件的內(nèi)容,至少需要目錄權(quán)限x和文件權(quán)限r(nóng)。
總結(jié)
可以為Linux的每個文檔分配三種類型的身份的rwx權(quán)限。 chgrp命令更改文件組,chmod命令更改文件權(quán)限,chown更改文件所有者;然后請記住使用文件權(quán)限來保護(hù)數(shù)據(jù)的安全性。