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 文件)
[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 : 实例测试 三个用户可以在同一目录中,创建文件目录,并互相修改文件内容
[user1@beiyong2 ~]$ tail -5 /etc/passwd #当前系统中有三个用户user1:x:500:500::/home/user1:/bin/bashhbase:x:501:501::/home/hbase:/bin/bashhadoop: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 projectdrwxr-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 -lddrwxrwxr-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/projectdrwxrwsr-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 : 实例测试 同一目录下用户可以创建文件并互相修改,但不能删除对方的文件
[root@beiyong2 project]# chmod o+t /tmp/project #给 /tmp/project 添加 Sticky 权限,(原有执行权限 t , 否则 T)[root@beiyong2 project]# ls -lddrwxrwsr-t. 2 root developteam 4096 7月 9 02:42 .[hadoop@beiyong2 project]$ rm -rf a.hbase #用 hadoop 用户身份去删除 hbase 用户的文件,删除失败(只能删除自己的文件目录)rm: 无法删除"a.hbase": 不允许的操作
完毕~~~
本文出自 “LULU” 博客,请务必保留此出处http://aby028.blog.51cto.com/5371905/1814364