天天看點

Linux 權限位詳解

  1. 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,其作用是,在該目錄下建立檔案或目錄後,僅允許其作者(所有者)進行删除操作。其他使用者無法删除。

  1. Linux 權限表
  1. 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)

第十二個字元的含義:該檔案的硬連結數量

第十三個字元的含義:該檔案的屬主

第十四個字元的含義:該檔案的屬組

第十五個字元的含義:該檔案的大小

第十六到第十八個字元的含義:最後一次修改的時間

第十九個字元的含義:檔案或目錄的名稱

第二十個字元的含義:連結符号

第二十一個字元的含義:連結檔案的源檔案

  1. 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

繼續閱讀