Может ли пользователь www-данных Apache2, порожденный корневым процессом Apache, иметь ограниченный доступ к файлам через групповые разрешения?

Я использую Ubuntu 16.04, стек LAMP установлен с apt-getвсе работает нормально.

Однако иногда я вижу следующую ошибку, когда моя PHP-программа (PHP запускается с Server API Apache 2.0 Handler) пытается записать файл в каталог, принадлежащий группе, отличной от www-data основная группа (которая www-data) но кому www-data принадлежит тоже (я добавил www-data пользователь этой другой группы и сделал ее второстепенной группой).

Поэтому: PHP работает с Apache как www-data:www-data (пользователь: группа), www-data пользователь, в свою очередь, принадлежит также к другой группе (это называется smsd, это группа демона SMS, которую я использую), и когда PHP нужно записать в папку, например так:

drwxrwsr-t  2 smsd smsd 4096 Jul 10 11:40 outgoing/

Который принадлежит smsd:smsd (обратите внимание, что группа может писать внутри outgoing), иногда PHP может писать в эту папку, иногда нет!

Есть ли разумное объяснение этому поведению? Версия Apache — 2.4, версия PHP — 7.

id www-data:

me@machine:/var/spool/sms# id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),131(smsd)

Посмотрите, как это выводит, что www-data принадлежит smsd тоже.

Как я уже сказал, странно то, что это не происходит систематически. Иногда www-data можете написать в эту папку, и он успешно создает файл (return array('status' => 'ok');), иногда это не может, и мой сценарий не пишет файл (return array('err' => 'Error writing file.');):

//...
$smsdSMSFileText = <<<EOF
To: $to
Alphabet: UTF-8

$message
EOF;
if (!file_put_contents($smsdSMSFileName, $smsdSMSFileText)) {
return array('err' => 'Error writing file.');
}
return array('status' => 'ok');
//...

Может быть, это потому, что некоторые из порожденных детей Apache бегут без вторичных групп (только как www-data:www-data)? Является ли это возможным?

Спасибо за внимание.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]