为什么zsh获得root而bash没有



我有点困惑。如果我将zsh复制到tmp并更改Set UID位chmod u+s,请更改用户,然后运行复制的zsh。如果我运行whoami,我会获得root。如果我对bash做同样的事情,在我运行bash之后,我会得到我之前登录的用户。他们的行为有什么不同的原因吗?

这是bash的一个有意特性;要禁用它,请使用-p选项运行bash。

更详细地说:当您运行setuid二进制文件时,进程的有效uid(euid(被设置为二进制文件的有效uid,但其实际uid不会更改。bash检测到差异,并(如果没有传递-p选项(将其euid重置为实际uid。

来自bash手册:

使用不相等的有效UID/GID调用

如果启动Bash时有效用户(组(id不等于实际用户(组的(id,并且未提供-p选项,则不会读取启动文件,外壳函数不会从环境中继承,SHELLOPTSBASHOPTSCDPATHGLOBIGNORE变量(如果它们出现在环境中(将被忽略,并且有效用户id设置为实际用户id。如果在调用时提供-p选项,则启动行为相同,但不会重置有效的用户id。

相关内容

  • 没有找到相关文章

最新更新