Linux命令 之 chmod


說明 : 

1:Linux/Unix 的檔案存取權限分爲三級 : 檔案擁有者、羣組、其他。

2:文件或目錄的一般權限分別是:讀取,寫入,執行。



權限範圍的表示法如下:
u:User,即文件或目錄的擁有者。
g:Group,即文件或目錄的所屬羣組。
o:Other,除了文件或目錄擁有者或所屬羣組之外,其他用戶皆屬於這個範圍。
a:All,即全部的用戶,包含擁有者,所屬羣組以及其他用戶。

有關權限代號的部分,列表於下:
r:讀取權限,數字代號爲"4"。
w:寫入權限,數字代號爲"2"。
x:執行或切換權限,數字代號爲"1"。
-:不具任何權限,數字代號爲"0"。
s:特殊?b>功能說明:變更文件或目錄的權限。

文件權限配置行爲有如下幾類:

+:添加權限;

-:刪除權限;

=:使它成爲惟一權限。


語法
chmod [-cfRv][--help][--version][<權限範圍>+/-/=<權限設置...>][文件或目錄...]
chmod [-cfRv][--help][--version][數字代號][文件或目錄...]
chmod [-cfRv][--help][--reference=<參考文件或目錄>][--version][文件或目錄...]

選項說明
-c或--changes  效果類似"-v"參數,但僅回報更改的部分。
-f或--quiet或--silent  不顯示錯誤信息。
-R或--recursive  遞歸處理,將指定目錄下的所有文件及子目錄一併處理。
-v或--verbose  顯示指令執行過程。
--help      在線幫助。
--reference=<參考文件或目錄>  把指定文件或目錄的權限全部設成和參考文件或目錄的權限相同
--version  顯示版本信息。
<權限範圍>+<權限設置>  開啓權限範圍的文件或目錄的該項權限設置。
<權限範圍>-<權限設置>  關閉權限範圍的文件或目錄的該項權限設置。
<權限範圍>=<權限設置>  指定權限範圍的文件或目錄的該項權限設置。

範例一 :
將檔案 file1.txt 設爲所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設爲所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設爲該檔案擁有者,與其所屬同一個羣體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.設定爲只有該檔案擁有者可以執行 :
chmod u+x ex1

將目前目錄下的所有檔案與子目錄皆設爲任何人可讀取 :
chmod -R a+r *

當其他用戶執行oracle的sqlplus這個程序時,他的身份因這個程序暫時變成oracle
chmod u+s sqlplus

此外,chmod也可以用數字來表示權限如 chmod 777 file
語法爲:chmod abc file
其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。

範例二:
chmod a=rwx file 和 chmod 777 file 效果相同
        chmod ug=rwx,o=x file 和 chmod 771 file 效果相同

若用chmod 4755 filename可使此程式具有root的權限

範例三:
如果在cd /media/amasun/java/develop/array之後執行
chmod 777 ./
是將本目錄(即/media/amasun/java/develop/array)設爲任何人可讀,寫,執行
如果是管理員也就是常說的ROOT用戶的話,基本上有可以查看所有文件的權力.

------------------------------------------------------例子---------------------------------------------------

使用chmod命令可以改變權限。下面這個例子顯示瞭如何使用chmod命令來改變readme.txt文件的權限。

 

假設下面是readme.txt文件的初始權限設置:

-rw-rw-r-- 1 winda winda 39 8月 11 12:04 readme.txt

 

如果是這個文件的所有者或者登錄爲根用戶身份,則可以改變所有者、組羣和其他人的權限。初始時,從上面的分析可以看出,這個readme.txt文件的所有者和組羣可以讀取和寫入文件(rw-),組羣之外的任何人只能讀取文件(r--)。

 

文件權限是一種安全措施。無論何時允許其他人讀取、寫入或執行文件,都在增加文件被篡改或刪除的危險。作爲一種基本原則,應該只給那些真正需要這些文件的人以讀寫權限。

 

在下面的例子中,想給每個人以寫入readme.txt文件的權限,因此他們可以讀取文件,在其中加註,並保存文件。這意味着必須改變文件權限中的“其他人”部分。

 

此時需要在shell或終端提示下輸入:

chmod o+w readme.txt

 

o+w命令參數告訴系統想給其他人寫入文件readme.txt的權限。要查看結果,再次列出文件的細節。此時,這個文件的用戶訪問權限就如下所示了(在第3列中多了一個w):

-rw-rw-rw- 1 winda winda 39 3月 11 12:04 readme.txt

 

 

現在,每個人都可以讀取和寫入這個文件了。

要從readme.txt中刪除組羣和其他人的讀寫權限,使用chmod命令來取消讀取和寫入這兩個的權限。


命令如下:

chmod go -rw readme.txt

 

通過輸入go-rw參數告訴系統刪除文件readme.txt中組羣和其他人的讀取和寫入權限。再次通過 ls -1命令列出的結果如下:

-rw------- 1 winda winda 39 3月 11 12:04 readme.txt

 

從文件readme.txt中刪除所有權限(包括每個人的權限)的命令如下:

chmod a -rwx readme.txt

 

現在,來看看是否還能夠使用cat readme.txt命令來讀取這個文件,它所返回的輸出應如下所示:

cat: readme.txt: Permission denied

 

刪除所有的權限,包括自己的,會成功地鎖住這個文件。但是由於這個文件屬於用戶,可以隨時使用以下命令把它的權限改回來。命令如下:

chmod u+rw readme.txt

 

使用命令cat readme.txt來試試作爲文件所有者是否還能夠讀取該文件。

 

這裏是幾個可以用在chmod命令設置上的常用例子:

g+w:爲組羣添加寫入權;

o-rwx:刪除其他人的所有權限;

u+x:允許文件所有者執行這個文件;

a+rw:允許每個人讀取並寫入文件;

ug+r:允許所有者和組羣讀取文件;

g=rx:只允許組羣讀取和執行(不能寫入)。

 

最後,介紹一下恢復組羣的權限的方法。命令如下:

chmod ug+x tigger


現在,如果用ls -dl命令檢查一下,會發現只有其他人(others)被拒絕了到目錄tigger的訪問權。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章