博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十六天-linux文件系统特殊权限suid-sgid
阅读量:4359 次
发布时间:2019-06-07

本文共 4927 字,大约阅读时间需要 16 分钟。

  在Linux系统中,有时候执行某个命令时,需要对另一个文件进行操作,而要做的文件又不是普通用户有权限进行操作的。例如,修改用户密码passwd,该命令文件的所有者和组都是root,同组用户和其他用户都具有执行权限,即普通用户也可以使用命令修改自己的密码,而被修改的文件/etc/passwd又没有普通用户的权限,这时就可以通过suid来解决。提示:用八进制数4000表示setuid权限位。

suid知识小结:
1、用户对应的前三位的x位上如果有s就表示设置了suid。当x位上没有x的时候,suid就是S。
2、setuid位是让普通用户可以以root(或其他)用户的角色运行root(或其他)账号才能运行的程序或命令。
3、仅对二进制命令或程序有效,不能用在shell等类似脚本文件上(因为shell脚本仅仅调用二进制命令程序而已,因此,具有权限还需要看二进制命令本身)。
4、二进制命令或程序需要可执行权限x。
5、suid修改的是执行命令的权限,而不是处理的目标文件的权限。
6、suid权限仅在程序执行过程中有效。
7、执行命令的任意系统用户都可以获得该命令程序执行期间对应的拥有者的所有权限。
8、suid是一把双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。系统中很少用到suid功能的命令将其取消suid权限(安全优化)。

举例:

xiaorui@xiaorui:~$ which passwd/usr/bin/passwdxiaorui@xiaorui:~$ ls -l `which passwd`-rwsr-xr-x 1 root root 51224  7月 22 21:49 /usr/bin/passwdxiaorui@xiaorui:~/test/suid$ touch suidxiaorui@xiaorui:~/test/suid$ ls -l-rw-rw-r-- 1 xiaorui xiaorui 0 11月 28 20:59 suidxiaorui@xiaorui:~/test/suid$ chmod 4664 suidxiaorui@xiaorui:~/test/suid$ ls -l-rwSrw-r-- 1 xiaorui xiaorui 0 11月 28 20:59 suidxiaorui@xiaorui:/lrz$ rm -f suidrm: cannot remove 'suid': Permission deniedroot@xiaorui:/lrz# chmod u+s suidroot@xiaorui:/lrz# ls -l-rwSr--r-- 1 root root 0 11月 28 21:13 suidxiaorui@xiaorui:/lrz$ rm -f suidrm: cannot remove 'suid': Permission deniedroot@xiaorui:~# which rm/bin/rmroot@xiaorui:~# chmod u+s /bin/rmroot@xiaorui:~# ls -l /bin/rm-rwsr-xr-x 1 root root 60160 11月  5 01:45 /bin/rmxiaorui@xiaorui:/lrz$ ls -l suid-rwSr--r-- 1 root root 0 Nov 28 21:13 suidxiaorui@xiaorui:/lrz$ rm -f suidxiaorui@xiaorui:/lrz$ ls

如何查找拥有suid权限的文件?

root@xiaorui:~# find /usr/bin -type f -perm 4755/usr/bin/passwd/usr/bin/pkexec/usr/bin/newgrp/usr/bin/sudo/usr/bin/mtr/usr/bin/chfn/usr/bin/gpasswd/usr/bin/chshroot@xiaorui:~#root@xiaorui:~# find /usr/bin -type f -perm 4755|xargs ls -l-rwsr-xr-x 1 root root  50712  7月 22 21:49 /usr/bin/chfn-rwsr-xr-x 1 root root  41432  7月 22 21:49 /usr/bin/chsh-rwsr-xr-x 1 root root  68312  7月 22 21:49 /usr/bin/gpasswd-rwsr-xr-x 1 root root  75320 10月 25  2014 /usr/bin/mtr-rwsr-xr-x 1 root root  36688  7月 22 21:49 /usr/bin/newgrp-rwsr-xr-x 1 root root  51224  7月 22 21:49 /usr/bin/passwd-rwsr-xr-x 1 root root  23304 11月 25 05:16 /usr/bin/pkexec-rwsr-xr-x 1 root root 151072  3月 13  2015 /usr/bin/sudoroot@xiaorui:~# find /usr/bin -type f -perm 4755 -exec ls -l {} \;-rwsr-xr-x 1 root root 51224  7月 22 21:49 /usr/bin/passwd-rwsr-xr-x 1 root root 23304 11月 25 05:16 /usr/bin/pkexec-rwsr-xr-x 1 root root 36688  7月 22 21:49 /usr/bin/newgrp-rwsr-xr-x 1 root root 151072  3月 13  2015 /usr/bin/sudo-rwsr-xr-x 1 root root 75320 10月 25  2014 /usr/bin/mtr-rwsr-xr-x 1 root root 50712  7月 22 21:49 /usr/bin/chfn-rwsr-xr-x 1 root root 68312  7月 22 21:49 /usr/bin/gpasswd-rwsr-xr-x 1 root root 41432  7月 22 21:49 /usr/bin/chsh

sgid知识小结:

  与suid不同的是,sgid既可以针对文件也可以针对目录设置。
  对于文件,sgid的功能如下:
    1、sgid仅对二进制命令及程序有效。
    2、二进制命令或程序需要有可执行权限x。
    3、执行程序的任意用户可以获得该命令程序执行期间所属组的权限。
  对于目录,sgid的功能如下:
    1、用户在此目录下创建的文件和目录,具有和此目录相同的用户组。
    setgid位主要用在目录中,当为某个目录设置了setgid位之后,在该目录中新创建的文件具有该目录的所有者权限,而不是创建该文件的用户的默认所有者。这样,使得在多个用户之间共享一个目录中的文件变得简单。提示:用八进制数2000表示setgid权限位。
sgid locate命令案例:

root@xiaorui:~# which locate/usr/bin/locateroot@xiaorui:~# ls -l `which locate`lrwxrwxrwx 1 root root 24  9月 20 07:49 /usr/bin/locate -> /etc/alternatives/locateroot@xiaorui:~# ls -l /etc/alternatives/locatelrwxrwxrwx 1 root root 16  9月 20 07:49 /etc/alternatives/locate -> /usr/bin/mlocateroot@xiaorui:~# ls -l /usr/bin/mlocate-rwxr-sr-x 1 root mlocate 39520 11月 18  2014 /usr/bin/mlocateroot@xiaorui:~# ls -l /var/lib/mlocate/mlocate.db-rw-r----- 1 root mlocate 9988044 11月 28 20:36 /var/lib/mlocate/mlocate.db

rhce考试题:

  创建共享目录:创建共享目录/home/admins,属组为adminuser,adminuser组成员对目录有读写和执行的权限,其他所有用户没有任何权限(除root除外),在/home/admins目录中创建的文件,会自动继承adminuser组

root@xiaorui:~# groupadd adminuserroot@xiaorui:~# mkdir /home/adminsroot@xiaorui:~# ls -ld /home/adminsdrwxr-xr-x 2 root root 4096 11月 28 22:09 /home/adminsroot@xiaorui:~# chown .adminuser /home/admins/root@xiaorui:~# ls -ld /home/adminsdrwxr-xr-x 2 root adminuser 4096 11月 28 22:09 /home/adminsroot@xiaorui:~# chmod 2770 /home/admins/root@xiaorui:~# ls -ld /home/admins/drwxrws--- 2 root adminuser 4096 11月 28 22:09 /home/admins/root@xiaorui:~# touch /home/admins/sgid.txtroot@xiaorui:~# ls -l /home/admins/sgid.txt-rw-r--r-- 1 root adminuser 0 11月 28 22:10 /home/admins/sgid.txt

suid、sgid小结:
     针对suid以及sgid,工作中尽量不用,多用sudo 管理,如果有可能查找系统无用suid位的命令等进行撤除。s S都是suid(用户位),sgid(用户组位)的标示,和x重合时就显示小写的字母s。

粘滞位sticky Bit(sbit)及设置方法

  粘滞位的理解,我们还是先看一个例子:

root@xiaorui:~# ls -ld /tmpdrwxrwxrwt 17 root root 4096 11月 28 23:57 /tmp

  我们看到/tmp权限位最后的一个字母是t,这就是设置了粘滞位。

  粘滞位的设置,用八进制的1000位来表示
  粘滞位的功能现在也很少用了,不过对与像/tmp目录这样的,是整个系统临时文件存储地,还是有点意义。一个目录即使它的所有权限都放开rwxrwxrwx,如果是设置了粘滞位,除非目录的属主和root用户有权限删除它,除此之外其他用户不能删除这个目录。用途一般是把一个文件夹的权限都打开,然后来共享文件,像/tmp目录一样。
sticky:比sgid更安全,让多个用户都具有写权限的目录,每个用户只能删除自己的文件。表现在other位,用t表示,如果没有执行权限,那么就是T,如果有执行权限,那么就是t。
  特殊权限对应的数字suid 4000 ,sgid 2000,粘滞位1000

 

转载于:https://www.cnblogs.com/migongci0412/p/5003846.html

你可能感兴趣的文章
Linux文件系统介绍
查看>>
[.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建
查看>>
mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句
查看>>
SpringMVC_中文乱码的配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)...
查看>>
apache使用总结
查看>>
getopt、getopt_long 简介
查看>>
Linux eject 命令
查看>>
Python 常用函数
查看>>
作为布尔表达式的时候会被解释器当做False的值
查看>>
linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
查看>>
程序人生之我们的故事:十年如歌(9)
查看>>
用户体验之“双语标签”
查看>>
IOS打包和发布简单介绍
查看>>
scp ssh 拷贝文件夹
查看>>
JavaScript学习05 定时器
查看>>
CSS
查看>>
Ubuntu 11.04安装GCC 4.6.1
查看>>
甲骨论
查看>>
C# 集合类-接口
查看>>
InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
查看>>