终端:login(1) 还是 su(1)?

终端:login(1) 还是 su(1)?

我使用的是 OSX。可以同时使用登录(1)或者苏(1)以任何用户身份登录。

但是,两个二进制文件可以完成相同的工作吗?

哪一个消耗更少系统资源

哪一个不太容易安全风险

哪个内部差异

[请注意,我不介意获得 root 访问权限。我只是计划自动访问多用户、联网的 *nix 上的帐户。]

答案1

login启动一个具有新环境的 shell,丢弃当前环境。

su使用现有环境启动 shell 并且仅修改 HOME、USER 和 SHELL 变量。

例如,

> export foo=bar
> su <username>
> echo $foo
bar

但:

> export foo=bar
> login <username>
> echo $foo

不打印任何内容。

据我所知,su -l相当于login

答案2

su(1) 将使用当前环境创建一个新的 shell,并且一旦退出子 shell,您将返回到调用 shell。

login(1) 也将创建一个新的 shell,但具有一个新的环境。

答案3

这不是完全相同的工作。“su”仅改变拥有当前终端的用户,“login”(顾名思义)创建新的会话。

我不是 OSX 专家,但在所有 *NIX 中,重要的安全考虑是禁止远程直接登录 root。这只能在以普通用户身份登录后通过“su”来完成。

相关内容