
Que permissão devo aplicar a uma pasta para que todos possam ver a hierarquia e todos os arquivos dentro dela, mas não possam lê-los e gravá-los. A pasta pode ter várias outras pastas com arquivos dentro.
Responder1
A listagem de diretórios usa o bit executável, não acho que a leitura realmente afete os diretórios. Você terá que definir permissões em cada arquivo individual para evitar que sejam lidos ou gravados. Os comandos a seguir farão tudo isso para você, execute-os a partir da pasta em que deseja iniciar:
find . -type d | xargs chmod o=rx
find . -type f | xargs chmod o=
find
encontrará recursivamente arquivos ( -type f
) e diretórios ( -type d
) e imprimirá seus nomes (sem outra ação especificada), e isso será canalizado para xargs
, que executa seus argumentos com os arquivos que lê do canal. chmod
altera as permissões para outras pessoas ( o
, ou seja, nem você nem outras pessoas no grupo que possui o arquivo) para exatamente ( =
) ler/listar ( rx
) para pastas e nada para arquivos simples.
Como Grumbel apontou em um comentário, isso só funcionará em nomes bem comportados. Para obter todos eles, use a solução dele:
find . -type d -print0 | xargs -0 chmod o=rx
find . -type f -print0 | xargs -0 chmod o=
ou find está embutido -exec
:
find . -type d -exec chmod o=rx '{}' ';'
find . -type f -exec chmod o= \{\} \;
Observe que você pode citar colchetes e ponto-e-vírgula como na primeira linha ou escapá-los como na segunda, eles apenas precisam estar presentes em argumentos separados. Além disso, -exec
executará chmod uma vez para cada arquivo, enquanto xargs fará isso com o menor número de comandos possível (com base no comprimento máximo da linha de comando). É por isso que geralmente prefiro xargs.
Responder2
sudo chown -R username:root "/directory you want"
-R
representa recursão para todos os seus subdiretórios e arquivos.
nome de usuário - usuário atual
É útil para permissão de leitura/gravação/execução