1. 程式人生 > >Linux檔案許可權(一)

Linux檔案許可權(一)

1.幾個基本概念

檔案擁有者

因為Linux是多人多工的系統,所以對不同使用者的隱私管理就顯得至關重要了,舉個栗子,王家有仨兄弟,大毛、二毛和三毛,他們有一個共同的家,但是每個人有每個人的屋子,那麼對他們各自的房間來說就是這間房子的擁有者(owner)

群組

繼續使用王家三兄弟的栗子,王家的房子有一個客廳,這個地方是大毛二毛還有三毛都可以在這玩的,大毛可以看電視,二毛可以。。啊,扯遠了,客廳相當於一個資源,那麼王家的所有成員組成了王家這一個群組(group)

其他

王家三兄弟在開心的玩著,這時候隔壁狗剩來串門,但是他沒有王家的鑰匙,需要有人開門才能進到王家,這時候狗剩就相當於其他人(other)的角色

神仙

在Linux中有一個角色不在五行內超出三界中,具有巨大的權利,那就是root,可以對任何檔案進行操作,慎用。。。

與使用者群組相關的檔案

預設情況下,系統上的賬號與一般身份的使用者,還有root的相關資訊會存放在/etc/passwd檔案下; 個人的密碼會記錄在/etc/shadow檔案中; Linux中所有的組名都會記錄在/etc/group檔案中,以上三個檔案不要刪除

檔案許可權

說完上面的幾個概念再來理解檔案許可權應該會相對容易些,當在控制檯使用 ls -al命令時,會列出這個目錄下所有的檔案(包括隱藏檔案),以我的為例,使用後會有這些檔案被列出來(檔案較多,沒有全部列出來) ls -al命令顯示的列表 下面拿出其中的一條記錄解釋一下每個位置分別代表什麼意思

位置 1 2 3 4 5 6 7 8 9 10
對應值 d rwx r-x r-x 3 root root 4096 11月7 16:44 builds
釋義 檔案型別 owner許可權 group許可權 other許可權 連結 檔案所屬使用者 檔案所屬組 檔案大小 檔案最後修改時間 目錄或檔名稱

在下面對這些不同的位置一一詳細介紹下: 位置1: 字元所代表的檔案型別 【d】表示一個目錄,比如builds就是一個目錄 【-】表示一個檔案,比如上邊那個大圖中的.bash_logout就是一個檔案 【l】表示一個連結 【b】表示裝置檔案裡面可供儲存的介面裝置 【c】表示裝置檔案裡面的串列埠裝置(比如滑鼠鍵盤等) 位置2:

檔案擁有者許可權 r——檔案或者目錄的可讀許可權 w——可寫許可權 x——可執行許可權 這三個許可權的位置是固定的,如果沒有使用-代替 位置3: 位置4: 位置3和4代表的只是不同物件對某一檔案或者目錄的許可權不同而已,三個字元所代表的意義並沒有什麼區別 位置5: 表示有多少檔名連結到這一結點 先暫時解釋一下結點的概念,每個檔案會將其許可權與屬性記錄到i-node(結點)中,但是目錄樹是使用檔名來顯示的,所以每一個檔名都會連結到有一個i-node上,這個屬性就是用來記錄有幾個不同的檔名連結到這一個結點上,如果需要的話會在之後的博文中再進行介紹 位置6: 檔案擁有者 如上一截圖,目錄builds的owner為root 位置7: 檔案所屬組 如上一截圖,目錄builds的所屬組為root 位置8: 檔案大小 預設單位為位元組 位置9: 檔案最後修改時間 如果最後修改時間距離現在太遠,那麼會只顯示年份,而不會顯示具體的時間 位置10: 顧名思義,就是表示目錄或者檔名

更改檔案許可權

介紹完上面的一些基本概念之後,下面來說一下更改檔案許可權/檔案所有者的幾個命令,涉及檔案許可權的命令主要有以下幾個:

  • chgrp:更改檔案所屬組
  • chown:更改檔案所有者
  • chmod:更改檔案許可權 下面一一介紹一下
1.chgrp
  • 命令格式:chgrp [-R] 組名 檔案或目錄 **注:**引數-R的作用是進行遞迴的持續變更,即如果需要變更目錄,那麼新增改引數之後,會連同該目錄下的所有檔案或目錄一同變更
  • 命令例項: before 在這裡插入圖片描述 after 在這裡插入圖片描述 執行後,將builds目錄的所屬組由原來的users更改為root 注意 如果更改的所屬組組名不在/etc/group中,那麼執行該命令時會報錯 在這裡插入圖片描述 當嘗試更改為tester時,會因為檔案/etc/group中不存在該組名報錯
2.chown
  • 命令格式:chown [-R] 所有者名稱 檔案或目錄 或者 chown [-R] 所有者名稱:組名 檔案或目錄 [-R]引數的作用同上 使用與上一命令並無區別,不在此贅述了,但有一點需要注意,如果所設定的所有者在/etc/passwd檔案中不存在的話會報錯 在這裡插入圖片描述
chmod

這一命令用來更改所有者、組以及其他人的許可權,有兩種方式可以操作,下面就具體展開說一下 方式一: 符號方式改變許可權 首先來看下面的表格 在這裡插入圖片描述 下面還是用builds目錄實際操作一下,比如需要將目錄builds的許可權設定為rwxrwxr-x,那麼可以這樣操作 chmod g+w builds 命令,會在使用者組許可權上新增寫許可權,也可以直接進行使用"="進行設定,比如將許可權設定成為rwxr-xr–,可以使用下面的命令 chmod g=rx,o-x builds,如果為所有的身份都加上可執行許可權,那麼就可以這樣設定chmod a+x builds 方式二: 數字方式 前面已經說到Linux在檔案許可權中,三個身份都有三個代表不同許可權的字元r/w/x,因為這三個字元是固定的,所以可以用數字來代表,所以不同字元對應的數字也是固定的,他們的對應關係如下: r——4 w——2 x——1 這樣假如上面的目錄builds目前的許可權為rwxr-xr–,那麼這三個身份所對應的數值為 owner——4 + 2 + 1 = 7(也就是說如果某一身份具有所有的許可權,那麼對應的數值應該為7) group——4 + 1 = 5 other——4 瞭解了對應關係,之後來看一下怎麼通過數值修改許可權

  • 命令格式:chmod [-R] xyz 檔案或者目錄
  • 命令例項: before 在這裡插入圖片描述 after 在這裡插入圖片描述 Tips:如果檔案或者目錄不想被其他人看到,可以將其他人的許可權設定成0或者- - -

在下一個小節中會說一下許可權對檔案或者目錄的作用

不足之處還望指正