![Полное переключение пользователей в Bash (проблемы GNOME/Keyring)](https://rvso.com/image/154456/%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%B9%20%D0%B2%20Bash%20(%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B%20GNOME%2FKeyring).png)
Я не понимаю разницу между запуском команды от имени «user1» в терминале и запуском команды от имени «sudo -Hiu user1 [команда]».
Если я запускаю
/home/user1/script.sh
, скрипт успешно вызывает программу, которая обращается к GNOME/Keyring, и программа получает пароль без каких-либо проблем.
Однако если я запускаю sudo -Hiu user1 /home/user1/script.sh
, программа, вызываемая скриптом, не может успешно получить доступ к GNOME/Keyring.
В чем разница между выполнением команд от имени пользователя user1 и запуском sudo -Hiu user1 [command]
, и как можно полностью изменить пользователя, например, с root на user1 в bash?
решение1
По сути, нет никакой разницы между запуском sudo -Hiu user1 [command]
и запуском [command]
как user1
(или даже запуском sudo [command]
), хотя есть некоторые тонкие различия (как указано в вашем вопросе). Большинство из них связаны с GNOME, которые можно обойти с помощью команды gksudo
(или в более новых системах с помощью admin:///full/path/to/command arguments
или pkexec [command] arguments
).
Вы можете использовать su user1
root (или любого другого пользователя, если знаете пароль) для запуска оболочки как user1
.