Linux--檔案/目錄 許可權及修改
首先所有許可權對於三類使用者分別設定: User(所有者) / Group(組群) / Others(其他)。
許可權也是有三種:Read / Write / eXecute,這三種許可權對於文件和目錄有不同的意義。
1. 對於文件:
Read:可以檢視文件的內容
Write:可以修改文件的內容,新增、刪除、修改內容等
eXecute:文件可執行
需要注意:對於文件,許可權指的是對於文件內容的許可權而不是對於文件本身的許可權。舉個例子就是說即使有對文件的read,write,execute全部的許可權,也不能決定是否刪除移動文件本身,這些許可權是由目錄許可權規定的。
2. 對於資料夾:
Read: 可以檢視資料夾下檔案/目錄列表
Write:可以在目錄下新增、刪除檔案/目錄,當然還有修改檔名/目錄名
eXecute: 是否可以作為工作目錄,即是否可以cd進來
注意:對於資料夾,沒有execute許可權的話,Read write功能都不能被正常使用
修改許可權的命令:chown,chgrp,chmod,
chown:
$sudo chown 賬號名 檔名/目錄名 #只改擁有者
$sudo chown 賬號名:組群 檔名/目錄名 #改擁有者和組群
$sudo chown 賬號名.組群 檔名/目錄名 #同上
$sudo chown .組群 檔名/目錄名 #只改組群
chgrp:
$sudo chgrp 組名 檔名/目錄名
chmod:修改許可權的時候並不是每次都要寫9個許可權的,太長了
每個許可權有對應的整數值,read(4),write(2),execute(1), 用他們的和就可代表一類許可權。
$sudo chmod 744 檔名/目錄名
雖然這樣已經將引數從9減至3了,但依然不夠簡便。可以利用+/-/=來增加/刪除/設定許可權。其中用u/g/o/a分別表示擁有者/群組/其他使用者/全部。
$sudo chmod u+x,go-w 檔名/目錄名 #給擁有者增加execute許可權,其他使用者撤銷write許可權。
p.s. 上述的命令用語資料夾時可以加上選項 -R 表示對資料夾的所有目錄遞迴使用。
2010.12.7日補充:
除了普通的r,w,x等許可權,文件/目錄還有預設許可權,隱藏許可權和特殊許可權,下面分別介紹。
預設許可權:
umask:新建檔案或目錄的預設屬性,新建檔案沒有execute許可權,新建目錄有execute許可權
$umask -S
u=rwx,g=rx,o=rx
$umask
0022
注意,以數字顯示許可權中,數字表示的是該預設值需要減掉到許可權,如2,表示沒有w=2許可權
隱藏許可權:lsattr,chattr,只有在ext2/ext3/ext4下面有效,其他檔案系統下顯示“lsattr: 對裝置不適當的 ioctl 操作 While reading flags on ...”錯,需要用到的請man
特殊許可權:SUID, SGID, SBIT
我們已經知道了文件/目錄有r,w,x三個許可權,但是有時還會有s,t許可權,比如passwd,/tmp,等的許可權如下所示:
-rwsr-xr-x 1 root root 37140 2010-01-27 01:09 /usr/bin/passwd*
drwxrwxrwt 13 root root 4096 2010-12-07 09:58 ./
s對應於文件所有者的許可權時對應SUID(Set User ID)許可權。SUID許可權只存在於二進位制程式,是指一般使用者執行此二進位制程式時獲得root許可權(要求一般使用者對文件有x許可權噢)。注意對目錄和非二進位制程式到文件不存在這樣到許可權。
s對應與文件所屬群組到許可權時對應SGID(Set Group ID)許可權。SGID許可權對二進位制程式文件和目錄均有效:對於二進位制程式文件,一般使用者執行時獲得文件所在群組到許可權(要求一般使用者對文件有x許可權);對於目錄,一般使用者進入此目錄時有目錄所屬群組的許可權,當用戶在此目錄中新建文件/目錄時,新建文件/目錄到所屬群為當前目錄的所屬群。
t對應於目錄許可權時對應SBIT(Sticky BIT),在該目錄下新建立到的文件和目錄只有所有者和root可以刪除(可以建立是要求有w,x許可權)。
如何設定特殊許可權呢? 我們知道一般可以用744這個三個數字代表所有者,所在群組和其他使用者的許可權。在這三個數前面再加上一個數則代表特殊許可權,其中SUID(4),SGID(2),SBIT(1).
liyx@liyx-ubuntu:~$ ll special
-rw-r--r-- 1 liyx liyx 0 2010-12-07 11:15 special
liyx@liyx-ubuntu:~$ chmod 4755 special
liyx@liyx-ubuntu:~$ ll special
-rwsr-xr-x 1 liyx liyx 0 2010-12-07 11:15 special*
當然也可以用$chmod o+s special 的方式修改特殊許可權。
參考:《鳥哥的Linux私房菜基礎篇》