如何以没有 shell 访问权限的用户身份运行 shell?

如何以没有 shell 访问权限的用户身份运行 shell?

也许我使用的术语不正确,所以请允许我使用一个例子来解释一下。以用户“centos”身份通过 SSH 连接并cat /etc/passwd在我的 Centos7 机器上执行,我得到:

centos:x:1000:1000:Cloud User:/home/centos:/bin/bash
www:x:1001:1001::/home/www:/sbin/nologin

现在,如果我尝试,sudo su www -我会得到:此帐户目前不可用。

据我所知,这是由于暂无登录部分。我想要做的是能够在 SSH 会话中切换到 www 用户,而无需(如果可能)让 www 用户能够通过 SSH 直接访问服务器,例如当 root 用户尝试 SSH 并收到一条错误消息,提示您应该以以下身份登录centos然后根据需要更改为 root。

实现期望行为的措施是什么?

答案1

只需在用户下运行一个 shell。

sudo -u www bash

答案2

su 命令接受一个 shell选项-s),这样您就可以指定使用哪个 shell,从而让您成为用户。

sudo su www -s /bin/bash

答案3

您正在寻找的命令语法是sudo -u www -s

www即使您通常没有 shell,这也会将您作为用户放入 shell 中。

答案4

是的,您需要修改 /etc/passwd - 为该用户设置一个有效的 shell。为了以该用户身份运行命令,sudo -u www 可能会有所帮助。

相关内容