修改權限命令chmod
chmod [選項] 模式 文件名
選項:-R遞歸修改權限
模式:
模式分爲兩類:
1.ugoa
字母依次代表所屬人,所屬組,其他人和所有人(全部人)。
在這個模式下,使用+-增加或者刪除某個權限即可。
例如:
chmod u+x 文件名
意思即爲所屬人增加執行權限。
這種模式使用的並不常見,需要事先知道文件的權限。
2.421模式
意思即爲用數字421表示權限,r爲4,w爲2,x爲1。
某個組的權限用他們的權限的和表示。
例如,修改所屬人的權限爲7,即所屬人的權限爲rwx。
因爲4,2,1分別代表二進制數字,所以求和並不會產生歧義。
這個模式是常用的修改權限模式。
常用的權限:
777 最高權限
644 普通文件權限
755 執行文件權限
等等。
權限的作用:
權限對於文件和目錄具有不同的作用,雖然好像都是rwx,但是對於文件和目錄的作用的表現形式是不同的。
我們知道,Linux文件系統存儲文件會在表中創建一個項,這個表叫Inode Table。
其他的字段在這裏我都不關注,只關注inode-no編號和pointer兩個字段。
存儲的文件會大致是這樣的形式。
目錄內容指向文件,文件內容指向某一塊區域,包含實際內容。
所以對於文件,權限的作用如下:
r: 讀取文件內容
w: 編輯,新增,修改文件內容
x: 執行文件
需要注意的是,對於文件,即使有w權限,我們也無法刪除這個文件,只能對文件內容進行修改。
對於目錄:
r:可以查詢目錄下包含哪些文件
w:可以修改目錄結構。例如刪除某個文件,創建某個文件
x:進入目錄
到這裏我們就知道了,權限對於文件來說,就是操作文件本身,x就是進入pointer去執行。
所以r,w都只能對文件本身進行修改,而刪除文件等是修改了上一級目錄的結構。
對於文件來說:最高權限爲x。
對於目錄來說:最高權限爲w。
權限我們知道如何設置了。那麼我們需要對用戶進行分類分組等等操作。
修改文件所有者:chown(change owner)
chown 用戶名 文件名
修改文件所屬組:chgrp(change group)
chgrp 組名 文件名
默認權限
在linux中,一個剛剛創建的文件,使用touch創建出來的文件是有一個默認權限的,即爲644。
在windows系統中,也是存在默認權限的,windows系統中使用的是繼承權限,繼承上一級目錄中的權限。
在Linux中如何查看默認權限呢?
使用umask命令即可查看默認權限。
[root@localhost ~]# umask
0022
這個是什麼意思呢?
第一個0:文件特殊權限
第二個0:讀權限
第一個2:寫權限
第二個2:執行權限。
再其次我們需要只要一些規則:
對於文件:
1.默認不能建立執行文件
2.默認文件最大權限爲666
對於目錄:
1.默認最大權限爲777
到這裏我們還是不知道默認權限是怎麼來的?
實際上默認權限是當前文件最大權限與umask設置的權限做邏輯異或運算得到的權限。
例如:
對於文件默認爲666。即4+2,4+2,4+2。在二進制中即爲110,110,110。
而umask設置的默認權限爲022。二進制即爲000,010,010。
做邏輯異或運算得到什麼呢?
最終就得到110,100,100.也就是644。可以簡單的理解爲減法。
同樣的,目錄得到的默認權限即爲111,101,101.也就是755。
我們可以修改umask的值來測試是否如此。
原本:
[root@localhost ~]# mkdir test
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1209 Apr 25 11:20 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 May 3 16:18 test
[root@localhost ~]#
修改:
[root@localhost ~]# umask 0000
[root@localhost ~]# umask
0000
[root@localhost ~]# mkdir test2
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1209 Apr 25 11:20 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 May 3 16:18 test
drwxrwxrwx. 2 root root 6 May 3 16:20 test2
[root@localhost ~]#
最後得到的test2目錄爲777。使用umask修改的值爲臨時修改,如果要永久修改,可以到/etc/profile文件下進行修改。