每天一個linux命令:chmod


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、文字設定法:

image

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
示例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  *
示例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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM