1. 程式人生 > >Linux檔案許可權介紹

Linux檔案許可權介紹

在Linux中,一切皆為檔案(目錄也是檔案),每個檔案對使用者具有可讀(read)、可寫(write)、可執行(execute)許可權。目錄的執行操作表示是否有許可權進入該目錄,檔案的可執行表示是否可以執行該檔案。檔案都會從屬於一個使用者和一個使用者組,每個檔案針對檔案的擁有者、所屬組以及其他使用者組具有特定的許可權。

http://7d9py7.com1.z0.glb.clouddn.com/0210filepermission_2.gif

如上圖,除去第一個表示檔案型別的字元外,後面的字元均以三個為一組,是『rwx』 的三個引數的組合。[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。同時他們也會分別對應到一個數字,[ r ]對應4,[ w ]對應2,[ x ]對應1,這些數字在修改檔案許可權的時候可以用到,如果沒有[ rwx ]中的某個許可權,就會用減號[ - ]替代。

第一組是檔案擁有者對該檔案的操作許可權,第二組是檔案所屬組對該檔案的操作許可權,第三組是其他組的使用者對該檔案的操作許可權。舉例說明: 有一個檔案的許可權資料為『rwxr-xr--』,那麼前3個字元表示檔案的擁有者可以對檔案進行讀、寫、執行三個操作,中間3個字元表示該檔案的所屬組可以對檔案進行讀和執行操作,最後3個字元表示其他群組的使用者只能對該檔案進行讀操作。

更改檔案許可權:chmod

更改檔案許可權使用命令 chmod ,一個檔案的許可權對應3種使用者(自己、組、其他人)的讀寫執行共有9個,三個為一組,把每組的許可權相加得到一個數字,例如[rwxrwx---]對應的數字是:

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

只要使用者對檔案有寫許可權,那麼該使用者就可以更新其他使用者對該檔案的操作許可權,命令:

chmod [-R] xyz 檔案或目錄
  • xyz:分別對應三類使用者許可權值相加的和。
  • -R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更

例如:

[[email protected] ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[[email protected] ~]# chmod 777 .bashrc   # 更改為所有使用者都可以讀寫執行
[
[email protected]
~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc

chmod 除了可以使用數字的方式變更檔案的許可權之外,還可以使用符號來改變檔案許可權,u、 g、o、a分別是user、group、others、all(所有使用者)的簡寫,r 、w、x 分別是read、write、execute 的簡寫,那麼chmod可以接收這些簡寫字元來變更檔案許可權。

    u          
    g                 +(增加)         r
chmod   o                 -(除去)         w             檔案或目錄
    a                 =(賦值)         x

例如:

# 給自己讀寫執行許可權,給使用者組和其他人讀和執行操作
chmod  u=rwx,go=rx  .bashrc
# 給所有使用者追加寫許可權
chmod  a+w  .bashrc
# 給所有使用者除去寫許可權
chmod a-w   .bashrc

改變所屬群組 chgrp

改變檔案的群組使用chgrp命令,他是change group 的縮寫,命令格式:

chgrp [-R] groupname dirname/filename

-R 遞迴改變目錄及子目錄檔案,groupname 必須是存在於系統中的/etc/group檔案裡面的組。

# 把當前目錄以及子目錄下所有檔案的所屬組更新為mysql組
chgrp -R mysql .

改變檔案擁有者 chown

改變檔案的所屬者使用 chown 命令,他是change owner 的縮寫,命令格式:

chown [-R]  owner dirname/filename
或者
chown [-R] owner:group dirname/filename

chown 命令不僅可以改變檔案的擁有者,同時還可以改變檔案的群組,只需在 owner 後面 加上 group 的名稱即可

# 把install.log改成mysql使用者
 chown mysql install.log
# 把 install.log 改成root使用者和root組
 chown root:root install.log

關注公眾號「Python之禪」(id:vttalk)獲取最新文章 python之禪