先來熟悉下權(quán)限,以上一個例子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" 指字符設(shè)備
"b" 塊設(shè)備
"l" 字符連接
"s" 套接字
"p" 管道
第一列剩下部分分為三組,第一組三個字符(rwx)代表用戶權(quán)限,第二組對應(yīng)用戶組權(quán)限,第三組對應(yīng)其他用戶權(quán)限。
權(quán)限簡述:
r 指read 讀權(quán)限
w 指write 寫權(quán)限
x 指execute 執(zhí)行
S 只用于替換“x”權(quán)限位 setuid or setgid
T 只用于替換“x”權(quán)限位 粘滯位 目錄設(shè)置了粘滯位,只有創(chuàng)建該目錄的用戶才能刪除目錄文件
下面一起熟悉下chmod
chmod 用來改變你的操作權(quán)限,全稱:change modle. 非常好記。
熟悉下--help:
用法:chmod [選項]... 模式[,模式]... 文件...
或:chmod [選項]... 八進制模式 文件...
或:chmod [選項]... --reference=參考文件 文件...
將每個文件的模式更改為指定值。
-c, --changes 類似 --verbose,但只在有更改時才顯示結(jié)果
--no-preserve-root 不特殊對待根目錄(默認)
--preserve-root 禁止對根目錄進行遞歸操作
-f, --silent, --quiet 去除大部份的錯誤信息
-v, --verbose 為處理的所有文件顯示診斷信息
--reference=參考文件 使用指定參考文件的模式,而非自行指定權(quán)限模式
-R, --recursive 以遞歸方式更改所有的文件及子目錄
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
每種 MODE 都應(yīng)屬于這類形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。
解讀:
1. 八進制模式文件
聽著名詞有點大,其實很簡單。
r=4 w=2 x=1 所以如果你看到這個表達式:
rwxrw-r-- 實際上可表示為764
那么你可以這樣 chmod 764 ${filename} 此時filename用戶有了讀寫執(zhí)行權(quán)限,而用戶組有了讀寫權(quán)限,其他用戶只有讀的權(quán)限。
2. --reference=參考文件
你可以設(shè)置一個文件的權(quán)限作為模板,然后
chmod --reference=${參考文件} ${被修改文件}
3. 每種mode都應(yīng)該屬于"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。
舉例:
3.1.chmod o=u filename #filename其他用戶有和用戶同樣的權(quán)限
3.2.a指的是all chmod a+x filename #filaname所有用戶增加執(zhí)行權(quán)限
實戰(zhàn)技巧:
1. 遞歸修改當前目錄下所有權(quán)限
$chmod 777 . –R
2. 制定權(quán)限模板 如u7.tl為 用戶讀寫執(zhí)行權(quán)限模板
$chmod --reference=參考文件 的方式
3. 設(shè)置粘滯位
$chmod a+t directory_name
chmod算是必須掌握,經(jīng)常用到,次數(shù)不算頻繁的一個操作(感覺矛盾是吧),呵呵。
相關(guān)命令:chown, w, who
chmod----改變一個或多個文件的存取模式(mode)
chmod [options] mode files
只能文件屬主或特權(quán)用戶才能使用該功能來改變文件存取模式。mode可以是數(shù)字形式或以who opcode permission形式表示。who是可選的,默認是a(所有用戶)。只能選擇一個opcode(操作碼)??芍付ǘ鄠€mode,以逗號分開。
options:
-c,--changes
只輸出被改變文件的信息
-f,--silent,--quiet
當chmod不能改變文件模式時,不通知文件的用戶
--help
輸出幫助信息。
-R,--recursive
可遞歸遍歷子目錄,把修改應(yīng)到目錄下所有文件和子目錄
--reference=filename
參照filename的權(quán)限來設(shè)置權(quán)限
-v,--verbose
無論修改是否成功,輸出每個文件的信息
--version
輸出版本信息。
who
u
用戶
g
組
o
其它
a
所有用戶(默認)
opcode
+
增加權(quán)限
-
刪除權(quán)限
=
重新分配權(quán)限
permission
r
讀
w
寫
x
執(zhí)行
s
設(shè)置用戶(或組)的ID號
t
設(shè)置粘著位(sticky bit),防止文件或目錄被非屬主刪除
u
用戶的當前權(quán)限
g
組的當前權(quán)限
o
其他用戶的當前權(quán)限
作為選擇,我們多數(shù)用三位八進制數(shù)字的形式來表示權(quán)限,第一位指定屬主的權(quán)限,第二位指定組權(quán)限,第三位指定其他用戶的權(quán)限,每位通過4(讀)、2(寫)、1(執(zhí)行)三種數(shù)值的和來確定權(quán)限。如6(4+2)代表有讀寫權(quán),7(4+2+1)有讀、寫和執(zhí)行的權(quán)限。
還可設(shè)置第四位,它位于三位權(quán)限序列的前面,第四位數(shù)字取值是4,2,1,代表意思如下:
4,執(zhí)行時設(shè)置用戶ID,用于授權(quán)給基于文件屬主的進程,而不是給創(chuàng)建此進程的用戶。
2,執(zhí)行時設(shè)置用戶組ID,用于授權(quán)給基于文件所在組的進程,而不是基于創(chuàng)建此進程的用戶。
1,設(shè)置粘著位。
實例:
$ chmod u+x file 給file的屬主增加執(zhí)行權(quán)限
$ chmod 751 file 給file的屬主分配讀、寫、執(zhí)行(7)的權(quán)限,給file的所在組分配讀、執(zhí)行(5)的權(quán)限,給其他用戶分配執(zhí)行(1)的權(quán)限
$ chmod u=rwx,g=rx,o=x file 上例的另一種形式
$ chmod =r file 為所有用戶分配讀權(quán)限
$ chmod 444 file 同上例
$ chmod a-wx,a+r file 同上例
$ chmod -R u+r directory 遞歸地給directory目錄下所有文件和子目錄的屬主分配讀的權(quán)限
$ chmod 4755 設(shè)置用ID,給屬主分配讀、寫和執(zhí)行權(quán)限,給組和其他用戶分配讀、執(zhí)行的權(quán)限。
您可能感興趣的文章:- Linux中chown與chmod兩個命令的區(qū)別詳解
- Linux中改變文件權(quán)限的chmod命令詳析
- 修改linux文件權(quán)限命令:chmod命令詳解
- linux仿寫chmod命令
- linux中chmod命令用法詳解