Мне всегда думалось, что только только процесс, запущенный от root, может без лишних телодвижений сменить себе uid на любого другого через системный вызов setuid. Ну то есть, если у запускаемого файла не установлен бит suid.
Но читаю я в "Hardening Wordpress" следующее: "When you tell WordPress to perform an automatic update, all file operations are performed as the user that owns the files, not as the web server’s user."
Это как? Сервис apache изначально запускается от root, меняет себя на www-data и дальше так работает от www-data. Он разве может сменить себе uid с www-data на любой другой?
PS. suexec не используется;
PPS. основные файлы/каталоги WP (разу уж про него речь зашла) имеют владельца wwwuser:www-data и права 0640/0750;
PPPS. никаких suid битов я никому не выставлял.
Нельзя запускать Апач от рута. Это огромная дыра в безопасности.
Best practice - создавать под приложение отдельного пользователя, у которого будет доступ только к своей папке
Вы всё правильно понимаете, и если PHP скрипты исполняются Apache, а тот в свою очередь запущен от пользователя www-data то в плане разграничения прав всё будет работать ровно так как и ожидается. Если www-data не имеет флага suid то и повысить права или сменить пользователя скрипты не смогут.
Есть разбор этого вопроса на SO https://wordpress.stackexchange.com/questions/3787...
Если коротко, то приведённая цитата из "Hardening Wordpress" некорректна и вводит в заблуждение.