天天看點

【一天一個shell指令】文本操作系列-chmod

先來熟悉下權限,以上一個例子comm下的文檔為例 

$ls -l 

-rw-rw-r-- 1 yjplxq yjplxq   36  7月 30 22:40 A.txt 

-rw-rw-r-- 1 yjplxq yjplxq   27  7月 30 22:41 B.txt 

-rw-rw-r-- 1 yjplxq yjplxq 1231  7月 30 22:45 comm.txt

-rwxrwxr-x 1 yjplxq yjplxq    0  7月 31 11:22 comm.sh

drw-rw-r-- 1 yjplxq yjplxq 1231 7月 30 22:45 subcomm

第一列講解: 

 "-" 指普通檔案

"d" 指目錄

"c" 指字元裝置

"b" 塊裝置

"l" 字元連接配接 

"s" 套接字 

"p" 管道

第一列剩下部分分為三組,第一組三個字元(rwx)代表使用者權限,第二組對應使用者組權限,第三組對應其他使用者權限。

權限簡述:

r 指read 讀權限

w 指write 寫權限

x 指execute 執行

S  隻用于替換“x”權限位 setuid or setgid

T  隻用于替換“x”權限位 粘滞位 目錄設定了粘滞位,隻有建立該目錄的使用者才能删除目錄檔案

 下面一起熟悉下chmod

chmod 用來改變你的操作權限,全稱:change modle. 非常好記。

熟悉下--help:

用法:chmod [選項]... 模式[,模式]... 檔案... 

或:chmod [選項]... 八進制模式 檔案... 

或:chmod [選項]... --reference=參考檔案 檔案... 

将每個檔案的模式更改為指定值。

  -c, --changes        類似 --verbose,但隻在有更改時才顯示結果 

      --no-preserve-root    不特殊對待根目錄(預設) 

      --preserve-root        禁止對根目錄進行遞歸操作 

  -f, --silent, --quiet    去除大部份的錯誤資訊 

  -v, --verbose        為處理的所有檔案顯示診斷資訊 

      --reference=參考檔案    使用指定參考檔案的模式,而非自行指定權限模式 

  -R, --recursive        以遞歸方式更改所有的檔案及子目錄 

      --help        顯示此幫助資訊并退出 

      --version        顯示版本資訊并退出

每種 MODE 都應屬于這類形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。 

解讀:

1. 八進制模式檔案

聽着名詞有點大,其實很簡單。

r=4 w=2 x=1 是以如果你看到這個表達式:

rwxrw-r-- 實際上可表示為764

那麼你可以這樣 chmod 764 ${filename} 此時filename使用者有了讀寫執行權限,而使用者組有了讀寫權限,其他使用者隻有讀的權限。 

2. --reference=參考檔案

你可以設定一個檔案的權限作為模闆,然後

chmod --reference=${參考檔案} ${被修改檔案}

3. 每種mode都應該屬于"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。

舉例:

3.1.chmod o=u filename #filename其他使用者有和使用者同樣的權限

3.2.a指的是all chmod a+x filename #filaname所有使用者增加執行權限

實戰技巧:

1. 遞歸修改目前目錄下所有權限

$chmod 777 . –R

2. 制定權限模闆  如u7.tl為 使用者讀寫執行權限模闆

$chmod --reference=參考檔案 的方式

3. 設定粘滞位

$chmod a+t directory_name

chmod算是必須掌握,經常用到,次數不算頻繁的一個操作(感覺沖突是吧),呵呵。

相關指令:chown, w, who

<a href="http://down.51cto.com/data/2361124" target="_blank">附件:http://down.51cto.com/data/2361124</a>

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/yjplxq/948864,如需轉載請自行聯系原作者