SUID : 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者
chmod u+s FILENAME (添加 SUID 权限) chmod u-s FILENAME (除去 SUID 权限)
如果 FILE 本身原来就有执行权限,则 SUID 显示为 s ; 否则显示 S;
passwd 命令默认具有 SUID 权限
SGID : 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者
(目录有SGID权限后,在该目录下创建文件目录时,创建后的属组为目录自身的属组,)
chmod g+s FILENAME (添加 SGID 权限) chmod g-s FILENAME (除去 SGID 权限)
Sticky : 在一个公共目录,每个用户都可以创建文件,删除自己的文件,但不能删除别人的文件
chmod o+t DIR (添加 Sticky 权限) chmod o-t DIR (删除 Sticky 权限)
权限表示 SUID : 4 SGID : 2 Sticky : 1
chmod 1755 /tmp/test #test具有 755 权限 ( 1 : 具有 Sticky 权限 )
chmod 3755 /tmp/test #test具有 755 权限 ( 2 : 具有 SGID 权限 + 1 : 具有 Sticky 权限 )
chmod 5755 /tmp/test #test具有 755 权限 ( 4 : 具有 SUID 权限 + 1 : 具有 Sticky 权限 )
SUID : 实例测试 让一个普通用户对指定文件具有原本没有的查看权限 (user1用户可以查看 /etc/shadow 文件)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@nono ~]
# useradd user1 #添加用户 user1
[root@nono ~]
# passwd user1
[root@nono ~]
# ls -l /etc/shadow #查看 /etc/shadow 文件, 权限为000 , 所以除 root 用户都不能查看
----------. 1 root root 1053 7月 3 09:54
/etc/shadow
[root@nono ~]
# su - user1 #切换到 user1 用户, 应为 /etc/
[user1@nono ~]$
cat
/etc/shadow
# user1用户 没有权限查看
cat
:
/etc/shadow
: 权限不够
[root@beiyong2 ~]
# chmod u+s /bin/cat #将 /bin/cat 命令添加 SUID 命令,则 cat 命令的执行者为文件自身的属主,而不是启动者
[root@beiyong2 ~]
# ls -l /bin/cat #SUID命令添加成功 (若 /bin/cat 本身就有执行权限,添加 SUID 命令后,显示为 s 否则为 S)
-rwsr-xr-x. 1 root root 48568 10月 15 2014
/bin/cat
[user1@beiyong2 ~]$
cat
/etc/shadow
# user1 可以查看
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
|
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
|
[user1@beiyong2 ~]$
tail
-5
/etc/passwd
#当前系统中有三个用户
user1:x:500:500::
/home/user1
:
/bin/bash
hbase:x:501:501::
/home/hbase
:
/bin/bash
hadoop:x:502:502::
/home/hadoop
:
/bin/bash
[root@beiyong2 tmp]
# mkdir project #在 /tmp 目录中创建新目录 /project
[root@beiyong2 tmp]
# groupadd developteam #添加 developteam 用户组
[root@beiyong2 tmp]
# chown -R :developteam /tmp/project #将 /tmp/project 目录的属组改为 developteam
[root@beiyong2 tmp]
# ls -ld project
drwxr-xr-x. 2 root developteam 4096 7月 9 02:15 project
[root@beiyong2 tmp]
# usermod -a -G developteam user1 #分别将三个用户的附加组改为 developteam
[root@beiyong2 tmp]
# usermod -a -G developteam hadoop
[root@beiyong2 tmp]
# usermod -a -G developteam hbase
[root@beiyong2 project]
# ls -ld #查看 project 目录的权限,属组没有写权限,则添加
drwxr-xr-x. 2 root developteam 4096 7月 9 02:15 .
[root@beiyong2 project]
# chmod g+w /tmp/project
[root@beiyong2 project]
# ls -ld
drwxrwxr-x. 2 root developteam 4096 7月 9 02:15 .
[root@beiyong2 project]
# ll #分别用三个账号在 /tmp/project 目录中创建文件( a.* ),没有权限编辑其他人的文件
-rw-rw-r--. 1 hadoop hadoop 0 7月 9 02:33 a.hadoop
-rw-rw-r--. 1 hbase hbase 0 7月 9 02:34 a.hbase
-rw-rw-r--. 1 user1 user1 0 7月 9 02:33 a.user1
[root@beiyong2 ~]
# chmod g+s /tmp/project #给 /tmp/project 目录添加 SGID 权限
[root@beiyong2 ~]
# ls -ld /tmp/project
drwxrwsr-x. 2 root developteam 4096 7月 9 02:34
/tmp/project
[root@beiyong2 project]
# ll #添加 SGID 权限后,用三个用户分别在 /tmp/project 目录下创建文件 ( b.* )
总用量 0
-rw-rw-r--. 1 hadoop hadoop 0 7月 9 02:33 a.hadoop
-rw-rw-r--. 1 hbase hbase 0 7月 9 02:34 a.hbase
-rw-rw-r--. 1 user1 user1 0 7月 9 02:33 a.user1
-rw-rw-r--. 1 hadoop developteam 0 7月 9 02:37 b.hadoop
-rw-rw-r--. 1 hbase developteam 0 7月 9 02:37 b.hbase
-rw-rw-r--. 1 user1 developteam 0 7月 9 02:37 b.user1
|
三个用户创建的文件,属组均为developteam,故可以互相编辑删除对方文件
Sticky : 实例测试 同一目录下用户可以创建文件并互相修改,但不能删除对方的文件
1
2
3
4
5
|
[root@beiyong2 project]
# chmod o+t /tmp/project #给 /tmp/project 添加 Sticky 权限,(原有执行权限 t , 否则 T)
[root@beiyong2 project]
# ls -ld
drwxrwsr-t. 2 root developteam 4096 7月 9 02:42 .
[hadoop@beiyong2 project]$
rm
-rf a.hbase
#用 hadoop 用户身份去删除 hbase 用户的文件,删除失败(只能删除自己的文件目录)
rm
: 无法删除
"a.hbase"
: 不允许的操作
|
完毕~~~
本文转自 mlwzby 51CTO博客,原文链接:http://blog.51cto.com/aby028/1814364