Почему Apache может запустить команду, а root не может?

У меня есть серверный скрипт, выполняемый Apache, работающий как www-data, Скрипт отлично работает на сервере при удаленном вызове (http://example.com/script.sh).

Я пытаюсь запустить тот же скрипт на том же сервере, что и root, подражая www-data, Это даже не su www-data -c 'id' или же runuser -l www-data -c 'id' не удается с

This account is currently not available.
2016 Nov  4 09:45:54 eu1 Attempted login by root on /dev/pts/0

Эта учетная запись действительно заблокирована от интерактивного входа (что является нормальным):

# grep www-data /etc/shadow
www-data:*:15246:0:99999:7:::
# grep www-data /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Поскольку Apache удается запустить что-то как www-data затем root должен быть в состоянии сделать то же самое. Как это сделать?

1 ответ

Решение

Пытаться

su -s /bin/bash www-data -c

Поскольку www-data не имеет оболочки, вы должны указать ее с помощью -sвариант.

Другие вопросы по тегам