Терминал: login(1) или su(1)?

Терминал: login(1) или su(1)?

Я на OSX. Могу использовать обавойти(1)иливс(1)войти в систему как любой пользователь.

Но два двоичных файла для выполнения одной и той же работы?

Кто потребляет меньшесистемные ресурсы?

Какой из них менее склонен криски безопасности?

Которыйразличия под капотом?

[ Обратите внимание, я не против получения root-доступа. Я просто планирую автоматизировать доступ к аккаунтам на многопользовательском сетевом *nix. ]

решение1

loginзапускает оболочку с новой средой, отбрасывая текущую.

suзапускает оболочку, используя существующую среду, и изменяет только переменные HOME, USER и SHELL.

Например,

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

но:

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

ничего не печатает.

Насколько мне известно, su -lэквивалентно login.

решение2

su(1) создаст новую оболочку с текущей средой, и после выхода из подоболочки вы вернетесь в вызвавшую ее оболочку.

login(1) также создаст новую оболочку, но с новой средой.

решение3

Это не совсем одно и то же. «su» просто меняет пользователя, которому принадлежит текущий терминал, «login» (как следует из названия) создает новый сеанс.

Я не эксперт по OSX, но во всех *NIX-ах важным соображением безопасности является запрет на удаленный прямой вход в систему root. Это должно быть сделано только с помощью "su" после входа в систему как обычный пользователь.

Связанный контент