特殊权限-SUID,SGID,Sticky 学习笔记
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~] #useradduser1#添加用户user1 [root@nono~] #passwduser1 [root@nono~] #ls-l/etc/shadow#查看/etc/shadow文件,权限为000,所以除root用户都不能查看 ----------.1rootroot10537月309:54 /etc/shadow [root@nono~] #su-user1#切换到user1用户,应为/etc/ [user1@nono~]$ cat /etc/shadow #user1用户没有权限查看 cat : /etc/shadow :权限不够 [root@beiyong2~] #chmodu+s/bin/cat#将/bin/cat命令添加SUID命令,则cat命令的执行者为文件自身的属主,而不是启动者 [root@beiyong2~] #ls-l/bin/cat#SUID命令添加成功(若/bin/cat本身就有执行权限,添加SUID命令后,显示为s否则为S) -rwsr-xr-x.1rootroot4856810月152014 /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@beiyong2tmp] #mkdirproject#在/tmp目录中创建新目录/project [root@beiyong2tmp] #groupadddevelopteam#添加developteam用户组 [root@beiyong2tmp] #chown-R:developteam/tmp/project#将/tmp/project目录的属组改为developteam [root@beiyong2tmp] #ls-ldproject drwxr-xr-x.2rootdevelopteam40967月902:15project [root@beiyong2tmp] #usermod-a-Gdevelopteamuser1#分别将三个用户的附加组改为developteam [root@beiyong2tmp] #usermod-a-Gdevelopteamhadoop [root@beiyong2tmp] #usermod-a-Gdevelopteamhbase [root@beiyong2project] #ls-ld#查看project目录的权限,属组没有写权限,则添加 drwxr-xr-x.2rootdevelopteam40967月902:15. [root@beiyong2project] #chmodg+w/tmp/project [root@beiyong2project] #ls-ld drwxrwxr-x.2rootdevelopteam40967月902:15. [root@beiyong2project] #ll#分别用三个账号在/tmp/project目录中创建文件(a.*),没有权限编辑其他人的文件 -rw-rw-r--.1hadoophadoop07月902:33a.hadoop -rw-rw-r--.1hbasehbase07月902:34a.hbase -rw-rw-r--.1user1user107月902:33a.user1 [root@beiyong2~] #chmodg+s/tmp/project#给/tmp/project目录添加SGID权限 [root@beiyong2~] #ls-ld/tmp/project drwxrwsr-x.2rootdevelopteam40967月902:34 /tmp/project [root@beiyong2project] #ll#添加SGID权限后,用三个用户分别在/tmp/project目录下创建文件(b.*) 总用量0 -rw-rw-r--.1hadoophadoop07月902:33a.hadoop -rw-rw-r--.1hbasehbase07月902:34a.hbase -rw-rw-r--.1user1user107月902:33a.user1 -rw-rw-r--.1hadoopdevelopteam07月902:37b.hadoop -rw-rw-r--.1hbasedevelopteam07月902:37b.hbase -rw-rw-r--.1user1developteam07月902:37b.user1 三个用户创建的文件,属组均为developteam,故可以互相编辑删除对方文件 Sticky : 实例测试 同一目录下用户可以创建文件并互相修改,但不能删除对方的文件 1 2 3 4 5 [root@beiyong2project] #chmodo+t/tmp/project#给/tmp/project添加Sticky权限,(原有执行权限t,否则T) [root@beiyong2project] #ls-ld drwxrwsr-t.2rootdevelopteam40967月902:42. [hadoop@beiyong2project]$ rm -rfa.hbase #用hadoop用户身份去删除hbase用户的文件,删除失败(只能删除自己的文件目录) rm :无法删除 "a.hbase" :不允许的操作 完毕~~~ 本文转自 mlwzby 51CTO博客,原文链接:http://blog.51cto.com/aby028/1814364