Linux之檔案安全上下文及特殊許可權位
檔案的許可權位
r, readable
檔案:文字檢視工具
目錄:ls
w, writeable
檔案:可修改
目錄:可在目錄下建立、刪除檔案
x,exec
檔案:可執行
目錄:cd 或 ls -l
檔案的屬主或屬組
1
2
3
4
5
6
7
|
[root@izpo45bh60h6bsz ~] # ls -l
-rw-r--r-- 1 root root 27 Jul 31 20:04 grep .txt
rw- 屬主的許可權 r-- 屬組的許可權 r-- 其他使用者的許可權 左root 檔案的屬主 右root 檔案的屬組 |
使用者: 檔案 檔案
centos: /bin/cat /path/to/somefile
1)使用者對檔案的操作(x)
使用者名稱同檔案的屬主
使用者名稱同檔案的屬主,應用屬主的許可權,不在檢查後續的許可權(例二中說明)。屬主有x,則可執行,執行為一個程式,程式的名字為程式發起者的名字
如果使用者名稱不同檔案的屬主
使用者名稱同檔案的屬組,應用屬組的許可權,不在檢查後續的許可權。屬組有x,則可執行,執行為一個程式,程式的名字為程式發起者的名字
非屬主或屬組
應用其他使用者的許可權,有x,則可執行,執行為一個程式,程式的名字為程式發起者的名字
2) 程式對檔案的操作(rw)
程式的發起者(程式名)同檔案的屬主,應用屬主的許可權,不在檢查後續的許可權。
程式的發起者(程式名)同檔案的屬組,應用屬組的許可權,不在檢查後續的許可權。
應用其他許可權
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
準備............................ ##確認命令的路徑 [root@izpo45bh60h6bsz ~] # which --skip-alias cat
/usr/bin/cat ##複製命令 [root@izpo45bh60h6bsz ~] # cp -p /bin/cat /tmp/cat ##same as --preserve=mode,ownership,timestamps
[root@izpo45bh60h6bsz ~] # ls -l /tmp/cat
-rwxr-xr-x 1 root root 54080 Aug 5 11:28 /tmp/cat
1、建立使用者 [root@izpo45bh60h6bsz ~] # useradd centos
2、修改屬主和屬組 [root@izpo45bh60h6bsz ~] # chown centos.centos /tmp/cat
[root@izpo45bh60h6bsz ~] # ls -l /tmp/cat
-rwxr-xr-x 1 centos centos 54080 Aug 5 11:29 /tmp/cat
#############注意 chmod所有使用者可用,chown,chgrp僅root可用################# 例一: 1)應用屬主的x許可權 》》》使用者名稱同屬主,屬主有x許可權,可執行為一個程式 centos使用者下 [centos@izpo45bh60h6bsz ~]$ chmod 700 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat -rwx------ 1 centos centos 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab
-rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab
[centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##程式的發起者非屬主非屬組,應用/etc/fstab檔案的其他使用者的許可權
# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 # 例二: 2)應用屬組的x許可權 》》》使用者名稱同屬主同屬組,屬主無x許可權,僅屬組有x許可權,不能執行 centos使用者下 [centos@izpo45bh60h6bsz ~]$ chmod 670 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##使用者匹配到的為屬主的許可權,沒有執行許可權位x許可權
-rw-rwx--- 1 centos centos 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab
-rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab
[centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##程式不能發起
- bash : /tmp/cat : Permission denied
###由以下的過程分析,首個匹配到centos時,應用首個匹配到的使用者的許可權。 後面就算有同使用者名稱的屬組也不應用其許可權 #############################
》》》使用者名稱不同屬主同屬組,僅屬組有x許可權,能執行 ###### 修改屬主為root 回到root使用者 [root@izpo45bh60h6bsz ~] # chown root /tmp/cat
[root@izpo45bh60h6bsz ~] # ls -l /tmp/cat ##使用者為root,應用屬主的許可權,沒有任何許可權
----rwx--- 1 root centos 54080 Aug 5 11:29 /tmp/cat
[root@izpo45bh60h6bsz ~] # /tmp/cat /etc/fstab ###嘿嘿,好奇怪
# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 #######root使用者沒有許可權,執行。依然有執行許可權########### 回到centos使用者 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##使用者為centos,第一個匹配到的是屬組,應用屬組的許可權,屬組有x許可權,可執行為一個程式
----rwx--- 1 root centos 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab
-rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab
[centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##能夠執行為程式,程式名為使用者名稱,此時應用/etc/fstab檔案其他使用者的許可權
# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 #######比對來看,第一個被匹配到的使用者類別,應用對應類的許可權########### 》》》使用者名稱同屬主同屬組,僅其他有x許可權,不能執行 root使用者下 [root@izpo45bh60h6bsz ~] # chown centos:centos /tmp/cat
[root@izpo45bh60h6bsz ~] # chmod 667 /tmp/cat
centos使用者下 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##匹配到第一個同使用者名稱的是屬主,應用屬主的許可權,無x許可權,不能執行為程式
-rw-rw-rwx 1 centos centos 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab
-rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab
[centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##不能執行為一個程式,許可權拒絕
- bash : /tmp/cat : Permission denied
例三 3)應用其他使用者的許可權 》》》使用者名稱不同屬主不同屬組,其他有x許可權,能執行 root使用者下 [root@izpo45bh60h6bsz ~] # chown root.root /tmp/cat
[root@izpo45bh60h6bsz ~] # chmod 755 /tmp/cat
centos使用者下 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##匹配不到,應用其他許可權,其他有x許可權,可以執行為一個程式
-rwxr-xr-x 1 root root 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##程式名為使用者名稱,程式名不能匹配到/etc/fstab屬主或屬組的許可權,應用其他許可權,可讀
# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 ..... |
特殊許可權位
SUID
檔案對檔案有x許可權,執行為程式後,程式名是程式發起者的名字。
當存在SUID許可權後,執行為程式,其程式名是檔案的屬主
SGID
任何人建立檔案和目錄時,其屬組為建立者的基本組
一旦某目錄被設定了SGID許可權,則對此目錄有寫許可權的使用者,在此目錄或子目錄中建立的檔案為目錄的基本組
Sticky
限制公共場景的限制 ,對於一個多人可寫的目錄,如果設定了sticky,則每個使用者僅能刪除自己的檔案。避免別人刪除不屬於自己的檔案,設定了sticky許可權
SUID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
1、在root中修改檔案的屬主和屬組 user.user user:user [root@izpo45bh60h6bsz ~] # chown root.centos /tmp/cat
[root@izpo45bh60h6bsz ~] # ls -l /tmp/cat
-rw-rw-rwx 1 root centos 54080 Aug 5 11:29 /tmp/cat
2、在centos中修改許可權屬組必須有x [root@izpo45bh60h6bsz ~] # su - centos
Last login: Sat Aug 5 11:33:41 CST 2017 on pts /1
Welcome 10003 your home /home/centos
[centos@izpo45bh60h6bsz ~]$ chmod 755 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##使用者centos匹配到屬組的許可權,能執行為一個程式,程式的名字為程式發起者的名字
-rwxr-xr-x 1 root centos 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /etc/shadow ---------- 1 root root 2895 Aug 5 11:31 /etc/shadow
[centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/shadow ##程式名不能匹配到/etc/shadow屬主或屬組,應用其他使用者的許可權,其他使用者沒有任何許可權。
/tmp/cat : /etc/shadow : Permission denied
3、在root使用者中給此使用者授權suid許可權 [centos@izpo45bh60h6bsz ~]$ chmod u+s /tmp/cat
chmod : changing permissions of ‘ /tmp/cat ’: Operation not permitted
[root@izpo45bh60h6bsz ~] # chmod u+s /tmp/cat
[root@izpo45bh60h6bsz ~] # ls -l /tmp/cat
-rwsr-xr-x 1 root centos 54080 Aug 5 11:29 /tmp/cat
4、在centos使用者中執行 cat /etc/shadow
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##確認許可權
-rwsr-xr-x 1 root centos 54080 Aug 5 11:29 /tmp/cat
[centos@izpo45bh60h6bsz ~]$ ls -l /etc/shadow ##確認centos使用者對檔案沒有許可權,centos使用者發起的程式對檔案也不可能有許可權
---------- 1 root root 2895 Aug 5 11:31 /etc/shadow [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/shadow ##執行時,程式的屬主為root,root對任何檔案都能操作
............. test1:!!:17327:0:99999:7:100:100: test2:!!:17327:0:99999:7:100:100: test3:!!:17327:0:99999:7:100:100: test4:!!:17327:0:99999:7:100:100: .............. |
問題1:使用者為自己設定密碼時,需要修改shadow檔案,shadow檔案對任何使用者都沒有寫許可權,故而,使用者執行passwd命令後,其程式名不是程式發起者,而是……..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
[root@izpo45bh60h6bsz ~] # fgrep "test1" /etc/shadow ##純文字字元組成的PATTERN,對目標文字逐行匹配,列印匹配到的字元所在的行
test1:!!:17327:0:99999:7:100:100: test18:$6........... [root@izpo45bh60h6bsz ~] # su - test1
[test1@izpo45bh60h6bsz ~]$ passwd ##使用者沒有密碼時,不能修改
Changing password for user test1.
Changing password for test1.
(current) UNIX password: passwd : Authentication token manipulation error
[root@izpo45bh60h6bsz ~] # echo "123" | passwd --stdin test1
Changing password for user test1.
passwd : all authentication tokens updated successfully.
[root@izpo45bh60h6bsz ~] # fgrep `test1` /etc/shadow
test1:$6$tMqP7HCh$Idl82b1AqXsAssE57D2jWQNrMgPRtZ7RP /OoSTNMHzG1fEruYW49f6QZfe314ETLlYwWu5YtUJu8Rx . /Uceif/ :17383:0:99999:7:::
test18:$6........... 嘗試修改密碼,從而修改shadow檔案 ##生成密碼,普通使用者修改密碼必須滿足密碼複雜度機制,長,隨機,週期長,數字、字母、特殊字元3種 [root@izpo45bh60h6bsz ~] # tr -dc `a-zA-Z0-9` < /dev/urandom | head -c 6 | xargs
FjG1LO ##修改密碼 [test1@izpo45bh60h6bsz ~]$ passwd
Changing password for user test1.
Changing password for test1.
(current) UNIX password: New password: Retype new password: passwd : all authentication tokens updated successfully.
[test1@izpo45bh60h6bsz ~]$ 檢視shadow檔案 [root@izpo45bh60h6bsz ~] # fgrep `test1` /etc/shadow
test1:$6$KvgQbaJC$AxpTwktyH1kDldxoMXorPwL /2VHEutGaZq/RXXL8xLPtgStH23MDfHPlo5ZtFKRJTjKv/kmduyeBmPd1xiyV60 :17383:0:99999:7:::
test18:$6........... ###########密碼部分改變的原因############## [test1@izpo45bh60h6bsz ~]$ ls -l /bin/passwd ##test1使用者能執行此檔案
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
[test1@izpo45bh60h6bsz ~]$ ls -l /etc/shadow ##執行後的程式名為root,故而能改shadow檔案
---------- 1 root root 2985 Aug 5 13:56 /etc/shadow
|
SGID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
1、準備目錄 [root@izpo45bh60h6bsz ~] # cd /tmp
[root@izpo45bh60h6bsz tmp] # mkdir test
[root@izpo45bh60h6bsz tmp] # ls -ld test ##root使用者建立,屬組、主為root
drwxr-xr-x 2 root root 4096 Aug 5 14:54 test
[root@izpo45bh60h6bsz tmp] # groupadd mygrp #新增使用者
[root@izpo45bh60h6bsz tmp] # groupadd distro
[root@izpo45bh60h6bsz tmp] # useradd centos
[root@izpo45bh60h6bsz tmp] # chown .mygrp test
[root@izpo45bh60h6bsz tmp] # ls -ld test
drwxr-xr-x 2 root mygrp 4096 Aug 5 14:54 test
》》》任何人建立檔案和目錄時,其屬組為建立者的基本組 1、mygrp使用者組內的使用者對此目錄有w許可權 [root@izpo45bh60h6bsz tmp] # chmod g+w test
[root@izpo45bh60h6bsz tmp] # ls -ld test
drwxrwxr-x 2 root mygrp 4096 Aug 5 14:54 test
2、新增distro、centos使用者到mygrp組內,讓distro使用者擁有mygrp組的許可權 [root@izpo45bh60h6bsz tmp] # su - centos
[centos@izpo45bh60h6bsz ~]$ mkdir /tmp/test/a .centos
mkdir : cannot create directory ‘ /tmp/test/a .centos’: Permission denied
[centos@izpo45bh60h6bsz ~]$ touch /tmp/test/a .centos
touch : cannot touch ‘ /tmp/test/a .centos’: Permission denied
[root@izpo45bh60h6bsz tmp] # gpasswd -a distro mygrp
[root@izpo45bh60h6bsz tmp] # gpasswd -a centos mygrp
3、讓mygrp、distro使用者分別在此目錄中建立檔案 [root@izpo45bh60h6bsz tmp] # su - centos
[centos@izpo45bh60h6bsz ~]$ touch /tmp/test/a .centos
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test/a .centos
-rw-rw-r-- 1 centos centos 0 Aug 5 15:12 /tmp/test/a .centos
[root@izpo45bh60h6bsz tmp] # su - distro
[distro@izpo45bh60h6bsz ~]$ touch /tmp/test/a .distro
[distro@izpo45bh60h6bsz ~]$ ls -l /tmp/test/a .distro
-rw-rw-r-- 1 distro distro 0 Aug 5 15:12 /tmp/test/a .distro
》》》一旦某目錄被設定了SGID許可權,則對此目錄有寫許可權的使用者,在此目錄或子目錄中建立的檔案為目錄的基本組 root使用者中 [root@izpo45bh60h6bsz tmp] # ls -ld test
drwxr-xr-x 2 root mygrp 4096 Aug 5 14:54 test
[root@izpo45bh60h6bsz tmp] # chmod g+s /tmp/test
[root@izpo45bh60h6bsz tmp] # ls -ld /tmp/test
drwxrwsr-x 2 root mygrp 4096 Aug 5 15:12 /tmp/test ##小寫s
1、讓mygrp、distro使用者分別在此目錄中建立檔案 [root@izpo45bh60h6bsz tmp] # su - distro
[distro@izpo45bh60h6bsz ~]$ touch /tmp/test/b .distro
[distro@izpo45bh60h6bsz ~]$ ls -l /tmp/test/b .distro
-rw-rw-r-- 1 distro mygrp 0 Aug 5 15:16 /tmp/test/b .distro
[root@izpo45bh60h6bsz tmp] # su - centos
[centos@izpo45bh60h6bsz ~]$ touch /tmp/test/b .centos
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test/b .centos
-rw-rw-r-- 1 centos mygrp 0 Aug 5 15:16 /tmp/test/b .centos
|
Sticky
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
##centos使用者對目錄有寫許可權,可以刪除任意檔案 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test
total 0 -rw-rw-r-- 1 centos centos 0 Aug 5 15:12 a.centos -rw-rw-r-- 1 distro distro 0 Aug 5 15:12 a.distro -rw-rw-r-- 1 centos mygrp 0 Aug 5 15:16 b.centos -rw-rw-r-- 1 distro mygrp 0 Aug 5 15:16 b.distro ##刪除a.distro檔案 [centos@izpo45bh60h6bsz ~]$ rm /tmp/test/a .distro
rm : remove write-protected regular empty file ‘ /tmp/test/a .distro’? y
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test
total 0 -rw-rw-r-- 1 centos centos 0 Aug 5 15:12 a.centos -rw-rw-r-- 1 centos mygrp 0 Aug 5 15:16 b.centos -rw-rw-r-- 1 distro mygrp 0 Aug 5 15:16 b.distro ##避免別人刪除不屬於自己的檔案,設定了sticky許可權 [root@izpo45bh60h6bsz tmp] # chmod o+t /tmp/test
[root@izpo45bh60h6bsz tmp] # su - centos
[centos@izpo45bh60h6bsz ~]$ rm /tmp/test/b .distro
rm : cannot remove ‘ /tmp/test/b .distro’: Operation not permitted
|
SGID,SUID,STICKY
sst 三位二進位制用八進位制表示
1
2
3
4
5
6
7
8
9
10
11
|
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
1777 --> sticky + rwxrwxrwx 4777 --> suid + rwxrwxrwx |
特殊許可權位對映
SUID佔據屬主的執行許可權位
SGID佔據屬組的執行許可權位
STICKY佔據其他的執行許可權位
分別用s,s,t表示,有x許可權時,用小寶,沒有s許可權時,用大寫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
SUID許可權位 1)有x drwxrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos drwxrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos # chmod u+s a.centos drwsrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos 2)無x # chmod u-x a.centos drwSrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos SGID許可權位 1)有x -rwxrwxr-- 1 distro distro 0 Aug 5 15:04 a.distro # chmod g+s a.distro -rw-rwsr-- 1 distro distro 0 Aug 5 15:04 a.distro 2)無x # chmod g-x a.distro -rw-rwSr-- 1 distro distro 0 Aug 5 15:04 a.distro STICKY許可權位 1)無x -rw-rw-r-- 1 mygrp mygrp 0 Aug 5 15:03 a.mygrp chmod o+t a.mygrp
-rw-rw-r-T 1 mygrp mygrp 0 Aug 5 15:03 a.mygrp 2)有x # chmod o+x a.mygrp -rw-rw-r-t 1 mygrp mygrp 0 Aug 5 15:03 a.mygrp
|
相關文章
- 『學了就忘』Linux許可權管理 — 55、檔案特殊許可權Linux
- Linux 特殊許可權a,i,t,s以及查詢帶有特殊許可權的所有檔案Linux
- Linux特殊許可權之suid、sgid、sbit許可權LinuxUI
- Linux 特殊許可權Linux
- Linux檔案特殊許可權 SUID/SGID/Sticky BitLinuxUI
- Linux雜記 查詢與特殊許可權位Linux
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- Linux檔案許可權Linux
- Linux 檔案許可權Linux
- Linux&shell 之Linux檔案許可權Linux
- Linux檔案特殊許可權 SUID/SGID/Sticky Bit (zt)LinuxUI
- linux基礎:檔案安全與許可權(轉)Linux
- [svc]linux檔案許可權Linux
- Linux檔案基本許可權Linux
- linux 檔案許可權管理Linux
- Linux精講——特殊許可權之stick_bitLinux
- linux許可權補充:rwt rwT rws rwS 特殊許可權Linux
- Linux的檔案存取許可權和0644許可權Linux
- linux特殊許可權s和tLinux
- Linux更改檔案及目錄許可權問題Linux
- 如何備份及恢復Linux檔案許可權Linux
- 如何備份及恢復 Linux 檔案許可權Linux
- Linux的檔案許可權管理Linux
- linux檔案許可權 詳解Linux
- Linux 檔案許可權總結Linux
- Linux中的檔案許可權Linux
- linux檢視檔案許可權Linux
- Linux檔案許可權詳解Linux
- linux檔案許可權問題Linux
- Linux中檔案的許可權Linux
- Linux檔案許可權管理命令Linux
- Linux 基礎回顧 之 檔案與許可權Linux
- 使用者及檔案許可權管理
- Linux中檔案的特殊許可權有幾種?分別是什麼?Linux
- 關於Linux作業系統下檔案特殊許可權的解釋Linux作業系統
- Linux 檔案許可權管理的方法Linux
- linux 檔案、資料夾許可權Linux
- Linux下Web目錄和檔案安全許可權設定LinuxWeb