Рейтинг:0

Помогите с 'sudo --askpass' на сервере Ubuntu/Apache2

флаг no

мне нужна помощь с судо-А команда в сценарии оболочки. Опция -A предназначена для AskPass. Согласно справочная страница sudo:

Обычно, если sudo запрашивает пароль, он считывает его из пользовательского Терминал. Если указана опция -A (askpass), графическая) вспомогательная программа выполняется для чтения пароля пользователя и вывести пароль на стандартный вывод. Если SUDO_ASKPASS установлена ​​переменная окружения, она указывает путь к хелперу программа.

Меня интересует AskPass, потому что я использую apache2 (v 2.4.41) на сервере Ubuntu 16.04. Веб-страница Apache должна выполнить сценарий оболочки. Веб-страница выполняет скрипт от имени пользователя www-данные. Но скрипт должен запускать другую программу, которую можно запустить только от имени пользователя. пользователь1. Так что мне нужно sudo --AskPass так что пользователь www-данные может запустить пользователя пользователь1код.

Моя установка: следуя таким примерам, как здесь и здесь, я написал эти два скрипта в /var/www/html/ каталог:

user1@myUbuntu:/var/www/html$ ls -l
-rwxr-xr-x 1 www-data TestUsers 29 фев 28 11:34 passwdScript.sh
-rwxrwxr-x 1 www-data TestUsers 2009 28 февраля 11:32 webpageScript.sh
user1@myUbuntu:/var/www/html$

(Группа TestUsers включает пользователей www-данные и пользователь1.) Немного passwdScript.sh script предназначен для отправки пароля user1 на STD OUT:

user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ больше passwdScript.sh
#!/бин/ш
эхо 'мой пароль'
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ ./passwdScript.sh
мой пароль
user1@myUbuntu:/var/www/html$

(Да, я знаю, что это очень небезопасно, но я буду единственным человеком, использующим этот сервер. Меня беспокоит только функциональность.)

Хорошо: теперь, когда все вышеперечисленное настроено, вот мой веб-страницаScript.sh скрипт, который предназначен для вызова sudo --AskPass:

echo "Сценарий выполняется."
экспортировать SUDO_ASKPASS="/var/www/html/passwdScript.sh"
эхо "Тест :: $SUDO_ASKPASS"
cd /home/user1/путь/к/другому/каталогу
pwd
sudo -u user1 --askpass $SUDO_ASKPASS 'runUser1Script.exe'
echo "Выполнение скрипта завершено."

Вот менее впечатляющий вывод:

user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ sudo -u www-data ./webpageScript.sh
Скрипт работает.
Тест :: /var/www/html/passwdScript.sh
/home/user1/путь/к/другому/каталогу
Извините, попробуйте еще раз.
Извините, попробуйте еще раз.
sudo: 3 попытки неправильного ввода пароля
Закончил выполнение скрипта.
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$

Таким образом, очевидно, sudo --аскпароль команда не принимает пользователь1пароль. Я пробовал варианты этой команды весь день. Кто-нибудь видит, что я делаю неправильно?

waltinator avatar
флаг it
Ubuntu 16.04 прошла дату окончания срока службы и больше не поддерживается в AskUbuntu.
флаг hr
Я думаю, что фундаментальная проблема заключается в том, что (по крайней мере, в конфигурации по умолчанию) `sudo` требует пароля *вызывающего* пользователя, а не пароля *целевого* пользователя.
Pete avatar
флаг no
@steeldriver Итак, когда мой скрипт запускается как `www-data`, а затем достигает команды `sudo -u user1 --askpass $SUDO_ASKPASS 'runUser1Script.exe' `, AskPass должен предоставлять пароль `www-data`, а не `user1 `ы? Ух ты. Вы просто поразили меня...!
флаг hr
@Pete Пит, да, я так думаю, если только вы не включили targetpw в своей конфигурации sudo. См. `man sudoers`.
guiverc avatar
флаг cn
[Подошел к концу *стандартный* срок поддержки Ubuntu 16.04 LTS](https://fridge.ubuntu.com/2021/03/13/extended-security-maintenance-for-ubuntu-16-04-xenial-xerus -begins-april-30-2021/), таким образом, теперь здесь не по теме, если только ваш вопрос не связан с тем, чтобы помочь вам перейти на поддерживаемую версию Ubuntu. Поддержка Ubuntu 16.04 ESM доступна, но не по теме здесь, см. https://askubuntu.com/help/on-topic См. также https://ubuntu.com/blog/ubuntu-16-04-lts-transitions- to-extended-security-maintenance-esm

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.