文章來自:www.toutiao.com/i68035913177932764...
學習資料分享:【視訊,文件,面試題】
我們都知道Linux是一個多使用者,多工的系統。這也是它的最優秀的特性,也就是說,可能有很多人同時在系統上工作,因此請不要強行關機。
同時,為了保護每個人的隱私和工作環境,對於某個文件(檔案,目錄),Linux系統定義了三個身份,即擁有者(owner)、群組(group)、其他人(others)。每個身份對應三種型別的許可權:可讀和可寫,可執行(Excutable),通過這種設計可以確保每個使用者擁有的資料的隱私性。
文件屬性
使用命令ls -al --full-time
,或者此命令的縮寫ll可以檢視檔案或目錄的所有屬性。如下:
從上面可以看到,每一行都有7列,分別是:
第一列
總共有10位。第一位表示檔案型別,d表示目錄,-表示檔案,l表示連結的檔案,d表示可以隨機訪問的裝置(例如U盤),c表示一次性讀取的裝置,例如 作為滑鼠或鍵盤等等。
後9位數字按順序對應於三個身份所擁有的許可權,身份順序為:所有者,組,其他,並且許可權順序為:可讀,可寫和可執行。例如:-r-xr-x —表示當前文件是檔案,所有者是可讀寫的,並且同一組中的使用者是可讀寫的,其他使用者沒有任何許可權。
第二列
表示連結數,表示有多少個檔案連結到inode號碼。
第三列
表示擁有者
第四列
表示所屬群組
第五列
表示文件的大小,以位元組為單位
第六列
表示文件的最後修改時間。請注意,這不是文件的建立時間。
第七列
表示文件名稱。以點(.)開頭的是隱藏文件
變更擁有者(owner)
位置
cat /etc/passwd
注意:它必須是此位置中已經存在的帳戶。也就是說,/ etc / passwd中有記錄的擁有者才可以更改它。
語法
chown [-R] [帳號名稱] [檔案或目錄]
chown [-R] [帳號名稱]:[群組名稱] [檔案或目錄]
備註:此命令也可以順便變更文件群組,但是仍然建議使用chgrp命令更改文件組。
選項
-R 遞迴變更,即連同次目錄下的所有檔案(夾)都要變更。
用法
chown daemon test
變更資料夾test
賬號為daemon
。
chown daemon:root
test
變更資料夾test群組為root
。
chown root.users test
變更資料夾的賬號為root
,群組為users
chown .root test
單獨變更群組為root
備註:儘管可以在擁有者與群組間加小數點(.),但為了避免有的友友在命名中帶點,所以還是建議使用冒號“:”來隔開擁有者與群組,以避免誤判。
變更群組(group)
位置
etc/group
備註:你可以從這裡檢視到所有群組
語法
chgrp [-options] [群組名] [文件路徑]
備註:關於options
,可以通過man
chgrp
、info chgrp
、chgrp
--help
等命令可以查詢詳細用法。
用法
chgrp -R users test
命令:改變test資料夾及其所有子檔案(夾)的群組為users
。
注意:群組名稱不在位置內,將會報錯invalid group。
變更許可權
Linux文件只有三種基本許可權,分別是read/write/execute
,加上身份owner/group/others
也一共有九個。更改許可權的方法有兩種,即符號方法和數值方法。
符號法
使用u,g,o來分別代表三種身份,a表示全部身份;分別使用r、w、x表示三種許可權;分別使用+、-、=表示操作行為
語法
chmod | u g o a | +(加入) -(除去) =(設定) | r w x | 文件路徑
設定許可權(=)
如:變更目錄test的許可權為任何人都可讀、寫、執行。
chmod u=rwx,g=rwx,o=rwx test
--或
chmod ugo=rwx test
--或
chmod a=rwx test
去掉許可權(-)
去掉目錄test執行許可權
chmod u-x,g-x,o-x test
--或
chmod ugo-x test
--或
chmod a-x test
備註:執行許可權(x),對目錄而已就是其他使用者是否可以通過cd test
成為工作目錄。
新增許可權(+)
增加目錄test執行許可權
chmod u+x,g+x,o+x test
--或
chmod ugo+x test
--或
chmod a+x test
備註:如果我們編寫完一個shell檔案test.sh
後,通過chmod a+x test.sh
就新增了檔案執行許可權。
數字法
顧名思義,它使用數字表示許可權,並且r,w和x分別為4、2和1。三種許可權累加就可以得出一種身份的許可權。
把目錄test的許可權設定為任何人都可讀、寫、執行。如下:
chmod 777 test
目錄test的許可權設定為任何人都可讀與寫。
chmod 666 test
賦予一個shell檔案test.sh可執行許可權,擁有者可讀、寫、執行,群組賬號和其他人可讀、執行。
chmod 755 test
備註:是不是發現數字法更簡單啊
檔案和目錄許可權差異
文件許可權對於檔案和目錄有巨大的差異
檔案
針對的是該檔案內容
readable
可讀取該檔案的實際內容writable
可以編輯、新增或者是修改該檔案的內容executable
有可以被系統執行的許可權
備註:擁有w許可權並不意味著您可以刪除檔案。刪除檔案是目錄許可權控制的範圍。
這是因為目錄的相關許可權和屬性記錄在目錄的inode中,並且目錄中所有檔案的名稱和相應的索引檔案(inode)號都記錄在目錄所屬的塊中,因此當我們 讀取某個檔案讀取檔案時,必須先讀取目錄的索引節點,然後讀取目錄的塊資訊,然後獲取要讀取的檔案的索引資訊。
也就是說,在哪個塊上儲存檔案,最後可以讀取檔案內容(此內容需要了解Linux檔案系統,例如Ext2 / Ext3 / Ext4,我們將在後面詳細介紹)。請記住,檔案許可權僅對檔案內容有效。
示例說明
使用root身份讀取目錄test001
下的檔案test001-1
檢視目錄物理全路徑:pwd
列出有關的目錄和檔案:ll -di / /root /root/test001 /root/test001/test001-1
通過man ls
檢視-i
,全稱inode
,即 print the index number of each file
- 目錄/的
inode
:通過掛載點的資訊找到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
,讀取檔案內容。
由於是root使用者,因此有權閱讀任何文件。如果使用一般帳戶,則上述每個步驟的讀取內容也會與許可權匹配。
目錄
針對的是該目錄下的檔案物件
readable
擁有讀取目錄結構列表的許可權,即可以通過ls命令查詢目錄清單writable
具有變動該目錄結構清單的許可權,即可以在該目錄中建立,遷移,刪除和重新命名檔案。executable
擁有進入此目錄的許可權,您可以使用cd命令成為工作目錄。
備註:從上面可以得出結論,當開啟目錄供任何人瀏覽時,至少需要授予r或x許可權。要讀取目錄檔案的內容,至少需要目錄許可權x和檔案許可權r。
總結
可以為Linux的每個文件分配三種型別的身份的rwx許可權。 chgrp命令更改檔案組,chmod命令更改檔案許可權,chown更改檔案所有者;然後請記住使用檔案許可權來保護資料的安全性。
本作品採用《CC 協議》,轉載必須註明作者和本文連結