su otherusername
其中’otherusername’是另一个用户的用户名,该用户名存在.
它什么都不做.在那之后,我仍然是根. whoami返回root,我创建的任何文件都属于root,也就是说su就不是su.
但是,它不会给出任何错误消息.如果我尝试使用无效的用户名su,它会给出错误消息.
我错过了什么?
su做的是以另一个用户身份执行进程.默认情况下,它选择的进程是/ etc / passwd中相关用户的最后一个字段中的任何内容.这通常是一个shell,例如/ bin / sh或/ bin / bash.当该过程结束时,您将被转储回您开始使用的原始shell,由root拥有.
就su而言,它已成功切换到正确的用户,因此不需要任何错误消息.然后通过执行它将控制权交给配置的shell.如果这个shell类似于/ bin / false,那么它只会执行/ bin / false始终执行的操作,即以1(false)状态退出,退回到root用户拥有的父shell. / bin / true执行相同的操作,但状态为0(true).
其他伪壳可能表现出不同的行为.例如,/usr/sbin / nologin回声
This account is currently not available.
在退出前1.
您可以使用usermod -s / bin / bash otherusername作为root用户更改已配置的shell.
如果你将它与cd一起使用,你可能会在sudo周围看到类似的令人困惑的行为.如果您是普通用户并且无法进入目录,则sudo cd目录将不会显示错误消息,不会将您更改为root并且不会更改您的目录.
原因是它以root身份启动一个新的shell,将目录更改为正确的目录,然后立即退出,让您回到原始目录中的原始shell中.