У меня есть скрипт bash, который использует sudo
несколько раз. В этом есть пара странных моментов.
- Он запрашивает мой пароль через несколько секунд после того, как я уже ввел его для предыдущей команды.
- Второй раз, когда я ввожу свой пароль, он отображается на дисплее.
Вот соответствующие биты сценария.
sudo service apache2 stop
drush sql-dump --root="$SITE_DIR" --structure-tables-key=svn --ordered-dump | grep -iv 'dump completed on' | sudo tee "$DB_DIR/${SITE_NAME}.sql" > /dev/null
sudo svn diff "$DB_DIR" | less
sudo svn commit -m "$MESSAGE" "$DB_DIR"
sudo service apache2 start
Первый пароль для остановки Apache, и он работает как положено. Как уже упоминалось, sudo tee
не «вспоминает», что у меня есть повышенные привилегии, снова запрашивает пароль и выводит его на экран. Учитывая , что tee
все о вторя экран, я играл немного с простыми скриптами , которые имеют | sudo tee
, и все они работают как положено.
Изменить: Я посмотрел на саму команду drush
, и это bash-файл, который вызывает PHP с использованием exec
. Похоже, что у него есть потенциал - есть идеи? Вот линия от drush
.
exec php $SCRIPT_PATH --php=`which php` "$@"
Edit2: искал что-то связанное со сценариями Ruby и наткнулся на этот пост о повышенных привилегиях в сценариях из serverfault.