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):與系統運作過程有關。