不久前,在使用非特权 LXC 时,我发现如果我用来su
切换到用户,创建容器的命令会失败,但如果我用来ssh user@localhost
登录,则创建容器的命令会失败。
这不是一个与 LXC 相关的问题,但它让我想知道如何在不留下引用或从旧用户中引入变量的情况下最好地切换用户?
谢谢!
答案1
su
和之间的区别ssh
在于,后者实际上涉及登录 shell,而前者默认情况下不涉及登录 shell——尽管它确实创建了一个新的交互式 shell(请参阅顶部的 INVOCATIONman bash
了解交互的和登录贝壳)。从man su
:
为了向后兼容,su 默认不更改当前目录,只设置环境变量 HOME 和 SHELL(如果目标用户不是 root,则加上 USER 和 LOGNAME)。建议始终使用--login选项(而不是它的快捷方式-)以避免混合环境造成的副作用。
所以,你可以尝试su --login
看看这是否符合你的要求。
我假设您正在使用 GUI,这就是您不简单退出并再次登录的原因。然而,那可能login
无论如何,通过简单地从您使用的任何终端运行,都是可能的(我相信,取决于您的初始化系统) 。如果它有效,您应该会看到正常的login:
提示,完成后您可以exit
按照提示进行操作su
。