我使用的是 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”来完成。