Ответ 1
Установка umask
в 0000
(или просто 0
) означает, что созданные ранее созданные файлы или созданные каталоги не будут иметь никаких прав, первоначально отозванных. Другими словами, a umask
нуля приведет к тому, что все файлы будут созданы как 0666
или доступны для записи в мире. Каталоги, созданные в umask
0
, будут 0777
.
Обычно, когда вы видите umask(0)
, он должен следовать непосредственно вызовом chmod()
, чтобы явно установить разрешения, необходимые для вновь созданного файла или каталога, для чего-то другого, кроме записываемого в мире.
Соблюдайте осторожность при установке umask на ноль! Это может быть опасно и в основном полезно только для создания файлов, которые позднее должны быть написаны веб-сервером, когда веб-сервер работает как другой пользователь, который "реальный" пользователь, которому также нужно будет иметь возможность изменять файлы, созданные веб-сервером. В противном случае системный по умолчанию umask скорее всего будет 0022
, доступный для записи владельцем файла, но не другими. В этом случае, если вы вошли в систему под обычной учетной записью пользователя, файл, созданный веб-сервером под PHP, не будет доступен для вас.
Вместо создания файлов, записываемых в мире, обычно лучше управлять каталогами, которые веб-сервер пишет более явно. Если файлы, созданные внутри каталога, должны иметь определенные групповые разрешения, может быть целесообразно установить бит sgid в каталоге, чтобы новые файлы внутри него наследовали групповое право собственности. Пользователи, которым необходим доступ к файлу, должны быть членами группы, имеющей к нему доступ. Это гораздо безопаснее, чем создание общедоступных для чтения файлов, записываемых в мире.
php > umask(0);
// Should get created as 666
php > touch('file1.txt');
// "2" perms revoked from group, others, gets created as 644
php > umask(022);
php > touch('file2.txt');
// All revoked (2,4) from group, others, gets created as 600
php > umask(066);
php > touch('file3.txt');
-rw-rw-rw- 1 me group 0 Aug 24 15:34 file1.txt
-rw-r--r-- 1 me group 0 Aug 24 15:35 file2.txt
-rw------- 1 me group 0 Aug 24 15:37 file3.txt