1. 程式人生 > >Linux--檔案/目錄 許可權及修改

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私房菜基礎篇》