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.宣告類成員 域 屬性 方法 預...