Сегодня нашел следующий PHP-код:
mkdir($directory, 02777);
chmod($directory, 02777);
Я понимаю PHP, но не первую часть этих чисел. Часть 777 понятна, и если я правильно понял, 0 просто означает, что это восьмеричное число. Но что делает 2 там?
Кроме того, если я изменю его на 02640, будет ли цифра 2 по-прежнему выполнять то же действие, что и раньше, или она изменится в зависимости от того, что идет после нее?
решение1
Эта восьмеричная цифра состоит из битов setuid
, setgid
и sticky
каждый из которых имеет сравнительно сложные эффекты.
Устанавливает 2
флаг setgid
. При наличии в каталоге все файлы, созданные в нем, будут наследовать его группу, а не основную группу создавшего ее пользователя.
ЕщеВикипедия.