chmod命令用來變動文件或目錄的權限。在UNIX系統家族裏,文件或目錄權限的控制分別以讀取、寫入、執行3種通常權限來區分,另有3種特殊權限可供運用。用戶可使用chmod指令去變動文件與目錄的權限,設置方式採用文字或數字代號皆可。符號鏈接的權限沒法變動,若是用戶對符號鏈接修改權限,其改變會做用在被鏈接的原始文件。linux
權限範圍的表示法以下:vim
u User,即文件或目錄的擁有者;ui
g Group,即文件或目錄的所屬羣組;spa
o Other,除了文件或目錄擁有者或所屬羣組以外,其餘用戶皆屬於這個範圍;.net
a All,即所有的用戶,包含擁有者,所屬羣組以及其餘用戶;遞歸
r 讀取權限,數字代號爲「4」;get
w 寫入權限,數字代號爲「2」;class
x 執行或切換權限,數字代號爲「1」;擴展
- 不具任何權限,數字代號爲「0」;file
s 特殊功能說明:變動文件或目錄的權限。
選項:
-f 不顯示錯誤信息
-R 遞歸處理,將指令目錄下的全部文件以及子目錄一併處理
-v 顯示指令執行過程
<權限範圍>+<權限設置>:開啓權限範圍的文件或目錄的該選項權限設置;
chmod a/u/g/o +r/w/x
<權限範圍>-<權限設置>:關閉權限範圍的文件或目錄的該選項權限設置;
chmod a/u/g/o - r/w/x
<權限範圍>=<權限設置>:指定權限範圍的文件或目錄的該選項權限設置;
chmod a/u/g/o=rwx/rw/rx/r/...
參數:
權限模式:指定文件的權限模式;
文件:要改變權限的文件。
知識擴展和實例
Linux用 戶分爲:擁有者、組羣(Group)、其餘(other),Linux系統中,預設的情況下,系統中全部的賬號與通常身份使用者,以及root的相關信 息, 都是記錄在/etc/passwd文件中。每一個人的密碼則是記錄在/etc/shadow文件下。 此外,全部的組羣名稱記錄在/etc/group內!
linux文件的用戶權限的分析圖:
例:rwx rw- r--
r=讀取屬性 //值=4
w=寫入屬性 //值=2
x=執行屬性 //值=1
chmod u+x,g+w f01 //爲文件f01設置本身能夠執行,組員能夠寫入的權限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01 //對文件f01的u,g,o都設置可執行屬性
文件的權限根據用戶分爲:全部者,屬組,其餘。ls -l查看文件的詳細信息時,第一列第一個字符表示文件類型,後面9個字符每三位一組表示權限。最後的.(點)表示受制於selinux,selinux開啓時全部建立的文件都會有.在/etc/selinux/config中關閉selinux重啓後建立的文件不會有.(點)
rwxrwxrwx 777
rwxr-xr-x 755
rw-r--r-- 644
chmod 777 =chmod u=rwx,g=rwx,o=rwx =chmod a=rwx
chmod 755 = chmod u=rwx,g=rx,o=rx
chmod 644 = chmod u=rw,g=r,o=r
chmod操做只針對文件或目錄自己,chmod -R 目錄下的文件以及子目錄批量更改此權限
chown修改文件或目錄的全部者,屬組。用戶能夠是用戶名或用戶id;屬組能夠是組名或組id;目標文件是以空格分開的要改變權限的文件列表,支持通配符。系統管理員常用chown命令,在將文件拷貝到另外一個用戶的目錄下以後,讓用戶擁有使用該文件的權限。普通用戶不能將本身的文件改變成其餘的全部者,其操做權限通常爲管理員。
1.命令格式:
chown [選項]... [全部者][:[組]] 文件...
2.選項:
-R 目錄下的文件以及子目錄都修改
-v 顯示詳細的處理信息
--reference=<目錄或文件> 按指定的目錄或文件做爲參考,把目標目錄或文件的全部者,屬組設置成和參考
文件或目錄相同。
--from=<當前用戶:當前羣組> 只有當前用戶和羣組跟指定的用戶和羣組相同時才進行改變
3.使用實例:
1.更改/tmp/file文件的全部者爲gavin
[root@localhost ~]# ll /tmp/file
-rw-r--r--. 1 root root 0 6月 27 19:01 /tmp/file
[root@localhost ~]# chown gavin /tmp/file
[root@localhost ~]# ll /tmp/file
-rw-r--r--. 1 gavin root 0 6月 27 19:01 /tmp/file
2.更改/tmp/file文件的屬組爲gavin
chown :gavin /tmp/file
3.更改/tmp/gavin目錄的全部者,屬組爲gavin
chown gavin:gavin /tmp/gavin
4.更改/tmp/gavin目錄的全部者,屬組與/tmp/zhang目錄相同
chown --reference=/tmp/zhang /tmp/gavin
[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin
drwxr-xr-x. 2 root root 6 6月 27 19:09 /tmp/gavin
drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang
[root@localhost ~]# chown --reference=/tmp/zhang /tmp/gavin
[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin
drwxr-xr-x. 2 zhang zhang 6 6月 27 19:09 /tmp/gavin
drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang
5.更改/tmp/gavin目錄的全部者,屬組都爲gavin,而且目錄下的子文件,子目錄也修改
chown -R gavin:gavin /tmp/gavin
6.當全部者和屬組爲gavin:gavin時纔會修改
chown --from=gavin:gavin root:root /tmp/zhang /tmp/gavin
[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin
drwxr-xr-x. 3 gavin gavin 29 6月 27 19:12 /tmp/gavin
drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang
[root@localhost ~]# chown --from=gavin:gavin root:root /tmp/zhang /tmp/gavin
[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin
drwxr-xr-x. 3 root root 29 6月 27 19:12 /tmp/gavin
drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang
chgrp命令修改文件或目錄的屬組:
chgrp gavin /tmp/gavin 把/tmp/gavin的屬組改爲gavin
chgrp -R gavin /tmp/gavin 把/tmp/gavin目錄以及下面的文件,子目錄的屬組都改爲gavin
umask通常是用在初始建立一個目錄或者文件的時候賦予他們的權限。
這裏要說明兩點:
一、針對目錄來講x權限表明能夠進入該目錄,因此說對於這個權限初始賦值是沒什麼問題的;
二、針對文件的x的權限表明執行,這個風險過高,因此通常權限初始賦值必須去掉x的;
查看當前umask值:
[root@localhost ~]# umask
0022
上面四個數字表明是賦值初始化準備丟棄的權限。(相對應文件來講,x權限就算沒說明出來丟棄同樣必須默認丟棄)
目錄:rwxrwxrwx 減相對應的值
文件:rw-rw-rw- 減相對應的值,(-減r或w或x仍然是-)
第一個0表明suid 丟棄的權限;
第二個0表明本文件/目錄擁有者什麼權限都沒丟棄(若是是文件,x權限除外,爲何看看上面解釋);
第三個2表明本文件/目錄的用戶組丟棄了w權限(若是是文件那麼它的x權限也丟棄);
第三個2表明本文件/目錄的其餘用戶能使用的權限只有有r和x(文件除外)。
綜合上面所說若是你新建立一個文件那麼它的權限是:-wr-w--w-- 便是:644
若是你新建立一個目錄的話那麼它的權限是:dwrxw-xw-x 便是:755
注:不要用目錄777或者文件666減對應的umask值,由於當umask=0003時,666-003=663這樣是不對的,應該是rw-rw-rw- 減 -------wx 等於rw-rw-r-- =664
若是你要修改unask的值直接:
[root@www ~]# umask 002 >>>只在當前終端下生效
有時候你發現用root權限都不能修改某個文件,大部分緣由是曾經用chattr命令鎖定該文件了。chattr命令的做用很大,其中一些功能是由Linux內核版原本支持的,lsattr命令是顯示chattr命令設置的文件屬性。
lsattr經常使用選項:
lsattr -R 查看目錄以及目錄下文件是否存在隱藏權限
lsattr -d 查看目錄自己
lsattr -a 查看所有文件或目錄包括隱藏的。
chattr經常使用選項:
chattr +i >>>增長隱藏i權限
chattr -i >>>取消隱藏i權限
chattr +a >>>增長隱藏a權限
chattr -a >>>取消隱藏a權限
i權限:
做用在文件:文件不能刪除,不能移動,不能重命名,不能touch修改時間屬性,不能修改內容。不能設定
硬連接,能夠建立軟連接。
做用在目錄:不能(刪除,移動,重命名,touch修改時間)此目錄,能夠給此目錄建立軟連接。目錄下的子文
件,子目錄不能刪除,不能移動,不能重命名,能夠touch修改時間屬性,能夠修改已存在文件
的內容,能夠給文件建立軟連接和硬連接。
a權限:
做用在文件:文件不能移動,不能刪除,不能重命名,不能vim直接編輯修改,不能建立硬連接;能夠touch
修改時間屬性,能夠>>追加內容,能夠建立軟連接。
做用在目錄:目錄自己不能刪除移動重命名,能夠建立軟連接,能夠touch修改目錄時間;目錄下的文件以及
子目錄不能移動刪除重命名,能夠建立目錄與文件,能夠修改文件內容,能夠touch,能夠創
建軟連接和硬連接