Как PHP получает доступ к каталогу сессий, который имеет владельца root? - PullRequest
0 голосов
/ 08 февраля 2019

Мне интересно узнать

Почему cron используется для очистки файлов сеансов в Ubuntu?

Я исследовал его и обнаружил две ссылки, говорящие о том, что

"для целей безопасности сеансы хранятся с правами root. Из-за этого PHP Garbage Collector не может очистить файлы сеансов с истекшим сроком действия. Для очистки таких файлов php имеет задание cron, которое запускается через каждые 30 минут."

1.Почему Debian очищает php-сессии с помощью задания cron вместо использования встроенного сборщика мусора в php?

2.Журналы отчетов об ошибках Debian - # 267720

В Apache есть пользователь www-data, поэтому я думаю, что PHP-модуль также работает для пользователя www-data (не уверен в этом).

Если это условие, как PHP может получить доступ к каталогу сеанса, у которого есть корневой владелец, для создания / чтения файлов сеанса?

Работает ли PHP с правами root, даже если у apache есть пользователь www-data?Если PHP работает с правами root, то как GC не смог прочитать файлы сеансов из каталога сессий, у которого есть владелец root.

Или GC работает с пользователем www-data, а PHP - с пользователем root?

В дополнение к этому:

Я проверил пользователя и владельца созданного файла в / var / lib / php / session и он показывает www-data: www-dataдля созданного файла сеанса.

Разрешения для / var / lib / php / сеансов: drwx-wx-wt

, то есть он имеет залипший бит "t "

Sticky Bit:

Sticky-бит - это бит разрешения, который защищает файлы в каталоге.Если в каталоге установлен бит закрепления, файл может быть удален только владельцем файла, владельцем каталога или пользователем root.Это специальное разрешение не позволяет пользователю удалять файлы других пользователей. ссылка

Теперь вопрос в том, под каким пользователем работает GC?Если он работает под www-данными, почему он не может удалить файлы сеанса?

...