2021-05-12 14:32:11
Linux 的檔案許可權和目錄設定
1、Linux檔案屬性
用root使用者登入Linux後,執行 ls -al 命令檢視檔案。顯示如下:
檔案屬性示意圖如下:
第一列代表這個檔案的型別和許可權
第一個字元代表這個檔案是:目錄、檔案或連結檔案等。
- 若是【d】則是目錄;
- 若是【-】則是檔案;
- 若是【l】則表示為連線檔案;
- 若是【b】則表示裝置檔案裡的可供儲存的介面裝置;
- 若是【c】則表示裝置檔案裡的串列埠裝置,如滑鼠、鍵盤等。
後面的9個字元以3個位一組,均為rwx的組合。其中r代表可讀,w代表可寫,x代表可執行。注意3個許可權的位置不會改變,如果沒有許可權,就會出現減號(-)。
- 第一組 為 “檔案所有者的許可權”
- 第二組 為 “使用者組的許可權”
- 第三組 為 “其他非本使用者組的許可權”
第二列表示有多少檔名連線到此節點
每個檔案都會將它的許可權和屬性記錄到檔案系統的i-node中,不過我們使用的目錄樹卻是使用檔名來記錄,因此每個檔名就會連線到一個i-node。這個屬性記錄了有多少不同的檔名連線到相同的一個i-node號碼。
第三列表示這個檔案的“所有者賬號”
第四列表示這個檔案的所屬的使用者組
第五列為這個檔案的大小,預設單位是B
第六列為這個檔案的建立檔案日期或者是最近的修改日期。
第7列為該檔案的檔名
如果檔名之前多了一個 “.” ,則說明這個檔案為“隱藏檔案”,隱藏檔案的list列表時,加-a引數可以顯示。ls -al。
2、如何改變檔案的許可權和屬性
- chgrp : 改變檔案所屬使用者組
- chown : 改變檔案所有者
- chmod: 改變檔案的許可權
2.1、改變檔案所屬使用者組
chgrp 【-R】 dirname/filename ...
-R : 進行遞回的持續更改,也連同子目錄下的所有檔案、目錄都更新成為這個使用者組之意。常常用在更改某一目錄內所有檔案的情況。
範例:
chgrp hy install.log : 將install.log檔案的使用者組改為hy使用者組。注意hy使用者組必須要在/etc/group 檔案記憶體在才可以。
2.2、改變檔案的所有者
chown [-R] 賬號名稱 檔案或目錄
chown [-R] 賬號名稱:組名 檔案或目錄
-R:也是遞迴子目錄。
範例:
chown bin install.log
chown root:root install.log
改變檔案所有者和使用者組的這兩個命令的應用場景:複製檔案,由於複製行為會復制執行者的屬性和許可權,因此複製後需要改變檔案所屬使用者、使用者組等。
2.3、改變檔案的許可權
檔案許可權有兩種設定方法:數位型別改變許可權和符號改變許可權。
首先說明各個許可權對應的數位:
- r: 4
- w: 2
- x:1
- 每種身份各自的三個許可權分數是需要累加的。
- 例如:許可權為(-rwxrwx---)分數分表是:
- owner = rwx = 4+ 2 + 1 = 7
- group = rwx = 4+ 2+ 1 = 7
- others = --- = 0+0 +0 = 0
- 所以在設定許可權時,該檔案的許可權數位就是770.
1)、數位型別改變檔案許可權方式
命令: chmod [-R] xyz 檔案或目錄
xyz : 代表許可權數位。如770.
-R : 進行遞回的持續更改。
範例:
chmod 777 .bashrc : 將檔案.bashrc這個檔案的所有許可權設定都啟用。
2)、符號型別改變檔案許可權方式
使用u、g、o三個字母代表user、group、others 3中身份。此外a代表all,即所有身份。
範例:
chmod u=rwx,go=rx .bashrc
也可以增加或去除某種許可權。
chmod a+w .bashrc
chmod a-x .bashrc
3、目錄和檔案許可權的意義
3.1、許可權對於檔案的重要性
- r(read):可讀取此檔案的實際內容
- w(write):可以編輯、新增或修改檔案的內容(但是不含刪除該檔案)
- x(execute):該檔案具有可以被系統執行的許可權。
3.2、檔案對目錄的重要性
目錄的主要內容是記錄檔名列表,檔名與目錄有強烈的關聯。
r(read):表示具有讀取目錄結構列表的許可權,當具有讀取一個目錄的許可權時,表示你可以查詢該目錄下的檔名資料,可以用ls命令將目錄內容顯示出來。
w(write):對目錄來說是很強大的。表示你具有更改該目錄結構的許可權。
- 新建新的檔案和目錄
- 刪除已存在的檔案與目錄
- 將已存在的檔案或目錄重新命名
- 轉移該目錄內的檔案、目錄位置
- 總之,目錄的w許可權與該目錄下面的檔名變動有關就對了。
x(execute):目錄的x許可權代表使用者是否能進入該目錄成為工作目錄的用途。
因此,要開放目錄給任何人瀏覽時,應該至少也要給與r及x許可權,但是w許可權不可以隨便給。
4、Linux檔案的種類及擴充套件名
4.1、檔案的種類
- 普通檔案:純文字檔案、二進位制檔案、資料格式檔案
- 目錄
- 連線檔案
- 裝置與裝置檔案
- 通訊端:資料介面檔案,通常被用在網路上的資料連線。第一個屬性為s,通常在/var/run 這個目錄中可以看到這種檔案型別。
- 管道(FIFO,pipe):它的主要目的在解決多個程式同時存取一個檔案所造成的錯誤問題。第一個屬性為p
4.2、Linux副檔名
基本上linux的檔案是沒有所謂的“擴充套件名”的。一個linux檔案能不能被執行,與它的第一列的10個屬性有關,與檔名根本沒有一點關係。只要你的許可權中有x的話,即代表可以被執行。但是可以被執行和可以執行成功是不一樣的。能不能執行成功,需要看檔案的內容。
雖然如此,我們還是希望可以通過擴充套件名來了解該檔案是什麼東西,還是會以適當的擴充套件名來表示該檔案是什麼種類的。
以下是幾種常用的擴充套件名:
- *.sh:指令碼或批次檔。
- *Z、*.tar、*.tar.gz、*.zip、*.tgz:經過打包的壓縮檔案。
- *.html、*.php:網頁相關檔案。
- 注意:從網路上傳送到linux系統中,檔案的屬性和許可權確實會被改變。
linux系統下檔案長度限制
使用預設的Ext2/Ext3檔案系統時,針對檔案的檔名長度的限制為:
單一檔案或目錄的最大容許檔名為255個字元;
包含完整路徑名稱及目錄(/)的完整檔名為4096個字元
5、Linux目錄設定標準:FHS
因為利用linux來開發產品的團隊或公司、個人實在太多了。如果每個人都用自己的想法來組態檔放置的目錄,那麼將可能造成很多管理上的困擾。後來就有了所謂的Filesystem Hierarchy Standard (FHS) 標準了。
該標準指出,其目的主要是希望讓使用者可以了解到已安裝的軟體通常放置於哪個目錄下。FHS的重點在於規範每個特定的目錄下應該要放置什麼樣子的資料而已。
FHS依據檔案系統使用的頻繁與否和是否允許使用者隨意改動,而將目錄定義為四種互動作用的形態。
FHS針對目錄樹架構僅定義出三層目錄下面應該放置什麼樣的資料而已,分別是下面這三個目錄:
- / (root,根目錄):與開機系統有關
- /usr(UNIX software resource):與軟體安裝和執行有關
- /var(variable):與系統運作過程有關。
相關文章