終端:登入(1)或su(1)?

終端:登入(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

不列印任何內容。

AFAIK,su -l相當於login.

答案2

su(1) 將使用目前環境建立新 shell,一旦退出子 shell,您將返回呼叫 shell。

login(1) 也會建立一個新的 shell,但具有全新的環境。

答案3

這不是完全相同的工作。 「su」只是更改擁有目前終端的用戶,「login」(如名稱所示)建立新會話。

我不是 OSX 專家,但在所有 *NIX 中,重要的安全考慮是禁止遠端直接登入 root。只能以一般使用者登入後透過「su」完成。

相關內容