Есть ли однострочная команда для выполнения `su`?


15

Я могу сделать suс, su <username>и он просит мой пароль. Есть ли параметр пароля для suтакого, что мне не будет предложено ввести пароль?

например su <username> -p <password>


Кажется, вопрос идеально подходит суперпользователю: superuser.com :-)
HongboZhu

Вы можете посмотреть здесь: stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh или здесь: stackoverflow.com/questions/715908/…
HongboZhu

1
я получил это superuserотсюда, superuser.com/questions/67765/…
alvas

Ответы:


12

Если вы хотите написать скрипт, который запускается от имени другого пользователя, то что-то вроде этого работает, хотя оно выводит слово «пароль» без перевода строки в стандартный формат.

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
!

2
хм, «стандарт в должен быть tty»
Джон Лоуренс

Я получаю ту же ошибку
MaxV

12
Получение ошибки: su: must be run from a terminal.
Абхишек Кашьяп

5

Я верю, что нет, и это не будет хорошей идеей. Вот почему:
если вы напишите пароль в подобной команде su <username> -p <password>, он будет сохранен в виде обычного текста в вашей истории bash. Это, безусловно, огромная проблема безопасности.

Если вам нужно запускать команды с su(или sudo) в автоматическом режиме, напишите сценарий, содержащий команды без suили, sudoи запуститеsu <username> script.sh


1
su root script все еще нужно ввести passwd.
Дай

@DaiKaixian да, но он нигде не сохраняется, и никто не может его прочитать
Wayne_Yux

2
Вы можете попробовать что-то вроде:. echo <passwd> | sudo -S <command-line>Хотя это не безопасно, но это работает.
Дай

1
весь смысл моего ответа состоит в том, что не стоит сохранять пароль в команде. Поэтому я советую не делать этого
Wayne_Yux

-3

Если вы хотите выполнить некоторые конкретные команды от имени нового пользователя, используйте следующую команду:
sudo -u {username} {command to be executed as the new user}


Это не отвечает на вопрос. Вопрос в том, как обработать пароль.
Стивен К
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.