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
| # -rw-r--r-- 1 root root 0 Nov 6 07:40 test1 ugo都没执行权限
# chmod 7644 test1 原权限是644,都加上特殊权限
# -rwSr-Sr-T 1 root root 0 Nov 6 07:43 test1 属主、属组、其他用户执行权限变为S、S、T.
# -rwxr-xr-x 1 root root 0 Nov 6 07:43 test2 ugo都有执行权限
# chmod 7755 test2 原权限是655,都加上特殊权限
# -rwsr-sr-t 1 root root 0 Nov 6 07:49 test2 属主、属组、其他用户执行权限变为s、s、t.
特殊权限对可执行文件的作用:
suid特殊权限是以可执行文件的所有者的权限来运行这一文件,不是以执行者的权限运行该命令。
sgid特殊权限是以可执行文件的群组的权限来运行这一文件。下例说明:
ls -l /bin/ping
-rwsr-xr-x 1 root root 35832 Apr 24 2009 /bin/ping
可见ping命令有suid特殊权限。ping可以测试网络是否连通。切换到yaoyao用户,ping一下可见网络确实连通。
[yaoyao@localhost test2]# ping www.baidu.com -c4
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=47 time=10.0 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=46 time=14.3 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=46 time=17.7 ms
64 bytes from 61.135.169.121: icmp_seq=4 ttl=46 time=23.9 ms
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 10.090/16.539/23.938/5.067 ms
切换到root用户,用chmod命令去掉ping命令的suid权限,再切换到yaoyao用户,测试一下是否能ping通。
# chmod u-s /bin/ping
# ls -l /bin/ping
# -rwxr-xr-x 1 root root 35832 Apr 24 2009 /bin/ping
$ $ ping www.baidu.com
ping: icmp open socket: Operation not permitted
这次就无法ping通,由此可见,suid特殊权限是以可执行文件的所有者的权限来运行这一文件,不是以执行者的权限运行该命令。
特殊权限对目录的作用:
在一个目录上设置了sticky特殊权限,只有文件的所有者和用户才能删除该目录的文件,而不理会属组和其他用户的写权限。
在一个目录上设置sgid特殊权限,则只要是同组成员,都可以在此目录查看、创建、删除文件。
经常会对目录设置sticky和suid权限以方便管理。即同组成员可以查看和写入本目录下的各个文件,却不能删除。如下:
首先创建两个用户xiaoyao和xiaoming用于测试,再创建一个house目录。创建一个love分组,于是xiaoyao和xiaoming便相爱了...将这对恋人xiaoyao和xiaoming加入love分组,house目录属组设置为love,再给house目录设置sgid和sticky这两个特殊权限。
# useradd xiaoyao
# useradd xiaoming
# mkdir house
# groupadd love
将xiaoyao和xiaoming加入love组内。
# usermod -G love xiaoyao
# usermod -G love xiaoming
#id xiaoyao;id xiaoming
uid=503(xiaoyao) gid=504(xiaoyao) groups=504(xiaoyao),506(love) context=root:system_r:unco nfined_t:SystemLow-SystemHigh
uid=504(xiaoming) gid=505(xiaoming) groups=505(xiaoming),506(love) context=root:system_r:u nconfined_t:SystemLow-SystemHigh 可以看到用户xiaoyao和xiaoming都在love组内。
将house目录属组改为love组
# chown :love house
# ls -l
drwxr-xr-x 2 root love 4096 Nov 6 09:34 house
添加sgid和sticky特殊权限,并且属组具有写权限(属组内用户可以创建文件,否则不能)。
# chmod 3775 house
drwxr-sr-t 2 root love 4096 Nov 6 09:34 house
切换到用户xiaoming,并创建文件xiaoming,写入一句话"I love you"
$ echo "I love you xiaoyao." > xiaoming
切换到用户xiaoyao,创建文件xiaoyao,且写入"Me too."
$ echo "Me too" > xiaoyao
查看house目录内容,可发现所创建文件属组都是love。
ls -l
-rw-rw-r-- 1 xiaoming love 19 Nov 6 09:40 xiaoming
-rw-rw-r-- 1 xiaoyao love 6 Nov 6 09:41 xiaoyao
用户xiaoyao尝试删除house目录下的xiaoming,这时提示不允许,但可以写入,这就是共享信息吧。
[xiaoyao@localhost house]$ rm xiaoming
rm: cannot remove `xiaoming': Operation not permitted
$ echo "Baby." >> xiaoming
$ cat xiaoming
Me too.
Baby.
第一次写博客,很尽心,仍不免有错误,请大家指出,小明在这谢谢大家了。
|