Linux中文件的屬性
Linux的文件屬性,簡單的說,有這么幾種
- 權限
- 所屬者
- 所屬組
下面是一個文件
-rw-r--r--. 1 root root 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz
對應關系為
-rw-r--r--. 1 root root 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 權限 ][連結][擁有者][群組][文件容量][ 修改日期 ][ 文件名 ]
Linux中的文件權限
上述權限一欄可以3個一組,分為3組
-, rw-, r--, r--
注意到,第一個字符單獨分組,這個表示文件類型。
- 當為[ d ]則是目錄,例如上表檔名為『.gconf』的那一行;
- 當為[ - ]則是文件,例如上表檔名為『install.log』那一行;
- 若是[ l ]則表示為連結檔(link file);
- 若是[ b ]則表示為裝置文件里面的可供儲存的接口設備(可隨機存取裝置);
- 若是[ c ]則表示為裝置文件里面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)。
剩下的三組主要由[rwx]組成,r-read, w-write, x-execute, [-]表示占位符,即沒權限。
- 第一組為『文件擁有者的權限』,上栗中文件擁有者可讀可寫
- 第二組為『同群組的權限』;上栗中文件所屬組可讀
- 第三組為『其他非本群組的權限』,上栗中其他人可讀
權限除了字母表示外還可以用數字,
r=4, w=2, x=1, -=0
關於為什么是4210,見參考[權限詳解]。
所以,上述文件的權限也可以表示為644
修改文件權限
命令
chmod [可選項] <mode> <file...>
可選項
可選項:
-c, --changes like verbose but report only when a change is made (若該檔案權限確實已經更改,才顯示其更改動作)
-f, --silent, --quiet suppress most error messages (若該檔案權限無法被更改也不要顯示錯誤訊息)
-v, --verbose output a diagnostic for every file processed(顯示權限變更的詳細資料)
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively (以遞歸的方式對目前目錄下的所有檔案與子目錄進行相同的權限變更)
--help 顯示此幫助信息
--version 顯示版本信息
mode
權限設定字串,詳細格式如下 :
[ugoa...][[+-=][rwxX]...][,...],
其中
[ugoa...]
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。
[+-=]
+ 表示增加權限,- 表示取消權限,= 表示唯一設定權限。
[rwxX]
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
示例,修改所屬者添加可執行權限
[root@localhost es]# ls -la
-rw-r--r--. 1 es es 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz
[root@localhost es]# chmod u+x kibana-5.6.5-linux-x86_64.tar.gz
[root@localhost es]# ls -la
-rwxr--r--. 1 es es 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz
另一個比較常用的修改方式是數字法。
rwx = 4+2+1 = 7 可讀可寫可執行
r-x = 4 + 1 = 5 可讀可執行
最常用的是755,即所屬者擁有所有權限,所屬組和其他人沒有寫權限。
chmod 755 kibana-5.6.5-linux-x86_64.tar.gz
修改文件所屬者
chown :改變文件擁有者
基本用法
chown [-R] 賬號名稱 文件或目錄
chown [-R] 賬號名稱:用戶組名稱 文件或目錄
示例
[root@localhost jdata]# ls -la
drwxr-xr-x. 2 root root 4096 Jun 14 00:05 es
[root@localhost jdata]# chown -R es:es es
[root@localhost jdata]# ls -la
drwxr-xr-x. 2 es es 4096 Jun 14 00:05 es
- R recursive 遞歸
修改文件所屬組
也可以單獨修改文件所屬組
基本用法
chgrp [-R] 用戶組名稱 dirname/filename ...
