Терминал: логин (1) или su(1)?
Я на OSX. Можно использовать как login(1), так и su(1), чтобы войти под любым пользователем.
Но два двоичных файла, чтобы сделать ту же работу??
Какой из них потребляет меньше системных ресурсов?
Какой из них менее подвержен угрозам безопасности?
Какие отличия под капотом?
[Примечание, я не против получить root-доступ. Я просто планирую автоматизировать доступ к учетным записям в многопользовательском сетевом *nix. ]
3 ответа
login
запускает оболочку со свежей средой, отбрасывая текущую.
su
запускает оболочку с использованием существующей среды и изменяет только переменные HOME, USER и SHELL.
Например,
> export foo=bar
> su <username>
> echo $foo
bar
но:
> export foo=bar
> login <username>
> echo $foo
ничего не печатает.
НАСКОЛЬКО МНЕ ИЗВЕСТНО, su -l
эквивалентно login
,
su(1) создаст новую оболочку с текущей средой, и как только вы выйдете из подоболочки, вы вернетесь к вызывающей оболочке.
login (1) тоже создаст новую оболочку, но с новой средой.
Это не совсем та же работа. "su" просто меняет пользователя, которому принадлежит текущий терминал, "login" (как следует из названия) создает новый сеанс.
Я не эксперт по OSX, но во всех *NIX важен вопрос безопасности - запретить удаленный прямой вход в систему для root. Это следует делать только с помощью su после входа в систему как обычного пользователя.