也许我使用的术语不正确,所以请允许我使用一个例子来解释一下。以用户“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 可能会有所帮助。