Linux中的sudo和su

本文最后更新于2015年4月18日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

首先,实地看看sudo和su命令的位置和相关属性:

注意最后的”ls -l”命令中看到的’s’字符,setuid位,参考学习:Linux 文件系统安全攻略。然后进入正文:

搜索关键字:

sudo su 环境变量

==

当前用户的环境变量不会应用到sudo启动的程序,除非使用-E选项

-E, –preserve-env

Indicates to the security policy that the user wishes to preserve their existing environment variables.  The security policy may return an error if the user does not have permission to preserve the environment.

如果经常需要这样做,可以在~/.bashrc(或其他shell配置文件)中加入命令别名:

在/etc/sudoers中添加以下内容作用相同:

可以把需要传递环境变量的命令设置到env_keep:

==

su 与 su – 的区别

shell会切换到username的身份,但是shell的环境变量还是和切换前的一样,注意,这样可能会运行不了username的某些程序——因为某些环境变量的问题。

shell会切换到username的身份,但是shell的环境变量会变成username身份下的环境变量。所以建议在切换用户时使用后一种用法。

==

sudo命令的-i选项

-i, –login

Run the shell specified by the target user’s password database entry as a login shell.  This means that login-specific resource files such as .profile or .login will be read by the shell.  If a command is specified, it is passed to the shell for execution via the shell’s -c option.  If no command is specified, an interactive shell is executed.  sudo attempts to change to that user’s home directory before running the shell.  The command is run with an environment similar to the one a user would receive at log in.  The Command Environment section in the sudoers(5) manual documents how the -i option affects the environment in which a command is run when the sudoers policy is in use.

看上去类似于上面的 su – ,都是使用被切换用户自己的环境变量,不过暂未测试两者之间的区别,可以参考后面给出的几个链接。

==

参考链接:
更多参考链接:

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2072.html

《Linux中的sudo和su》上有7条评论

  1. 滥用 sudo 命令绕过受限 shell 进行权限提升的方法
    http://touhidshaikh.com/blog/?p=790

    What is SUDO?
    Sudoer FIle Syntax.
    Exploiting SUDO user:
    /usr/bin/find
    /usr/bin/nano
    /usr/bin/vim
    /usr/bin/man
    /usr/bin/awk
    /usr/bin/less
    /usr/bin/nmap ( –interactive and –script method)
    /bin/more
    /usr/bin/wget
    /usr/sbin/apache2

发表评论

电子邮件地址不会被公开。 必填项已用*标注