Linux下的檔案許可權相關總結

來源:互聯網
上載者:User

我們已經知道檔案許可權對於系統的安全重要性了,也知道檔案許可權與使用者與使用者組的關係了,那麼,如何修改檔案的許可權呢?我們可以修改多少檔案許可權呢?其實,一個檔案的許可權很多。我們先介紹幾個簡單的,例如:使用者組、擁有者、各種身份的許可權等等。


• chgrp:改變檔案所屬使用者組 。
• chown:改變檔案擁有者。
• chmod:改變檔案的屬性、SUID等特性。
更改所屬使用者組, chgrp
  改變檔案的使用者組很簡單,直接用chgrp即可,這個命令就是change group(改變使用者組)的縮寫。這樣就很好記了。不過,請記住,要改變成為的使用者組名稱,必須在 /etc/group裡存在,否則就會顯示錯誤。
  假設以root的身份登入FC4,那麼,在你的家目錄內有一個install.log檔案,如何改變該檔案的使用者組呢?假設你已經知道在 /etc/group裡已經存在一個名為users的使用者組,但是,testing這個使用者組名字就不存在 /etc/group中了,此時改變使用者組成為users與testing,會有什麼現象發生呢?[root@linux ~]# chgrp [-R] dirname/filename ...
參數:
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄
都更新成為這個使用者組。常常用在更改某一目錄的情況。
範例:
[root@linux ~]# chgrp users install.log
[root@linux ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 出現錯誤資訊~找不到這個使用者組名~

發現了嗎?檔案的使用者組被改成users了,但要改成testing的時候,就會發生錯誤。注意,出現錯誤資訊,還是要查查錯誤資訊的內容才好。
變更檔擁有者, chown
那 麼,如何改變一個檔案的擁有者呢?很簡單。既然改變使用者組是change group,那麼改變擁有者就是change owner(改變擁有者)。這就是chown這個命令的用途,要注意的是,使用者必須是已經存在系統中的,也就是在 /etc/passwd這個檔案中有記錄的使用者名稱稱才可改變。
chown的用途很多,還可以順便直接修改使用者組的名稱。此外,如果要連目錄下的所有子目錄或檔案同時變更檔擁有者的話,直接加上 -R的參數即可。我們來看看文法與範例:

[root@linux ~]# chown [-R] 帳號名稱 檔案或目錄
[root@linux ~]# chown [-R] 帳號名稱:使用者組名稱 檔案或目錄
參數:
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄
都更新成為這個使用者組。常常用在更改某一目錄的情況。
範例:
[root@linux ~]# chown bin install.log
[root@linux ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log
[root@linux ~]# chown root:root install.log
[root@linux ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

我們知道如何改變檔案的使用者組與擁有者了,那麼,什麼時候要使用chown或chgrp呢?或許你會覺得奇怪吧?是的,確實有時候需要變更檔的擁有者的,最常見的例子就是在複製檔案給其他人時,我們使用最簡單的cp來說明好了:

[root@linux ~]# cp 來源檔案 目的檔案

假設今天要將 .bashrc檔案複製成為 .bashrc_test,且是要給bin這個人,你可以這樣做:

[root@linux ~]# cp .bashrc .bashrc_test
[root@linux ~]# ls -al .bashrc*
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
-rw-r--r--  1 root root 395 Jul 13 11:31 .bashrc_test

怎麼辦?.bashrc_test還是屬於root所有,如此一來,即使將檔案拿給bin使用者了,他仍然無法修改(看屬性就知道了),所以就必須修改這個檔案的擁有者與使用者組。
更改9個屬性, chmod
檔案屬性的改變使用chmod命令,但是,屬性的設定方法有兩種,分別可以使用數字或者是符號。
• 數字類型改變檔案許可權
Linux檔案的基本屬性有9個,分別是owner/group/others組別的read/write/ excute屬性,先複習一下剛剛上面提到的資料:

-rwxrwxrwx

這9個屬性是三個一組。其中,可以使用數字來表示各個屬性,各屬性的對照表如下:

r:4
w:2
x:1

同一組(owner/group/others)的3個屬性(r/w/x)是需要累加的,例如當屬性為 [-rwxrwx---] 則是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0

所以,等一下設定屬性的更改時,該屬性的數字就是770。更改屬性的命令chmod的文法是這樣的:

[root@linux ~]# chmod [-R] xyz 檔案或目錄

參數:
xyz : 就是剛剛提到的數字類型的許可權屬性,為 rwx 屬性數值的相加。
-R  : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄都更新成為這個使用者組。常常用在更改某一目錄的情況。
舉例來說,如果要將 .bashrc這個檔案所有的屬性都開啟,那麼就發出命令:

[root@linux ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@linux ~]# chmod 777 .bashrc
[root@linux ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

看到了嗎?屬性改變了。由於一個檔案有三組屬性,所以可以發現上面777為三組,而由於我們將所有的屬性都開啟,所以數字都相加,即“r+w+x = 4+2+1 = 7”。
如 果要將屬性變成“-rwxr-xr–”呢?那麼就成為 [4+2+1][4+0+1][4+0+0]=754。所以需要發出命令chmod 754 filename。最常發生的一個問題就是,常常我們以vi編輯shell的文字檔案後,其屬性通常是 -rw-rw-rw-,也就是666屬性,如果要將它變成可執行檔,並且不要讓其他人修改此檔案的話,那麼就需要 -rwxr-xr-x這個755的屬性,所以就要使用chmod 755 test.sh。
另外,有些檔案不希望被其他人看到,例如 -rwxr—–,那麼就使用命令chmod 740 filename。

例題3:將 .bashrc檔案的屬性改回原來的 -rw-r–r–。
答:
chmod 644 .bashrc

• 符號類型改變檔案許可權
還 有一個改變屬性的方法。從之前的介紹中可以發現,基本上就9個屬性,分別是 (1)user (2)group (3)others三組。我們就可以通過u, g, o來表示三組的屬性。此外,a表示all,即全部的三組。讀寫屬性可以寫成r, w, x。也就是可以使用下面的方式來看:

chmod u
g
o
a +(加入)
-(除去)
=(設定) r
w
x 檔案或目錄

假如我們要“設定”一個檔案的屬性為“-rwxr-xr-x”,基本上就是:
 user (u):具有可讀、可寫、可執行檔許可權。
 group與others (g/o):具有可讀與執行的許可權。
所以就是:

[root@linux ~]# chmod  u=rwx,go=rx  .bashrc

# 注意。那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格。

[root@linux ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc

請 注意,r=rwx,og=rx這一段文字之間並沒有空格隔開。那麼,假如是“-rwxr-xr–”?可以使用“chmod u=rwx,g=rx,o=r filename”來設定。此外,如果不知道原先的檔案屬性,而只想要增加 .bashrc檔案的每個人均可寫入的許可權,那麼就可以使用:

[root@linux ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
[root@linux ~]# chmod  a+w  .bashrc
[root@linux ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

而如果是要將屬性去掉,而不更改其他屬性呢?例如要去掉所有人的x屬性,則:

[root@linux ~]# chmod  a-x  .bashrc
[root@linux ~]# ls -al .bashrc
-rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc

知 道 +, -, = 的不同點了嗎?+ 與 – 的狀態下,只要是沒有指定到的項目,則該屬性“不會變動”。例如,上面的例子中,由於僅以 – 去掉x,則其他兩個保持當時的值不變。多多練習一下,你就會知道如何改變屬性。這在某些情況下很好用。舉例來說,你想要教一個人如何讓一個程式可以擁有執 行的許可權,又不知道該檔案原本的許可權是什麼,此時,利用chmod a+x filename,就可以讓該程式擁有執行的許可權了。很方便。

總結

chmod  命令可以改變所有子目錄的許可權,下面有2種方法
改變一個檔案的許可權: chmod mode file|dir
改變所有子目錄的許可權: chmod mode dir -R    注意後面加了個-R參數

參數就是許可權模式 mode = 777 or 752 ,666,,,

mode的三個數字,分別表示 owner,group,others所具有的許可權。

1 = x 執行 2 = w 寫 4 = r 讀,比如owner具有所有許可權,1+2+4=7,

又比如 group 具有 讀 和 執行 許可權 1+4 = 5
 

把目錄/his及其下的所有檔案和子目錄的屬主改成wang,屬組改成users。

  $ chown – R wang.users /his

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.