漫谈Linux文档属性、拥有者、群组、权限
作者:justmine
頭條號:大數(shù)據(jù)與云原生
微信公眾號:大數(shù)據(jù)與云原生
創(chuàng)作不易,在滿足創(chuàng)作共用版權(quán)協(xié)議的基礎(chǔ)上可以轉(zhuǎn)載,但請以超鏈接形式注明出處。
為了方便閱讀,微信公眾號已按分類排版,后續(xù)的文章將在移動端首發(fā),想學(xué)習(xí)云原生相關(guān)知識,請關(guān)注我。
寫在前面
我們都知道Linux是一個支持多用戶、多任務(wù)的系統(tǒng),這也是它最優(yōu)秀的特性,即可能同時有很多人都在系統(tǒng)上進(jìn)行工作,所以千萬不要強(qiáng)制關(guān)機(jī),同時,為了保護(hù)每個人的隱私和工作環(huán)境,針對某一個文檔(文件、目錄),Linux系統(tǒng)定義了三種身份,分別是擁有者(owner)、群組(group)、其他人(others),每一種身份又對應(yīng)三種權(quán)限,分別是可讀(readable)、可寫(writable)、可執(zhí)行(excutable),通過這樣的設(shè)計就可以保證每個使用者所擁有數(shù)據(jù)的隱密性。
文檔屬性
使用命令ls -al --full-time,或者此命令的簡寫ll可以查看文件或者目錄的所有屬性。如下:
從上面可以看到,每一行都有7列,分別是:
第一列
共10位,第1位表示文檔類型,d表示目錄,-表示文件,l表示鏈接文件,d表示可隨機(jī)存取的設(shè)備,如U盤等,c表示一次性讀取設(shè)備,如鼠標(biāo)、鍵盤等。后9位,依次對應(yīng)三種身份所擁有的權(quán)限,身份順序為:owner、group、others,權(quán)限順序為:readable、writable、excutable。如:-r-xr-x---的含義為當(dāng)前文檔是一個文件,擁有者可讀、可執(zhí)行,同一個群組下的用戶,可讀、可寫,其他人沒有任何權(quán)限。
第二列
表示鏈接數(shù),表示有多少個文件鏈接到inode號碼。
第三列
表示擁有者
第四列
表示所屬群組
第五列
表示文檔容量大小,單位字節(jié)
第六列
表示文檔最后修改時間,注意不是文檔的創(chuàng)建時間哦
第七列
表示文檔名稱。以點(.)開頭的是隱藏文檔
變更擁有者(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
備注:雖然也可以在擁有者與群組間加小數(shù)點(.),但為了避免有的同學(xué)命名中帶點,故還是建議使用冒號“:”來隔開擁有者與群組,避免誤判。
變更群組(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)限變更的方式有2種,分別是符號法和數(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)限。
設(shè)置目錄test的權(quán)限為任何人都可讀、寫、執(zhí)行。
chmod 777 test
設(shè)置目錄test的權(quán)限為任何人都可讀、寫。
賦予一個shell文件test.sh可執(zhí)行權(quán)限,擁有者可讀、寫、執(zhí)行,群組賬號和其他人可讀、執(zhí)行。
chmod 755 test備注:有沒有發(fā)現(xiàn)數(shù)字法更簡單啊!!!
文件和目錄權(quán)限差異
文檔權(quán)限對于文件和目錄有巨大的差異
文件
針對的是該文件內(nèi)容
readable 可讀取該文件的實際內(nèi)容
writable 可以編輯、新增或者是修改該文件的內(nèi)容
executable 有可以被系統(tǒng)執(zhí)行的權(quán)限
備注:具有w權(quán)限不并不代表可以刪除文件,刪除文件是目錄權(quán)限控制的范圍。那是因為目錄的相關(guān)權(quán)限及屬性是記錄到目錄的inode,而目錄下的所有文件的名稱和對應(yīng)的索引文件(inode)號碼又是記錄到目錄所屬的block中,所以當(dāng)我們讀取某個文件時,必須先讀到目錄的inode,然后再讀取目錄的block信息,拿到待讀取文件的索引信息,即具體存儲在哪個block上,最后才能讀到文件內(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:通過掛載點的信息找到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)限。如果,使用一般賬號,上面每一個步驟的讀取,還會匹配權(quán)限。
目錄
針對的是該目錄下的文件對象
readable 具有讀取目錄結(jié)構(gòu)清單的權(quán)限,即可以通過ls命令,查詢該目錄清單。
writable 具有變動該目錄結(jié)構(gòu)清單的權(quán)限,即可以創(chuàng)建、遷移、刪除、更名該目錄下的文件。
executable 具備進(jìn)入該目錄的權(quán)限,即可以通過cd命令,成為工作目錄。
備注:從上面可以得出,開放目錄給任何人瀏覽時,至少需要賦予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)限來保證每個租戶數(shù)據(jù)的安全性和隱密性,請看下一篇,Linux如何管理文檔多租戶進(jìn)行實戰(zhàn)練習(xí)。
如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】。
如果你對 linux 感興趣的話可以關(guān)注我,我會定期的在博客分享我的學(xué)習(xí)心得。
總結(jié)
以上是生活随笔為你收集整理的漫谈Linux文档属性、拥有者、群组、权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dotnet 手工打一个 dotnet
- 下一篇: 从对我的质疑说起,谈谈Linux下的文件