matteo Asked: 2012-06-11 14:01:10 +0800 CST2012-06-11 14:01:10 +0800 CST 2012-06-11 14:01:10 +0800 CST centos: su 静默失败 772 在我以 root 身份通过 SSH 登录的 CentOS 服务器上,我执行以下操作: su 其他用户名 其中“otherusername”是存在的另一个用户的用户名。 它什么都不做。在那之后,我仍然是根。whoami 返回 root,我创建的任何文件都属于 root,即 su 只是不 su。 但是它没有给出任何错误信息。如果我尝试使用无效的用户名进行 su,它会给出一条错误消息。 我错过了什么?? centos su 1 个回答 Voted Best Answer Ladadadada 2012-06-12T01:04:16+08:002012-06-12T01:04:16+08:00 otherusername中是否有有效的 shell /etc/passwd? 做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回声 此帐户当前不可用。 在退出 1 之前。 usermod -s /bin/bash otherusername您可以更改为 root 用户配置的 shell 。 sudo如果将它与. 一起使用,您可能会看到类似的令人困惑的行为cd。如果您是普通用户并且无法cd进入目录,sudo cd directory则不会打印任何错误消息,不会将您更改为 root,也不会更改您的目录。 这样做的原因是它以 root 身份启动一个新的 shell,将目录更改为正确的目录,然后立即退出,让您回到原始目录中的原始 shell。
otherusername中是否有有效的 shell
/etc/passwd
?做
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
回声在退出 1 之前。
usermod -s /bin/bash otherusername
您可以更改为 root 用户配置的 shell 。sudo
如果将它与. 一起使用,您可能会看到类似的令人困惑的行为cd
。如果您是普通用户并且无法cd
进入目录,sudo cd directory
则不会打印任何错误消息,不会将您更改为 root,也不会更改您的目录。这样做的原因是它以 root 身份启动一个新的 shell,将目录更改为正确的目录,然后立即退出,让您回到原始目录中的原始 shell。