• SUID


    SUID

    1. 从passwd说起

    普通用户可以使用passwd命令来修改自己的密码,但大家都知道修改密码需要保存到/etc/shadow文件中,但从shadow文件中可以看到只有root用户可写,那么普通用户是如何修改这个文件的呢?

    ls -l /etc/shadow
    -rw-r----- 1 root shadow 1404 Nov  7  2019 /etc/shadow

    我们先看passwd命令的权限,可以看到该文件属于root:root,对于用户、组、其它的可执行权限分别为s, x, xx可以理解,这个s的用处是什么呢?

    ls -l `which passwd`
    -rwsr-xr-x 1 root root 54256 May 17  2017 /usr/bin/passwd

    实际上s是SUID权限,这个文件表示非所有者在执行这个文件时,会临时以所有者的权限执行,也就是passwd在普通用户执行时,可以获取root权限,从而将修改的密码保存到了/etc/passwd权限。当然如果不想普通用户修改自己的密码,可以把passwd的SUID权限拿掉。

    同理,也存在SGID权限。

    2. 应用

    如果平时遇到一个应用程序需要获得管理员权限才能执行,但普通用户并没有加到sudoers,或者加到sudoers但不想每次都敲sudo,这时就可以将该文件加上SUID权限。

    首先,如果想使用管理员权限,先要把可执行文件(test)改成root所有:

    > ll test
    -rwxrwxr-x 1 gr gr 45878368 Sep 23 15:59 test*
    > sudo chown root:root tesst
    > ll test
    -rwxrwxr-x 1 root root 45878368 Sep 23 15:59 test*

    对文件添加SUID权限,使用如下命令:

    > sudo chmod u+s test
    > ll test
    -rwsrwxr-x 1 root root 45878368 Sep 23 15:59 test*

    如果想添加SGID权限,使用如下命令:

    > sudo chmod g+s test
    > ll tests
    -rwxrwsr-x 1 root root 45878368 Sep 23 15:59 test*
  • 相关阅读:
    RIGHT JOIN 关键字
    LEFT JOIN 关键字
    INNER JOIN 关键字
    连接(JOIN)
    别名
    BETWEEN 操作符
    IN 操作符
    通配符
    LIKE 操作符
    LIMIT 子句
  • 原文地址:https://www.cnblogs.com/gr-nick/p/13719558.html
Copyright © 2020-2023  润新知