777 é uma permissão ruim em geral e eu mostrarei o porquê.
Apesar de parecer em um cassino ou em Las Vegas, o 777 não significa jackpot para você. Em vez disso, jackpot para quem deseja modificar seus arquivos. 777 (e seu feio primo 666) permitem permissões de Leitura e Gravação (e, no caso de 777, Executar) para outros . Você pode aprender mais sobre como as permissões de arquivo funcionam , mas, em suma, existem três grupos de permissões: proprietário, grupo e outros . Ao definir a permissão para 6 ou 7 ( rw-
ou rwx
) para outro, você oferece a qualquer usuário a capacidade de editar e manipular esses arquivos e pastas. Normalmente, como você pode imaginar, isso é ruim para a segurança.
Aqui está o meu exemplo:
marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test
Até agora, criei uma pasta e criei um arquivo com permissões "ruins" (777 e 666). Agora vou mudar para outro usuário e tentar manipular esses arquivos.
marco@desktop:~/Projects/AskUbuntu/20105$ sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco 0 2011-01-04 20:33 test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test
OVERWRITE
Como esse usuário "malicioso", consegui colocar arquivos no diretório e injetar texto em arquivos já existentes. Considerando que, abaixo, em um diretório com 755 e arquivos com 644, posso ver arquivos e diretórios internos, mas não consigo editar os arquivos nem criar novos:
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied
Para permissões do Apache, convém usar 0755 e 0644 (AKA umask 022
) para pastas e arquivos, respectivamente. Isso permite que você, como proprietário dos arquivos, edite e manipule-os enquanto fornece ao Apache os níveis mínimos de acesso necessários para operar.