Мне интересно узнать
Почему 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-данными, почему он не может удалить файлы сеанса?