在 LXC 容器中对没有有效 shell 的帐户使用 sudo

在 LXC 容器中对没有有效 shell 的帐户使用 sudo

对于容器中没有 shell 的帐户(例如用户 www-data),我想使用 sudo,而不必进入 /root/ 文件夹。

为什么只有在第二次使用后才有效?如何避免使用 sudo 进入 /root/ 目录?

$ sudo lxc-attach -n hugo
root@hugo:~# sudo -H -u golanger /bin/bash && cd /home/golanger
golanger@hugo:/root$
golanger@hugo:/root$ exit
root@hugo:/home/golanger# sudo -H -u golanger /bin/bash && cd /home/golanger
golanger@hugo:~$ 

答案1

在 中sudo -H -u golanger /bin/bash && cd /home/golanger,您当前的 shell 执行sudo -H -u golanger /bin/bash,当其成功完成后,运行cd /home/golanger。因此cd不会影响sudo命令。

sudo本身不会重置工作目录(-H仅重置主目录,而不是当前工作目录)。如果您想进入sudo cd目标用户的主目录,没有命令行选项可以直接完成这项工作。您必须解决这个问题:

sudo -H -u golanger /bin/sh -c 'cd; /bin/bash'

请注意,使用该-i选项,sudo将尝试cd进入目标用户的主目录,但它也会使用用户的登录 shell,在这种情况下会导致其失败。

相关内容