В чем разница между этими двумя командами? Какая из них лучше подходит для эмуляции другого пользователя, когда нужно что-то сделать от его имени?
sudo -H -iu USER command
и
su -l USER -c command
решение1
Если вы попытаетесь выполнить команду от имени другого пользователя, sudo
система запросит ваш пароль, su
система запросит пароль другого пользователя.
Sudo разработан для того, чтобы позволить непривилегированным пользователям запускать определенные команды от имени другого пользователя, и поэтому имеет файл конфигурации, /etc/sudoers
который позволяет системным администраторам решать, какие пользователи могут запускать какие команды от имени каких других пользователей. IE имеет детальные разрешения. Эти разрешения могут быть предоставлены и позже отозваны.
Su также позволяет вам запускать команду от имени другого пользователя, но не разработан с такими же детальными разрешениями. Если у вас есть пароль другого пользователя, вы можете делать что угодно от имени этого пользователя. Единственный способ отозвать этот доступ — изменить пароль другого пользователя.
Мнение оповещения
В общем, я бы использовал sudo
not su
для большинства вещей. Проще дать кому-то небольшой доступ, не просто передавая ему ключи ко всему (ваш пароль)
Конец мнения
Не так уж много разницы в эффекте при попытке "симулировать" другого пользователя. Оба запускают вашу команду от имени этого пользователя.