Почему 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
вариант.