1、命令簡介
chmod(Change mode) 用來將每個文件的模式更改為指定值。Linux/Unix 的檔案調用權限分為三級 : 檔案擁有者、群組、其他。
u :目錄或者文件的當前的用戶
g :目錄或者文件的當前的群組
o :除了目錄或者文件的當前用戶或群組之外的用戶或者群組
a :所有的用戶及群組
Linux的文件基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。另外,有一些程序屬性的執行部分不是x,而是s,這表示執行這個程序的使用者,臨時可以有和擁有者一樣權力的身份來執行該程序。
[root@oracledb dir1]# ls -l backup.sh -rwxr-xr-x 1 root root 0 4月 24 15:04 backup.sh
以rwx(Owner)r-x(Group)r-x(Other)為例:這個例子表示的權限是:使用者自己可讀,可寫,可執行;同一組的用戶可讀,不可寫,可執行;其它用戶可讀,不可寫,可執行。
權限對文件的重要性
r (read):可讀取此一文件的實際內容,如讀取文本文件的文字內容等;
w (write):可以編輯、新增或者是修改該文件的內容(但不含刪除該文件);
x (execute):該文件具有可以被系統執行的權限。linux下文件是否可以執行和擴展名無關
權限對目錄的重要性
r (read contents in directory): 表示具有讀取目錄結構列表的權限,所以當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的文件名數據。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來! w (modify contents of directory): 表示你具有移動該目錄結構列表的權限,也就是底下這些權限: 建立新的文件與目錄; 刪除已經存在的文件與目錄(不論該文件的權限為何!) 將已存在的文件或目錄進行更名; 搬移該目錄內的文件、目錄位置。 x (access directory): 目錄不可以被執行,目錄的x代表的是用戶能否進入該目錄成為工作目錄的用途! 所謂的工作目錄(work directory)就是你目前所在的目錄!舉例來說,當你登入Linux時, 你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是cd(change directory)!
權限的數字表示法
r 讀取權限,數字代號為“4”;
w 寫入權限,數字代號為“2”;
x 執行或切換權限,數字代號為“1”;
2、用法
用法:chmod [選項]... 模式[,模式]... 文件... 或:chmod [選項]... 八進制模式 文件... 或:chmod [選項]... --reference=參考文件 文件...
1、文字設定法:
2、數字設定法
按照順序(u)(g)(o),將權限轉換成3個從0到7的八進制數字,如若要rwx屬性則4+2+1=7 ; 若要rw-屬性則4+2=6;
chmod 3個從0到7的八進制數 文件或目錄
3、選項
-c, --changes 類似 --verbose,但只在有更改時才顯示結果 --no-preserve-root 不特殊對待根目錄(默認) --preserve-root 禁止對根目錄進行遞歸操作 -f, --silent, --quiet 去除大部份的錯誤信息 -v, --verbose 為處理的所有文件顯示診斷信息 --reference=參考文件 使用指定參考文件的模式,而非自行指定權限模式
-R, --recursive 以遞歸方式更改所有的文件及子目錄 --help 顯示此幫助信息並退出 --version 顯示版本信息並退出 每種 MODE 都應屬於這類形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。
4、示例
示例1:查看權限
[root@oracledb dir1]# ls -l
總用量 0
-rw-r--r-- 1 root root 0 4月 24 15:04 backup.sh
示例2:將backup.sh設定為只有該檔案擁有者可以執行
chmod u+x backup.sh
chmod u+x backup.sh
示例3:同時修改不同用戶權限
chmod ug+w,o-x backup.sh
示例4:刪除文件權限
chmod a-x backup.sh
示例5:使用“=”設置權限
chmod u=x backup.sh
示例6、根據數字修改權限
chmod 744 backup.sh
示例7、將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *
chmod -R a+r *
示例8、將backup2.sh的權限改為和backup1.sh相同
[root@oracledb dir1]# ll
總用量 0
-rwxr-xr-x 1 root root 0 4月 24 15:04 backup1.sh
-rw-r--r-- 1 root root 0 4月 25 20:27 backup2.sh
[root@oracledb dir1]# chmod --reference=backup1.sh backup2.sh
[root@oracledb dir1]# ll
總用量 0
-rwxr-xr-x 1 root root 0 4月 24 15:04 backup1.sh
-rwxr-xr-x 1 root root 0 4月 25 20:27 backup2.sh