每(mei)天一個(ge)linux命(ming)令(27):linux chmod命(ming)令
chmod命令用于改變(bian)linux系統文(wen)件或目(mu)錄(lu)的訪(fang)問權限。用它控制文(wen)件或目(mu)錄(lu)的訪(fang)問權限。該命令有(you)兩種(zhong)用法。一種(zhong)是包含字(zi)母和操(cao)作(zuo)符表達式的文(wen)字(zi)設定法;另一種(zhong)是包含數(shu)字(zi)的數(shu)字(zi)設定法。
Linux系統中的每個(ge)文(wen)件和目(mu)錄都(dou)有訪問許可權限,用它(ta)來(lai)確定誰可以通過何(he)種方式(shi)對文(wen)件和目(mu)錄進行訪問和操作。
文(wen)(wen)件或目(mu)錄的(de)(de)訪問權(quan)限(xian)分為(wei)只讀,只寫(xie)和(he)可執(zhi)行(xing)(xing)三種。以文(wen)(wen)件為(wei)例,只讀權(quan)限(xian)表(biao)示只允許(xu)讀其內容(rong),而禁止對(dui)其做任何的(de)(de)更改操作(zuo)。可執(zhi)行(xing)(xing)權(quan)限(xian)表(biao)示允許(xu)將該文(wen)(wen)件作(zuo)為(wei)一(yi)個程序執(zhi)行(xing)(xing)。文(wen)(wen)件被創建時,文(wen)(wen)件所有(you)(you)者自動擁有(you)(you)對(dui)該文(wen)(wen)件的(de)(de)讀、寫(xie)和(he)可執(zhi)行(xing)(xing)權(quan)限(xian),以便于對(dui)文(wen)(wen)件的(de)(de)閱讀和(he)修(xiu)改。用戶(hu)也可根(gen)據需要把訪問權(quan)限(xian)設置為(wei)需要的(de)(de)任何組合。
有(you)三(san)種不同(tong)類(lei)型的用(yong)(yong)戶可(ke)對文(wen)件(jian)或目錄進行訪問(wen)(wen):文(wen)件(jian)所(suo)有(you)者,同(tong)組用(yong)(yong)戶、其他(ta)用(yong)(yong)戶。所(suo)有(you)者一(yi)般是文(wen)件(jian)的創建者。所(suo)有(you)者可(ke)以(yi)允許同(tong)組用(yong)(yong)戶有(you)權(quan)訪問(wen)(wen)文(wen)件(jian),還可(ke)以(yi)將文(wen)件(jian)的訪問(wen)(wen)權(quan)限賦予系統中的其他(ta)用(yong)(yong)戶。在這(zhe)種情況下,系統中每(mei)一(yi)位用(yong)(yong)戶都能訪問(wen)(wen)該(gai)用(yong)(yong)戶擁有(you)的文(wen)件(jian)或目錄。
每一文(wen)件(jian)或目錄的訪(fang)問權(quan)限(xian)都有三組,每組用三位表示,分別為(wei)文(wen)件(jian)屬主的讀(du)、寫(xie)和執(zhi)行(xing)權(quan)限(xian);與屬主同(tong)組的用戶的讀(du)、寫(xie)和執(zhi)行(xing)權(quan)限(xian);系(xi)統中(zhong)其他用戶的讀(du)、寫(xie)和執(zhi)行(xing)權(quan)限(xian)。當用ls -l命(ming)令顯示文(wen)件(jian)或目錄的詳(xiang)細信息(xi)時,最左(zuo)邊的一列(lie)為(wei)文(wen)件(jian)的訪(fang)問權(quan)限(xian)。 例(li)如:
命令:
ls -al
輸出(chu):
[root@localhost test]# ll -al
總計 316lrwxrwxrwx 1 root root 11 11-22 06:58 linklog.log -> log2012.log
-rw-r--r-- 1 root root 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log
-rw-r--r-- 1 root root 0 11-13 06:03 log2014.log
-rw-r--r-- 1 root root 0 11-13 06:06 log2015.log
-rw-r--r-- 1 root root 0 11-16 14:41 log2016.log
-rw-r--r-- 1 root root 0 11-16 14:43 log2017.log
我(wo)們以log2012.log為例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一(yi)列共(gong)有(you)10個位置,第一個(ge)(ge)(ge)字(zi)符指(zhi)定了文(wen)件類型。在通常意(yi)義上,一個(ge)(ge)(ge)目(mu)錄也(ye)是(shi)一個(ge)(ge)(ge)文(wen)件。如(ru)(ru)果第一個(ge)(ge)(ge)字(zi)符是(shi)橫(heng)線(xian),表(biao)示是(shi)一個(ge)(ge)(ge)非目(mu)錄的文(wen)件。如(ru)(ru)果是(shi)d,表(biao)示是(shi)一個(ge)(ge)(ge)目(mu)錄。從第二(er)個(ge)(ge)字符開始到第十個(ge)(ge)共9個字(zi)符,3個字(zi)符一組(zu),分(fen)別表(biao)示(shi)了3組(zu)用戶對(dui)文件或者目錄的(de)權限。權限字(zi)符用橫(heng)線代表空許可(ke),r代表(biao)只(zhi)讀,w代表(biao)寫,x代表(biao)可執行。
例(li)如(ru):
- rw- r-- r--
表示log2012.log是一(yi)個普(pu)通(tong)文件;log2012.log的屬主(zhu)有讀寫權限;與log2012.log屬主(zhu)同組的用戶(hu)(hu)只有讀權限;其他(ta)用戶(hu)(hu)也只有讀權限。
確定了一個文件(jian)(jian)的訪問(wen)權限后,用(yong)(yong)(yong)戶可以(yi)利(li)用(yong)(yong)(yong)Linux系統提(ti)供的chmod命令(ling)來重新設(she)定不(bu)同的訪問(wen)權限。也可以(yi)利(li)用(yong)(yong)(yong)chown命令(ling)來更改(gai)某個文件(jian)(jian)或(huo)目(mu)錄的所有者。利(li)用(yong)(yong)(yong)chgrp命令(ling)來更改(gai)某個文件(jian)(jian)或(huo)目(mu)錄的用(yong)(yong)(yong)戶組。
chmod命令是非常重要的(de)(de),用于改變文件(jian)或(huo)目錄(lu)的(de)(de)訪問權(quan)限。用戶(hu)用它控制文件(jian)或(huo)目錄(lu)的(de)(de)訪問權(quan)限。chmod命令詳細情況如下。
1. 命令格式:
[-cfvR] [--help] [--version] mode
2. 命(ming)令功能:
用于改變(bian)文件或目錄(lu)的訪(fang)問權限,用(yong)它控(kong)制文件或(huo)目錄的(de)訪問權限。
3. 命令參數:
必要參數:
-c 當(dang)發生改變(bian)時(shi),報告處理(li)信息
-f 錯誤信息不輸出
-R 處理指定目錄以及其(qi)子(zi)目錄下的所有文(wen)件
-v 運行時顯示詳細處理信息
選擇參數:
--reference=<目錄或者文件> 設(she)置成(cheng)具有指定目錄或者文件具有相同的權限
--version 顯示版本信息
<權(quan)(quan)限范圍>+<權(quan)(quan)限設(she)置> 使權(quan)(quan)限范圍內的(de)目錄或者(zhe)文件具(ju)有指定的(de)權(quan)(quan)限
<權(quan)限(xian)(xian)范圍>-<權(quan)限(xian)(xian)設置> 刪除(chu)權(quan)限(xian)(xian)范圍的目錄或者文件(jian)的指定權(quan)限(xian)(xian)
<權限(xian)(xian)范(fan)圍(wei)>=<權限(xian)(xian)設置> 設置權限(xian)(xian)范(fan)圍(wei)內的(de)目錄或者文件的(de)權限(xian)(xian)為(wei)指定的(de)值
權限(xian)范圍:
u :目錄或(huo)者文(wen)件的當前的用戶
g :目錄(lu)或者文件的(de)當前的(de)群(qun)組
o :除了目(mu)錄或者文件的當前(qian)用戶或群組(zu)之外的用戶或者群組(zu)
a :所(suo)有(you)的用(yong)戶及(ji)群組
權限代號:
r :讀權(quan)限,用(yong)數(shu)字4表示
w :寫權限,用數字2表示(shi)
x :執行權限,用(yong)數字1表示
- :刪除(chu)權限,用數字0表示
s :特殊權限
該命令有兩種(zhong)(zhong)用(yong)法(fa)。一種(zhong)(zhong)是(shi)包含(han)字母和操作符表(biao)達式的文字設定(ding)法(fa);另(ling)一種(zhong)(zhong)是(shi)包含(han)數字的數字設定(ding)法(fa)。
1). 文字設定法:
chmod [who] [+ | - | =] [mode] 文件名
2). 數字設(she)定法
我們(men)必須首(shou)先了解(jie)用數字(zi)表(biao)示(shi)的(de)屬(shu)(shu)性(xing)的(de)含義:0表(biao)示(shi)沒有權限(xian),1表(biao)示(shi)可(ke)執行權限(xian),2表(biao)示(shi)可(ke)寫(xie)權限(xian),4表(biao)示(shi)可(ke)讀(du)權限(xian),然后(hou)將其相加(jia)。所以數字(zi)屬(shu)(shu)性(xing)的(de)格(ge)式應為3個從0到7的(de)八進制數,其順序是(u)(g)(o)。
例如,如果想(xiang)讓某(mou)個(ge)文(wen)件的(de)屬主有(you)“讀/寫(xie)”二種權限,需要把4(可(ke)讀)+2(可(ke)寫(xie))=6(讀/寫(xie))。
數字設定法的一般形式為(wei):
chmod [mode] 文件(jian)名(ming)
數字(zi)與字(zi)符對應關系如下:
r=4,w=2,x=1
若要rwx屬性(xing)則4+2+1=7
若要(yao)rw-屬(shu)性則4+2=6;
若要r-x屬(shu)性則(ze)4+1=7。
4. 使用實例:
實例1:增加(jia)文件所有用戶組可執行權限
命(ming)令:
chmod a+x log2012.log
輸出:
[root@localhost test]# ls -al log2012.log
-rw-r--r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod a+x log2012.log
[root@localhost test]# ls -al log2012.log
-rwxr-xr-x 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]#
說明:
即設定文(wen)件(jian)log2012.log的屬(shu)性(xing)為(wei):文(wen)件(jian)屬(shu)主(zhu)(u) 增加執行權限;與文件屬主同(tong)組用戶(g) 增(zeng)加執行權限;其他用戶(o) 增加執行(xing)權限(xian)。
實例(li)2:同時修(xiu)改不(bu)同用戶權限
命令:
chmod ug+w,o-x log2012.log
輸出:
[root@localhost test]# ls -al log2012.log
-rwxr-xr-x 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod ug+w,o-x log2012.log
[root@localhost test]# ls -al log2012.log
-rwxrwxr-- 1 root root 302108 11-13 06:03 log2012.log
說明:
即設定文件(jian)text的屬性為:文件(jian)屬主(u) 增加寫權(quan)限;與文件屬主同組用戶(g) 增(zeng)加(jia)寫權限(xian);其他用戶(o) 刪(shan)除執行(xing)權限
實例3:刪除文(wen)件(jian)權限
命(ming)令:
chmod a-x log2012.log
輸出:
[root@localhost test]# ls -al log2012.log
-rwxrwxr-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod a-x log2012.log
[root@localhost test]# ls -al log2012.log
-rw-rw-r-- 1 root root 302108 11-13 06:03 log2012.log
說明:
刪除(chu)所有用戶的可執行權限
實例4:使(shi)用“=”設置權限
命令:
chmod u=x log2012.log
輸出:
[root@localhost test]# ls -al log2012.log
-rw-rw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod u=x log2012.log
[root@localhost test]# ls -al log2012.log
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
說(shuo)明(ming):
撤銷原來所(suo)有(you)的權(quan)限,然后(hou)使(shi)擁有(you)者具有(you)可讀權(quan)限
實例(li)5:對一個目錄(lu)及其(qi)子(zi)目錄(lu)所(suo)有文件添加權限
命令:
chmod -R u+x test4
輸出:
[root@localhost test]# cd test4
[root@localhost test4]# ls -al
總計 312drwxrwxr-x 2 root root 4096 11-13 05:50 .
drwxr-xr-x 5 root root 4096 11-22 06:58 ..
-rw-r--r-- 1 root root 302108 11-12 22:54 log2012.log
-rw-r--r-- 1 root root 61 11-12 22:54 log2013.log
-rw-r--r-- 1 root root 0 11-12 22:54 log2014.log
[root@localhost test4]# cd ..
[root@localhost test]# chmod -R u+x test4
[root@localhost test]# cd test4
[root@localhost test4]# ls -al
總計 312drwxrwxr-x 2 root root 4096 11-13 05:50 .
drwxr-xr-x 5 root root 4096 11-22 06:58 ..
-rwxr--r-- 1 root root 302108 11-12 22:54 log2012.log
-rwxr--r-- 1 root root 61 11-12 22:54 log2013.log
-rwxr--r-- 1 root root 0 11-12 22:54 log2014.log
說明:
遞歸地給test4目(mu)錄下所(suo)有文(wen)件和子目(mu)錄的屬主分(fen)配權限
其他一些(xie)實(shi)例:
1).
命(ming)令:
chmod 751 file
說明:
給(gei)file的(de)屬主分(fen)配讀、寫(xie)、執(zhi)行(xing)(7)的(de)權限(xian),給(gei)file的(de)所在組分(fen)配讀、執(zhi)行(xing)(5)的(de)權限(xian),給(gei)其他用戶分(fen)配執(zhi)行(xing)(1)的(de)權限(xian)
2).
命令:
chmod u=rwx,g=rx,o=x file
說明(ming):
上例的另一種形式
3).
命令
chmod =r file
說(shuo)明(ming):
為(wei)所有用戶分配讀(du)權限
3).
命令:
chmod 444 file
說明:
同上例
4).
命令(ling):
chmod a-wx,a+r file
說明:
同(tong)上例(li)
關注 熵減黑客 ,一起學習成長
