Encontrei o seguinte código PHP hoje:
mkdir($directory, 02777);
chmod($directory, 02777);
Eu entendo o PHP, mas não a primeira parte desses números. A parte 777 está clara e, se entendi corretamente, o 0 significa apenas que é octal. Mas o que o 2 ali dentro faz?
Além disso, se eu mudasse para 02640, o 2 ainda faria o que faz ou muda de acordo com o que vem depois?
Responder1
Este dígito octal é composto de setuid
bits setgid
e sticky
bits, todos com efeitos comparativamente complexos.
O 2
define a setgid
bandeira. Quando presentes em um diretório, todos os arquivos criados dentro dele herdarão seu grupo, em vez do grupo primário do usuário criador.
Mais sobreWikipédia.