Linux umask值預設許可權分配

2021-09-10 19:46:41 字數 2936 閱讀 3572

1 linux許可權位說明

linux檔案或目錄的許可權位是由9個許可權位來控制,每三位為一組,他們分別是檔案屬主(owner)的讀、寫、執行,使用者組(group)的讀、寫、執行以及(other)其它使用者的讀、寫、執行:

r(read)可寫許可權,對應數字4

w(write)可寫許可權,對應數字2

x(execute)可執行許可權,對應數字1

-(沒有任何許可權)對應數字0

問題1:為什麼預設許可權目錄755,預設檔案許可權644

1) 目錄755,檔案644是相對安全的許可權

2)並且使用者為root以及使用者組root

以上許可權兼顧了安全和使用,生產工作中一定要盡量要我們的檔案和目錄達到以上預設的許可權,包括使用者和屬組都是root。

linux系統預設許可權的方針:允許瀏覽,檢視,但是禁止建立和修改檔案及檔案內容以及執行。

對於**服務來說,站點目錄及子檔案許可權設定(d:755 f:644 root root)

可通過以下控制條件來控制使用者上傳的檔案

1、程式:控制副檔名,如.log結尾的不能上傳

2、http協議(請求方法.php禁止get)

3、磁碟掛載禁止上傳可執行檔案

問題2:若是希望預設建立的檔案為000,目錄為111,怎麼能實現呢?

在linux下檔案的預設許可權是由umask值決定的。

umask是通過八進位制的數值來定義使用者建立檔案或目錄的預設許可權。

umask對應數值表示的是禁止的許可權。具體的細節,檔案和目錄略有不同。

系統預設的umask值

[root@oldboy ~]# umask

[test@oldboy ~]$ umask

0002

3測試不同umask值建立檔案的許可權

# 檔案起始許可權值:666

# umask 022

[root@oldboy oldboy]# umask

[root@oldboy oldboy]# touch 1

[root@oldboy oldboy]# ll

total 0

-rw-r--r-- 1 root root 0 dec 15 22:13 1

# umask 035

[root@oldboy oldboy]# umask 035

[root@oldboy oldboy]# umask

[root@oldboy oldboy]# touch 2

[root@oldboy oldboy]# ll 2

-rw-r---w- 1 root root 0 dec 15 22:15 2

# umask 002

[root@oldboy oldboy]# umask 002

[root@oldboy oldboy]# umask

[root@oldboy oldboy]# touch 3

[root@oldboy oldboy]# ll 3

-rw-rw-r-- 1 root root 0 dec 15 22:16 3

# 總結:

(1)若umask值全為偶數(如022),則建立檔案的許可權值為(666-022=644)

(2)若umask值有任意一位奇數(如035),即奇數字在相減後每位要加1,則建立檔案的許可權值為(666-035=631+011=642)

4 測試不同umask值建立目錄的許可權

# 目錄起始許可權值:777

# umask 022

[root@oldboy oldboy]# umask

[root@oldboy oldboy]# mkdir 1

[root@oldboy oldboy]# ls -ld 1

drwxr-xr-x 2 root root 4096 dec 15 22:22 1

# umask 035

[root@oldboy oldboy]# umask 035

[root@oldboy oldboy]# umask

[root@oldboy oldboy]# mkdir 2

[root@oldboy oldboy]# ls -ld 2

drwxr---w- 2 root root 4096 dec 15 22:23 2

# umask 032

[root@oldboy oldboy]# umask 032

[root@oldboy oldboy]# umask

[root@oldboy oldboy]# mkdir 3

[root@oldboy oldboy]# ls -ld 3

drwxr--r-x 2 root root 4096 dec 15 22:23 3

# 總結:

建立目錄最終的許可權值就是777減去umask值,沒有奇偶數之分

5 永久修改umask值

# 可以修改如下配置檔案內容

[root@oldboy oldboy]# sed -n '61,64p' /etc/profile

if [ $uid -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then

umask 002

else

umask 022

這段指令碼的意思就是當使用者的uid大於199,且使用者的uid和gid相等的情況下,改使用者的umask值為002,反之為022

6 總結

umask一般都是放在使用者相關shell的配置檔案中,比如使用者家目錄下的.bashrc或.profile,也可以放在全域性性的使用者配置檔案中,比如/etc/login.defs,還可以放在shell全域性的配置檔案中,比如/etc/profile或/etc/bashrc等;

umask放在相關的配置檔案中,目的是當管理員建立使用者時,系統會自動為使用者建立檔案或目錄時配置預設的許可權**。

在一般的生產場景,umask的使用不多見,在此,我們了解下umask是怎麼回事即可。

企業面試:

Linux umask預設許可權分配命令

linux系統為什麼目錄和檔案的預設許可權是755,644而不是其它的值呢?因為 目錄安全許可權 目錄755,檔案644是相對安全的許可權 使用者root以及使用者組root linux系統預設許可權的方針 允許瀏覽,檢視,但是禁止建立和修改,增加檔案及內容。預設許可權分配的命令umask 1 2 ...

linux umask許可權遮蔽碼的使用

關於umask許可權遮蔽碼 我們都知道在linux底下建立乙個檔案touch new.txt 它有自己的預設的許可權,比如 可以看到在我的這台linux上,預設建立的檔案的許可權為自己為可讀可寫的許可權,同一組的使用者為可讀的許可權,其他使用者為可讀的許可權,那麼這個預設的許可權是由什麼東西來控制的...

C 預設訪問許可權

c 的預設訪問許可權老是搞混,特此記下。宣告類 方法 字段 屬性時不加訪問許可權修飾符時的訪問許可權是什麼呢?1.宣告命名空間 類,前面不加限制訪問修飾符時,預設訪問許可權為internal 訪問僅限於當前程式集。大龍注 從通俗的角度來說,乙個專案也就是乙個程式集。2.宣告類成員 域 屬性 方法 預...