zoukankan      html  css  js  c++  java
  • 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*
  • 相关阅读:
    敏捷开发读后感
    结对编程:电梯调度 (张恿、赵骞)
    软件工程 Individual Project
    [转]SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
    下拉菜单demo---参考阿里云首页顶部下拉菜单
    走进spring之springmvc实战篇(二)
    剖析javascript全局变量和局部变量
    走进spring之springmvc实战篇(一)
    日常总结——JSP篇(补)
    我的程序员之路
  • 原文地址:https://www.cnblogs.com/gr-nick/p/13719558.html
Copyright © 2011-2022 走看看