对于容器中没有 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,在这种情况下会导致其失败。