1. 程式人生 > >Linux文件權限的總結詳解

Linux文件權限的總結詳解

閱讀 ask 奇數 oot 瀏覽目錄 -- 不能 拒絕 總結

權限總結:

對普通文件的:

r:read 可讀,表示具有讀取、閱讀文件內容的權限
w:write可寫,表示具有新增、修改文件內容的權限(是否可以刪除看上級目錄的權限)
1)  如果沒有r,那麽vim會提示無法編輯(可強制編輯,echo可以重定向編輯或追加)
2)  如果沒有r,那麽執行他也會提示權限不足
3)  刪除文件(修改文件名等)的權限是受父目錄的權限限制的,和目錄本身權限無關
x:execute 執行權限,

對於目錄的:

r:表示具有瀏覽目錄下面及子目錄的權限,即ls 和dir
1)  如果沒有x權限,不能進入到目錄裏面
2)  如果沒有x權限,ls列表是可以看到所有文件名,但是會提示無權訪問目錄下的文件
3)  如果ls –l列表,所有的屬性會帶有問號,也會提示無權訪問目錄下的文件,但是可以看到所有文件名。
w:具有增加、刪除和修改目錄內文件名(一般指文件名)的權限(需要x權限配合)
x:表示具有進入目錄的權限,沒有r權限能進去但是不能修改,創建和刪除的功能。
[test@zsf tmp]$ ll -d zsf/   #查看這個目錄的權限
drwxr-xr-- 2 oldgirl incahome 4096 Mar 22 23:17 zsf/
[test@zsf tmp]$ ls zsf
ls: cannot access zsf/test.sh: Permission denied   #提示權限被拒絕
test.sh   #但是顯示裏面的文件內容
[test@zsf tmp]$ cd zsf/  #切換目錄不成功,沒有權限
-bash: cd: zsf/: Permission denied
[test@zsf tmp]$ ll zsf   #對應上面的3解釋
ls: cannot access zsf/test.sh: Permission denied
total 0
-????????? ? ? ? ?            ? test.sh

文件的默認屬性由umask來決定:

臨時設置umask值:umask 0022
目錄默認的總權限為0777,然後實際權限為0777-umask==實際權限
文件默認的總權限為0666,然後實際權限為0666-umask(當碰到奇數的時候在奇數位加上1)==實際權限

特殊權限:

sUID:set uid數字代號“4”在一個程序或命令上添加setuid以後(u+s),這樣屬主就有了s權限,意味著任何用戶在執行此程序時,其進程的屬組不再是發起者本人,而是屬主。最典型的例子passwd命令;
[root@zsf tmp]# ll -d `which passwd`
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd
普通用戶不具備對/etc/passwd文件的修改權限
[root@zsf tmp]# ll -d /etc/shadow
-rw-r--r-- 1 root root 1057 Mar 16 21:32 /etc/shadow,但是普通用戶卻能修改自己的密碼。是因為passwd有setuid權限,當他執行passwd命令時就相當於root在執行,在對shadow修改文件。
當user權限本身具有x權限的時候,s為小寫,當不具備x權限的時候S為大寫
sgid:set gid 數字代號“2”,在一個程序或命令上添加set gid以後(g+s),這樣屬組就有了s權限,意味著任何用戶在執行此程序時,其進程的屬組不再是發起者本人的屬組,而是文件屬組。給目錄設置Set gid權限,任何用戶在該目錄下創建的文件,則該文件屬組都和目錄的屬組一致。
當group權限本身具有x權限的時候,s為小寫,當不具備x權限的時候S為大寫
t:sticky 數字代表1,附加在other的權限上,當設置此權限的之後,每個人的文件或目錄只能有自己本身刪除。
文件的權限可以通過chmod指令來修改,支持運算表達式。

Linux文件權限的總結詳解