1、 umask介紹安全
Linux 系統用戶建立一個新的目錄或文件時,系統會默認會分配相應的權限。目錄或文件的權限是如何產生的呢?bash
一、這就是umask的功能,umask設置了用戶建立文件或目錄的默認權限。Linux 系統umask設置的默認權限屬於安全權限的臨界點,若是高於這個臨界點,文件的權限就太過危險,若是低於這個臨界點,文件的權限太過苛刻,操做麻煩。spa
二、Linux系統root系統管理員用戶默認umask值爲0022,對應建立目錄默認權限爲755,對應建立文件默認權限爲644.Linux系統其它用戶默認uamsk值爲0002, 對應建立目錄默認權限爲775, 對應建立文件默認權限爲664.ci
root系統管理員用戶建立文件和目錄:table
[oldgirl@oldboy ~]$ whoamitest
oldgirlawk
[root@oldboy ~]# umasksed
0022file
[root@oldboy ~]# mkdir test權限
[root@oldboy ~]# ls -ld /test/
drwxr-xr-x 2 root root 4096 Dec 1 11:47 /test/
[root@oldboy ~]# touch /test/file.txt
[root@oldboy ~]# ls -l /test/file.txt
-rw-r--r-- 2 root root 0 Dec 5 09:47 /test/file.txt
test普通用戶建立文件和目錄:
[test@oldboy ~]$ whoami
test
[test@oldboy ~]$ umask
0002
[test@oldboy ~]$ mkdir hello
[test@oldboy ~]$ ls -ld hello/
drwxrwxr-x 2 test test 4096 Dec 5 10:03 hello/
[test@oldboy ~]$ touch testfile.txt
[test@oldboy ~]$ ls -l testfile.txt
-rw-rw-r-- 1 test test 0 Dec 5 10:03 testfile.txt
Linux 系統umask默認值存在於bashrc系統文件:
[test@oldboy ~]$ sed -n '65,69p' /etc/bashrc
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
Linux 臨時設置umask默認值:(umask默認是四位,第一位是文件特殊權限位,能夠暫時忽略):
[test@oldboy ~]$ umask 033
[test@oldboy ~]$ umask
0033
2、umask值對應文件權限計算方法(以系統管理員root用戶操做)
文件權限計算方法
文件的起始權限值 |
umask值 |
操做 |
計算後文件權限 |
舉例 |
666 |
022 (每位若是都是偶數) |
相減 |
644 |
範例1 |
666 |
033 (每位若是有奇數或偶數) |
相減(奇數位相減後在其原奇數位加1) |
644 |
範例2 |
666 |
325(每位若是有奇數或偶數) |
相減(奇數位相減後在其原奇數位加1) |
442 |
範例3 |
目錄權限計算方法
文件的起始權限值 |
umask值 |
操做 |
計算後文件權限 |
舉例 |
777 |
022 |
相減 |
755 |
範例1 |
777 |
033 |
相減 |
744 |
範例2 |
777 |
325 |
相減 |
452 |
範例3 |
範例1:
[root@oldboy ~]# umask
0022
[root@oldboy ~]# mkdir /oldboy
[root@oldboy ~]# touch /oldboy/test.sh
[root@oldboy ~]# ls -ld /oldboy/
drwxr-xr-x 2 root root 4096 Dec 5 11:16 /oldboy/
[root@oldboy ~]# ls -l /oldboy/test.sh
-rw-r--r-- 1 root root 0 Dec 5 11:16 /oldboy/test.sh
[root@oldboy ~]# stat /oldboy/ | awk -F '[: ]+' 'NR==4 {print $2}'
(0755/drwxr-xr-x)
[root@oldboy ~]# stat /oldboy/test.sh | awk -F '[: ]+' 'NR==4 {print $2}'
(0644/-rw-r--r--)
範例2:
[root@oldboy ~]# umask 033
[root@oldboy ~]# umask
0033
[root@oldboy ~]# mkdir /oldboy
[root@oldboy ~]# touch /oldboy/test.sh
[root@oldboy ~]# ls -ld /oldboy/
drwxr--r-- 2 root root 4096 Dec 5 11:26 /oldboy/
[root@oldboy ~]# ls -l /oldboy/test.sh
-rw-r--r-- 1 root root 0 Dec 5 11:26 /oldboy/test.sh
[root@oldboy ~]# stat /oldboy/ | awk -F '[: ]+' 'NR==4 {print $2}'
(0744/drwxr--r--)
[root@oldboy ~]# stat /oldboy/test.sh | awk -F '[: ]+' 'NR==4 {print $2}'
(0644/-rw-r--r--)
範例3:
[root@oldboy ~]# umask 325
[root@oldboy ~]# umask
0325
[root@oldboy ~]# mkdir /oldboy
[root@oldboy ~]# touch /oldboy/test.sh
[root@oldboy ~]# ls -ld /oldboy/
dr--r-x-w- 2 root root 4096 Dec 5 11:34 /oldboy/
[root@oldboy ~]# ls -l /oldboy/test.sh
-r--r---w- 1 root root 0 Dec 5 11:34 /oldboy/test.sh
[root@oldboy ~]# stat /oldboy/ | awk -F '[: ]+' 'NR==4 {print $2}'
(0452/dr--r-x-w-)
[root@oldboy ~]# stat /oldboy/test.sh | awk -F '[: ]+' 'NR==4 {print $2}'
(0442/-r--r---w-)