1. 程式人生 > >八、文件權限和目錄權限chmod;更改所有者和所屬組chown;umask;隱藏權限

八、文件權限和目錄權限chmod;更改所有者和所屬組chown;umask;隱藏權限

group 執行權 常用選項 會有 其中 mod other nbsp file

八、文件權限和目錄權限chmod;更改所有者和所屬組chown;umask;隱藏權限lsattr/chattr

(一)文件權限和目錄權限chmod

為了方便更改文件的權限,Linux使用數字代替rwx,具體規則:r=4,w=2,x=1,-=0。例如rwxrwx---用數字表示就是770,其具體算法為:rwx=4+2+1=7,rwx=4+2+1=7,---+0+0+0=0。

r:可讀

w:可寫

x:可執行

-:不可操作

-rw-r--r--. 1 root root 0 1月 30 19:10 1.txt

除第一列的-顯示文件類型外,後面的九位,

分成三段:rw-,r--,r--,和文件的所有者和所屬組有關系,

一個文件有三個權限位,

第一段代表文件所有者的權限,

第二段代表文件所屬組的權限,

第三段代表文件其他用戶的權限。

最後一個“.”,有這個點意味著這個文件受制於SELinux,若SELinux開啟了,創建的文件的最後一位就會有這個點。

第一個root代表所有者,第二個root代表所屬組。

例如:rw-r--r--=644

chmod命令(change mode):用於改變用戶對文件/目錄的讀寫執行文件權限。

格式為:chmod [-R] xyz文件名(此處xyz表示數字)

舉例:chmod 700 1.txt

舉例:chmod u=rwx,g=r,o=r dir3 //完整寫法。u(user)g(group)o(other),不可以加減號。

舉例:chmod a+(-)x dir3 //給該目錄全部權限增加(減少)x的權限;或者u+x,g+x,o+x都可以。

其中,-R選項的作用等同於chown命令的-R選項,這個-R選項只適用於目錄,作用是級聯更改,即不僅更改當前目錄,連目錄裏的目錄或者文件也全部更改。

(二)更改所有者和所屬組chown

chown命令(change owner):可以更改文件的所有者。

格式為:chown [-R] 賬戶名 文件名或者chown [-R] 賬戶名:組名 文件名。

示例命令:

# mkdir dir3

# useradd user1 //創建用戶user1

# touch dir3/test3 //dir3目錄下創建test3文件

# chown user1 dir3

# ls -ld dir3 //dir3目錄所有者已經由root改為user1

drwxr-xr-x. 2 user1 root 19 1月 30 18:46 dir3

增加一個組叫testgroup。

groupadd testgroup

chown -R user 1:testgroup dir3

上例中,chown -R user1:testgroup會把dir3目錄及該目錄下的文件都修改成所有者為user1,所屬組為testgroup。

chgrp命令(change group):更改文件的所屬組。

groupadd命令:增加一個用戶組。

chgrp命令用法:# chgrp user1 dir3

將後面的文件或者目錄改到前面的組。

chown命令用法:chown username:group filename。可以加上-R選項。

# chown user1:dir3 先用戶,再組,中間用冒號分開。

# chown :user1 /tmp/test3 省略用戶,直接組,將後面的文件加入到設定user1組。

(三)umask

默認情況下,目錄權限值為755,普通文件的權限值為644。

umask命令:用於改變文件的默認權限。

格式:umask xxx(xxx代表3個數字)。若要查看umask的值,輸入命令umask,再回車即可。如下:

# umask

0022

此處umask的預設值是0022,。

umask規則:

a)若用戶建立普通文件,則預設沒有可執行權限,只有r、w兩個權限,最大值為666(-rw-rw-rw-)。

b)若用戶建立目錄,則預設所有權限均開放,即777(drwxrwxrwx)。

umask值代表的含義為兩條規則中的默認值(文件為666,目錄為777)需要減掉的權限,所以:

目錄權限為rwxrwxrwx - ----w--w- =rwxr-xr-x(777-022=755)

普通文件的權限為rw-rw-rw- - ----w--w- =rw-r--r--(666-022=644)

umask數值可以自定義設置,比如設定umask為002,你在創建目錄或文件時,默認權限分別為:

目錄權限:rwxrwxrwx - -------w- = rwxrwxr-x

文件權限:rw-rw-rw- - -------w- = rw-rw-r--

示例命令:

# umask 002

# mkdir dir4

# ls -ld dir4

drwxrwxr-x. 2 root root 6 1月 30 22:08 dir4

# touch test4

# ls -l test4

-rw-rw-r--. 1 root root 0 1月 30 22:09 test4

可以看到創建的目錄的默認權限變為775,文件的默認權限變為664。

若要把umask改回來,具體操作方法如下:

# umask 022

# touch test5

# ls -l test5

-rw-r--r--. 1 root root 0 1月 30 22:12 test5

不要將計算方法換算成數字去做減法。看起來沒問題,但有時會出錯。比如當umask值為033時,文件的默認權限則為666-033=633,

但實際權限應為rw-rw-rw- - ----wx-wx=rw-r--r--=644

umask可以在/etc/bashrc裏面更改,默認情況下,root的umask值為022,而一般使用則為002。可寫權限非常重要,因此預設會去掉可寫權限。

(四)隱藏權限lsattr/chattr

1.lsattr命令(list attribute):用於讀取文件或目錄的特殊權限。

格式:lsattr [-aR] [文件/目錄名]。

-a:類似於ls -a的選項,即連同隱藏文件一同列出。

-R:連同子目錄的數據一同列出。

2.chattr命令(change attribute)

格式:chattr [+-=] [文件或目錄名],其中,+-和=分別表示增加、減少和設定。

選項:

A:增加該屬性後,表示文件或目錄的atime將不可修改。

s:增加該屬性後,會將數據同步寫入磁盤中。

a:增加該屬性後,表示只能追加不能刪除,非root用戶不能設定該屬性。

c:增加該屬性後,表示自動壓縮該文件,讀取時會自動解壓。

i:增加該屬性後,表示文件不能刪除,重命名,設定鏈接,寫入以及新增數據。

常用選項為a和i兩個選項。

隱藏權限ls看不到。


八、文件權限和目錄權限chmod;更改所有者和所屬組chown;umask;隱藏權限