Eu recomendaria o comando find para definir permissões:
Para tornar todos os diretórios pesquisáveis e legíveis por todos por todos (consulte este link para permissões de diretório do Unix a>, as permissões têm significados diferentes dos arquivos):
sudo bash -c "find /var/www/root/images -type d -print0 | xargs -0 chmod oga+rx"
Para os arquivos:
sudo bash -c "find /var/www/root/images -type f -print0 | xargs -0 chmod oga+r"
E para garantir que nenhum membro do grupo possa escrever nada:
sudo bash -c "find /var/www/root/images -type f -print0 | xargs -0 chmod a-w"
A razão pela qual eu defini as permissões do proprietário, do grupo e de tudo é porque, mesmo que todos tenham permissão de leitura, se o proprietário não o fizer, o proprietário não poderá ler o arquivo.
Executar é permissão 'x' geralmente é referenciada como permissões de 'pesquisa' quando usada com diretórios. Você também precisará de permissão de pesquisa em todos os diretórios até a raiz, no link acima sobre permissões de diretório:
Search permission is required in many common situations. Consider the command "cat /home/user/foo". This command clearly requires read permission for the file foo. But unless you have search permission on /, /home, and /home/user directories, cat can't locate the inode of foo and thus can't read it! You need search permission on every ancestor directory to access the inode of any file (or directory), and you can't read a file unless you can get to its inode.
Então, no meu exemplo, você precisará da permissão de busca (+ x) em / var, / var / www, / var / www / root, etc também.
Não use um + rX , desculpe colocá-lo em uma postagem, mas eu preciso codificar as tags a não sei como usá-las em um comentário. O seguinte não afeta apenas os diretórios, pode afetar os arquivos também se um usuário já tiver permissão de execução.
chmod -R a+rX images
Exemplo:
[kbrandt@kbrandt-opadmin: ~/scrap/X] touch XnotOnlyDirectories
[kbrandt@kbrandt-opadmin: ~/scrap/X] ls -l
total 0
-rw-rw-r-- 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories
[kbrandt@kbrandt-opadmin: ~/scrap/X] chmod u+x XnotOnlyDirectories
[kbrandt@kbrandt-opadmin: ~/scrap/X] ls -l
total 0
-rwxrw-r-- 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories
[kbrandt@kbrandt-opadmin: ~/scrap/X] cd ..
[kbrandt@kbrandt-opadmin: ~/scrap] chmod -R a+rX X
[kbrandt@kbrandt-opadmin: ~/scrap] ls -l X
total 0
-rwxrwxr-x 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories
Na página do manual chmod:
execute/search only if the file is a directory or already has execute permission for some user (X)
Quando se trata do Apache:
Não há nenhuma maneira certa definitiva que eu saiba, você pode usar as permissões que eu configurei e executar o Apache como o usuário nobody, ou você pode usar um grupo ou usuário para o apache, como 'apache' ou 'www-data'. Veja este link . Se seguir a rota de ninguém, certifique-se de que ninguém tenha o ID de usuário correto:
[kbrandt@kbrandt-opadmin: ~/scrap] id nobody
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)