Хранение пароля sudo как переменной в скрипте - это безопасно? - PullRequest
11 голосов
/ 08 сентября 2010

Безопасно ли хранить мой пароль таким образом?

echo 'Write sudo password (will not be displayed) and hit enter'
read -s password

Мне нужно, чтобы команды были такими:

echo $password | sudo -S apt-get install -y foo bar

Ответы [ 4 ]

12 голосов
/ 08 сентября 2010

Нет, потому что вы можете увидеть это через /proc/$PID/cmdline.

Я предлагаю не пытаться заново изобретать средства безопасности. Программа sudo может кешировать ваш пароль.

11 голосов
/ 08 сентября 2010

Лучшим подходом было бы отредактировать файл sudoers и добавить программу, для которой не требуется пароль ...

Выполните sudo visudo и добавьте следующее, чтобы ваша группа администраторов могла запустить apt-getбез пароля: %admin ALL = NOPASSWD: /usr/bin/apt-get

Подробнее см. на странице руководства sudoers.

5 голосов
/ 08 сентября 2010
echo $password | sudo -S apt-get install -y foo bar 

Это немного опасно.Если пользователь уже аутентифицирован в sudo, sudo не будет запрашивать пароль снова, и он будет перенаправлен в apt-get, что может привести к странным результатам (например, если скрипт postinstall задает вопрос).Вместо этого я бы предложил использовать

sudo -k                         # remove previous sudo timestamp
echo $password | sudo -v -S     # create a new one for 15 minutes
sudo apt-get ...                # execute the command

.

РЕДАКТИРОВАТЬ: Дирк прав, что пароль виден очень короткое время, пока выполняется echo.Пожалуйста, смотрите мой ответ как расширенный комментарий, а не как ответ на ваш вопрос.

0 голосов
/ 08 сентября 2010

sudo - это с открытым исходным кодом , так что вы можете скомпилировать свою собственную версию, которая принимает пароль в качестве параметра командной строки.

...