-
Linux 權限位
對于權限,有點繞,因為檔案的權限和目錄的權限是有一些差別的。
在Linux中,有5種權限,分别是,r、w、x、s、t。
可讀權限:r
可寫權限:w
可執行權限:x
Setuid:s(Set User ID)
Setgid:s(Set Group ID)
粘滞位:t
下面依次講解權限位:
1.1 可讀權限
對于檔案,可讀權限:
用字元表示:r
用八進制表示:4
可以對讀取檔案裡的内容
對于目錄,可讀權限:
可以列出目錄下的内容
1.2 可寫權限
對于檔案,可寫權限:
用字元表示:w
用八進制表示:2
可以對檔案進行更改
對于目錄,可寫權限:
可以在目錄下建立檔案或目錄
1.3 可執行權限
用字元表示:x
用八進制表示:1
可以執行該檔案(腳本或指令)
可以cd進入該目錄
1.4 Setuid
這是一個特殊的權限位,
對于檔案,Setuid:
用字元表示:s
用八進制表示:4000
Setuid最常用的是配合執行權限x使用,例如,系統中内置指令passwd,它預設是帶有s權限位,passwd指令的主要功能是修改使用者的密碼,而修改密碼的流程是:
将加密後的哈希值寫入到/etc/passwd檔案對應的使用者條目中。
使用pwconv工具轉換到/etc/shadow檔案中。
而普通使用者是沒有權限修改/etc/passwd 和 /etc/shadow檔案
在普通使用者嘗試執行passwd,該passwd的所有者是root并且設定了Suid,是以passwd以root身份執行。
當你檢視程序時,你會發現,程序不是普通使用者,而是passwd工具的所有者(root)
1.5 Setgid
對于目錄,Setgid:
用八進制表示:2000
當一個目錄擁有sgid權限時,其他使用者在該目錄下建立檔案或目錄後,它會繼承目錄的id,即建立的檔案或目錄的屬組為父目錄的屬組。
[root@self data]# mkdir project
[root@self data]# chmod 2777 project/
[root@self data]# ls -lh
total 0
drwxrwsrwx 2 root root 6 Apr 20 23:42 project
[root@self data]# su bob
[bob@self data]$ mkdir project/test_for_bob
[bob@self data]$ ls -lh project/
drwxrwsr-x 2 bob root 6 Apr 20 23:42 test_for_bob
1.6 粘滞位
對于目錄粘滞位:
用字元表示:t
用八進制表示:1000
/tmp目錄就是使用了粘滞位t,其作用是,在該目錄下建立檔案或目錄後,僅允許其作者(所有者)進行删除操作。其他使用者無法删除。
- Linux 權限表
-
ls -l 輸出詳解
例如:lrwxrwxrwx. 1 root root 7 Oct 3 02:33 bin -> usr/bin
第一個字元的含義:
-:正常檔案
b:塊特殊檔案
c:字元特殊檔案
C:高性能(”連續資料“)檔案
d:目錄
D:門(Solaris 2.5及以上版本)
l:符号連結
M:離線(”前已“)檔案(Cray DMF)
n:網絡專用檔案(HP-UX)
p:FIFO(命名管道)
P:斷開(Solaros 10及以上)
s:套接字
?:其他檔案
第二個字元的含義:
r:屬主的讀權限
第三個字元的含義:
w:屬主的寫權限
第四個字元的含義:
x:屬主的執行權限
S:設定了SUID,沒有執行權限
s:設定了SUID,具有執行權限
第五個字元的含義:
r:屬組的讀權限
第六個字元的含義:
第七個字元的含義:
x:屬組執行權限
S:設定了SGID,沒有執行權限
s:設定了SGID,具有執行權限
第八個字元的含義:
r:其他人的讀權限
第九個字元的含義:
w:其他人的寫權限
第十個字元的含義:
x:其他人的執行權限
T:設定了粘滞位,沒有執行權限
t:設定了粘滞位,具有執行權限
第十一個字元的含義:
.:沒有任何其他替代通路方法的SELinux安全上下文(沒有設定ACL)
+:具有任何其他組合通路方法的SELinux安全上下文(設定了ACL)
第十二個字元的含義:該檔案的硬連結數量
第十三個字元的含義:該檔案的屬主
第十四個字元的含義:該檔案的屬組
第十五個字元的含義:該檔案的大小
第十六到第十八個字元的含義:最後一次修改的時間
第十九個字元的含義:檔案或目錄的名稱
第二十個字元的含義:連結符号
第二十一個字元的含義:連結檔案的源檔案
- umask 掩碼
umask是一個内置指令。其作用是指定建立的檔案或目錄的預設權限。
使用方法:umask [-S|-p] [mode]
-S:列印出字元權限位
-p:列印八進制數權限位(預設)
使用不加任何參數的umask會列印出八進制的權限:預設0022。
第一個數字表示:特殊權限位的八進制數
第二個數字表示:屬主的八進制數的反掩碼
第三個數字表示:屬組的八進制數的反掩碼
第四個數字表示:其他人的八進制數的反掩碼
例如:手動更改,可使用八進制,也可以使用字元表示
[root@localhost data]# umask
0022
[root@localhost data]# mkdir test_dir
[root@localhost data]# touch test_txt
[root@localhost data]# ls -lh
drwxr-xr-x 2 root root 6 Apr 21 01:34 test_dir
-rw-r--r-- 1 root root 0 Apr 21 01:34 test_txt
[root@localhost data]# rm -rf *
[root@localhost data]# umask 0777
d--------- 2 root root 6 Apr 21 01:37 test_dir
---------- 1 root root 0 Apr 21 01:37 test_txt
注意:盡管你的umask設定為0000,後續建立檔案的權限依然是666。出于安全着想,執行權限必須手動添加。是以你會看到,目錄權限為777,而檔案權限為666
原文位址
https://www.cnblogs.com/liuhedong/p/10739718.html