一天一個shell命令 linux文本操作系列-chmod命令用法_linux shell

來源:互聯網
上載者:User

先來熟悉下許可權,以上一個例子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

chmod----改變一個或多個檔案的存模數式(mode)

chmod [options] mode files

只能檔案屬主或特權使用者才能使用該功能來改變檔案存模數式。mode可以是數字形式或以who opcode permission形式表示。who是可選的,預設是a(所有使用者)。只能選擇一個opcode(作業碼)。可指定多個mode,以逗號分開。
options:
-c,--changes
只輸出被改變檔案的資訊
-f,--silent,--quiet
當chmod不能改變檔案模式時,不通知檔案的使用者
--help
輸出協助資訊。
-R,--recursive
可遞迴遍曆子目錄,把修改應到目錄下所有檔案和子目錄
--reference=filename
參照filename的許可權來設定許可權
-v,--verbose
無論修改是否成功,輸出每個檔案的資訊
--version
輸出版本資訊。
who
u
使用者
g

o
其它
a
所有使用者(預設)
opcode
+
增加許可權
-
刪除許可權
=
重新分配許可權
permission
r

w

x
執行
s
設定使用者(或組)的ID號
t
設定粘著位(sticky bit),防止檔案或目錄被非屬主刪除
u
使用者的當前許可權
g
組的當前許可權
o
其他使用者的當前許可權
作為選擇,我們多數用三位八位元字的形式來表示許可權,第一位指定屬主的許可權,第二位指定組許可權,第三位指定其他使用者的許可權,每位通過4(讀)、2(寫)、1(執行)三種數值的和來確定許可權。如6(4+2)代表有讀寫權,7(4+2+1)有讀、寫和執行的許可權。
還可設定第四位,它位於三位許可權序列的前面,第四位元字取值是4,2,1,代表意思如下:
4,執行時設定使用者ID,用於授權給基於檔案屬主的進程,而不是給建立此進程的使用者。
2,執行時設定使用者組ID,用於授權給基於檔案所在組的進程,而不是基於建立此進程的使用者。

1,設定粘著位。

執行個體:

$ chmod u+x file                      給file的屬主增加執行許可權
$ chmod 751 file                      給file的屬主分配讀、寫、執行(7)的許可權,給file的所在組分配讀、執行(5)的許可權,給其他使用者指派執行(1)的許可權
$ chmod u=rwx,g=rx,o=x file      上例的另一種形式
$ chmod =r file                     為所有使用者指派讀許可權
$ chmod 444 file                   同上例
$ chmod a-wx,a+r   file          同上例
$ chmod -R u+r directory           遞迴地給directory目錄下所有檔案和子目錄的屬主分配讀的許可權
$ chmod 4755                            設定用ID,給屬主分配讀、寫和執行許可權,給組和其他使用者指派讀、執行的許可權。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.