Назад | Перейти на главную страницу

Почему 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 должен уметь делать то же самое. Как это сделать?

пытаться

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

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