zoukankan      html  css  js  c++  java
  • 第十六天-linux文件系统特殊权限suid-sgid

      在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/passwd
    xiaorui@xiaorui:~$ ls -l `which passwd`
    -rwsr-xr-x 1 root root 51224  7月 22 21:49 /usr/bin/passwd
    xiaorui@xiaorui:~/test/suid$ touch suid
    xiaorui@xiaorui:~/test/suid$ ls -l
    -rw-rw-r-- 1 xiaorui xiaorui 0 11月 28 20:59 suid
    xiaorui@xiaorui:~/test/suid$ chmod 4664 suid
    xiaorui@xiaorui:~/test/suid$ ls -l
    -rwSrw-r-- 1 xiaorui xiaorui 0 11月 28 20:59 suid
    xiaorui@xiaorui:/lrz$ rm -f suid
    rm: cannot remove 'suid': Permission denied
    root@xiaorui:/lrz# chmod u+s suid
    root@xiaorui:/lrz# ls -l
    -rwSr--r-- 1 root root 0 11月 28 21:13 suid
    xiaorui@xiaorui:/lrz$ rm -f suid
    rm: cannot remove 'suid': Permission denied
    root@xiaorui:~# which rm
    /bin/rm
    root@xiaorui:~# chmod u+s /bin/rm
    root@xiaorui:~# ls -l /bin/rm
    -rwsr-xr-x 1 root root 60160 11月  5 01:45 /bin/rm
    xiaorui@xiaorui:/lrz$ ls -l suid
    -rwSr--r-- 1 root root 0 Nov 28 21:13 suid
    xiaorui@xiaorui:/lrz$ rm -f suid
    xiaorui@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/chsh
    root@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/sudo
    root@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/locate
    root@xiaorui:~# ls -l `which locate`
    lrwxrwxrwx 1 root root 24  9月 20 07:49 /usr/bin/locate -> /etc/alternatives/locate
    root@xiaorui:~# ls -l /etc/alternatives/locate
    lrwxrwxrwx 1 root root 16  9月 20 07:49 /etc/alternatives/locate -> /usr/bin/mlocate
    root@xiaorui:~# ls -l /usr/bin/mlocate
    -rwxr-sr-x 1 root mlocate 39520 11月 18  2014 /usr/bin/mlocate
    root@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 adminuser
    root@xiaorui:~# mkdir /home/admins
    root@xiaorui:~# ls -ld /home/admins
    drwxr-xr-x 2 root root 4096 11月 28 22:09 /home/admins
    root@xiaorui:~# chown .adminuser /home/admins/
    root@xiaorui:~# ls -ld /home/admins
    drwxr-xr-x 2 root adminuser 4096 11月 28 22:09 /home/admins
    root@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.txt
    root@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 /tmp
    drwxrwxrwt 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

  • 相关阅读:
    转: CvMat,Mat和IplImage之间的转化和拷贝
    Scrapy 轻松定制网络爬虫
    榆林暑期见习
    文学
    浅析Redis实现lock互斥访问资源
    使用Maven构建Java项目
    正则表达式
    CSS 命名规范及标题供参考与学习
    从零开始在linux下搭建wordpress博客
    python2和python3的区别
  • 原文地址:https://www.cnblogs.com/migongci0412/p/5003846.html
Copyright © 2011-2022 走看看