Я могу сделать su
с su <username>
, и он запрашивает мой пароль. Существует ли параметр пароля для su
, чтобы мне не запрашивали пароль?
, например. su <username> -p <password>
Если вы хотите написать скрипт, который запускается от имени другого пользователя, что-то вроде этого работает, хотя он выводит слово «пароль» без новой строки, чтобы стандартизировать
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
, если у вас есть пользователь по имени fred с паролем 1234 и хочет получить ls из домашнего каталога fred как fred, без отображаемой строки пароля это будет выглядеть как
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Я верю, что нет, и это не будет хорошей идеей. И вот почему:
Если вы напишите пароль в такой команде, как su <username> -p <password>
, он будет сохранен в виде обычного текста в вашей истории bash. Это, безусловно, огромная проблема безопасности.
Если вам нужно запустить команды с su
(или sudo
) в автоматическом режиме, напишите сценарий, содержащий команды без su
или sudo
, и запустите su <username> script.sh
Если вы хотите выполнить некоторые конкретные команды как новый пользователь, используйте следующую команду:
sudo -u {username} {command to be executed as the new user}