以非root用户身份登录终端


18

我希望这是一个可以从Google迅速得到答案的问题。但是不知何故,谷歌使我失败。假设我已经登录到终端会话,并且想暂时以另一个我知道其密码的非root用户身份工作而不离开会话。以该用户身份登录后,我需要为该用户正确设置主目录等,直到我注销为止。我怎么做?

我试过了

su -- username

然后键入密码,它没有产生任何错误,但是我看不到命令​​提示符的任何可见变化,它仍然显示myname @ myhost。主目录也是myname的目录,而不是我尝试以此登录的新登录名。

我-现在很明显-linux / Ubuntu经验不足,所以欢迎提供任何信息。

Answers:


18

您要更改为哪个用户?

问题是您正在尝试“ su”到没有分配外壳程序的用户。系统或安装软件时某些软件包创建的大多数用户(例如mysql,pulse等)都没有分配外壳。

您可以通过查看/etc/passwd文件来检查是否为用户分配了外壳,只需查看每个用户行的末尾,是否表示/bin/false没有分配外壳,是否有类似/bin/bash或其他名称的外壳外壳程序,那么您应该能够“ su”到该用户。

当我说“外壳分配”时,它基本上意味着它具有“外壳访问”

即使该用户没有外壳程序访问权限,您也可以始终以该用户身份执行命令

 sudo -u user command

如果用户没有外壳程序访问权限,仍然可以使用“ sudo -u user command”以该用户身份执行命令
Sam Sam

附加-s /bin/bash到您的su命令或用于chsh -u username -s /bin/bash更改用户的外壳。当心这可能带来的安全隐患。
gertvdijk 2012年

6

如果您有sudo访问权限,那么我建议

sudo su username -

它的作用基本相同,但是只要求您知道密码,而其他用户则不需要。

但是,如果您具有其他用户密码:

su username - 应该工作正常。

注意1-它在结尾。


您所描述的两种方式都与我的行为完全相同-命令被接受且没有错误,但是主目录不正确,并且提示说我仍然是原始用户。如果之后我注销,则完全注销。
Andrew Savinykh

好的,您的用户登录是否被允许登录?您可以通过将其shell设置为“ true”来阻止帐户登录,这将完全按照您的描述进行。这曾经在“系统”帐户(例如“ apache”和“ ftp”)上大量使用,以检查sudo cat /etc/passwd此处是否粘贴内容。只需注意一下,并确保用户在其产品线的最后一点上具有真实的外壳即可。
coteyr 2012年

1
旁注,更正确的方法是将shell设置为“ false”,这将引发错误。尽管出于技术或伪安全性的原因,某些系统和帐户仍然使用true(以加剧黑客之声)
coteyr 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.