Я могу сделать su
с, su <username>
и он просит мой пароль. Есть ли параметр пароля для su
такого, что мне не будет предложено ввести пароль?
например su <username> -p <password>
superuser
отсюда, superuser.com/questions/67765/…
Я могу сделать su
с, su <username>
и он просит мой пароль. Есть ли параметр пароля для su
такого, что мне не будет предложено ввести пароль?
например su <username> -p <password>
superuser
отсюда, superuser.com/questions/67765/…
Ответы:
Если вы хотите написать скрипт, который запускается от имени другого пользователя, то что-то вроде этого работает, хотя оно выводит слово «пароль» без перевода строки в стандартный формат.
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
если у вас есть пользователь с именем fred с паролем 1234 и вы хотите получить домашний каталог ls of fred как fred, без отображаемой строки пароля, это будет выглядеть
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
su: must be run from a terminal
.
Я верю, что нет, и это не будет хорошей идеей. Вот почему:
если вы напишите пароль в подобной команде su <username> -p <password>
, он будет сохранен в виде обычного текста в вашей истории bash. Это, безусловно, огромная проблема безопасности.
Если вам нужно запускать команды с su
(или sudo
) в автоматическом режиме, напишите сценарий, содержащий команды без su
или, sudo
и запуститеsu <username> script.sh
su root script
все еще нужно ввести passwd.
echo <passwd> | sudo -S <command-line>
Хотя это не безопасно, но это работает.