Linux修改權限
chmod
在linux中,只有root和文件的所有者可以修改權限,修改權限命令用的是chmod,這個命令有兩個方式
1:chmod {u g o}+-={r w x} +文件位置
在這個命令中,u代表所有者,g代表所屬組,o代表其他組。r代表讀權限,w代表寫權限,x代表執行權限。+代表添加一個權限,-代表減少一個權限,=直接賦予權限。比如:
chmod u+x,g-x,o=r代表 給“所有者”添加一個執行權限,給“所屬組”去掉執行權限,讓“其他人”只有一個讀的權限(不管他以前是什麼權限)。這樣一看應該很明顯了吧。
2:chmod 777 +文件位置
在說這個方式之前,需要說一下權限所代表的數字
權限 | 數值 |
r | 4 |
w | 2 |
x | 1 |
感覺光說不是很清楚,直接上命令吧
比如:chmod 761 /tmp/test
解釋:給這個test目錄賦權限,所有者權限爲7,也就是說,所有者擁有讀寫和執行的權限(7=4+2+1),所屬組有讀和寫的權限(6=4+2),其他人有執行的權限(1)也就是drwxrw-r--。因爲是目錄,所以是d開頭。
chmod 700 /tmp/test
解釋:給這個test目錄賦權限,所有者權限爲7,也就是說,所有者擁有讀寫和執行的權限(7=4+2+1),所屬組和其他人沒有權限。也就是drwx------
直接看兩個例子,應該就很明顯了吧.
Ok,最後在說一下文件的rwx和目錄的rwx
權限 | 文件 | 目錄 |
r | 可以查看文件的內容 | 可以列出目錄的內容 |
w | 可以修改文件 | 可以在目錄中創建,刪除文件,也可以修改文件的名稱 |
x | 可以執行文件 | 可以進入目錄 |
對上面的權限做一個小的測試。
管理員賬號創建一個目錄,test,並在目錄下創建一個文件Test.t 現在,將目錄test的權限修改爲777,Test.t的權限爲700。問:現在新建一個普通用戶,他能不能刪除Test.t?
文件的權限是700,普通用戶沒有修改文件內容的權限,而文件所在目錄的權限是777,也就是說,所有人都有權限操作這個目錄,普通用戶也就有w權限,也就是說,它可以在目錄中新建或者刪除文件,所以,是可以刪除的。
chown
chown是用來修改所有者的,格式:chown +所有者 +操作對象
但是當你執行這個命令的時候,可能會發現報錯,因爲只有root纔可以改變所有者。
可以看到上黃色部分,當切換到root時,再執行chown命令,就可以更換所有者了。
chgrp
chgrp用來修改所屬組:chgrp 用戶組 文件或目錄。
每個文件或者目錄都會有一個默認的用戶組,默認用戶組的名字和所有者是一樣的,也就是缺省組(Emmmmmm,我這裏也不是很清楚)。當你想要改變一個文件或者目錄的所屬組的時候,直接chgrp +組名 +文件位置。
如圖,我先創建一個用戶組,叫 hdg,在通過chgrp hdg /tmp/hj0326將hj0326的所屬組由mytest改爲hdg,不過要注意,我能做改變所屬組,是因爲我當前登錄的是root賬號。
umask
umask是一個權限管理命令。
最常用的一個功能:umask -S,看好,這個是大寫的S:
執行umask -S,你會看到u=rwx,g=rx,o=rx,這個一看就很好理解了,所有者權限爲rwx,用戶組權限爲rw,其他人爲rx。其實,這個權限的分配就是你新建目錄或者文件的默認權限。當我們創建一個目錄的時候:
會發現,他的權限就是rwxr-xr-x,正好是我們執行umask -S看到的。既然我們可以看到默認的權限分配,當然,我們也可以一修改它。
就用umask +數字。不過在說這個之前,還有一些東西需要介紹一下。
如過我們直接輸入umask
就係那個上圖,你會看到四個數字0022。第一個數字0,代表特殊權限,具體的呢,...我就不知道了。不過後邊這三個022,它和我們的默認權限是有關係的。咱們默認的權限是u=rwx,g=rx,o=rx,也就是755,發現沒? 一個022,一個755!!!! 發現沒? 沒發現吧,,我就知道。其實是他們倆 相加是777。也就是說,如果你想要你的默認權限爲755(u=rwx,g=rx,o=rx),那麼你就需要輸入這個命令:umask 022。比如如果我想把默認的權限改爲rwxr-xr--,也就是我需要把權限改爲754,那麼我就需要執行umask 023。
這樣當我再創建一個目錄的時候,他就會變成rwxr-xr--了。不過Linux的默認權限還是很合理的,建議大家不要修改。
還有一個事!當我們創建一個目錄的時候,他的默認的權限是755,也就是rwxr-xr-x。可是看一下下面這張圖
默認的權限是022,但是我創建出來的文件的權限是rw-r--r--,對比一下會發現,所有人的權限都少了一個x權限,這是因爲,在linux中,新建的文件時沒有執行權限的。所以,當你新建一個文件的時候,他的權限就變成了rw-r--r--。
ok!打完收工