Alterar permissão da pasta

Alterar permissão da pasta

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=

findencontrará 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. chmodaltera 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, -execexecutará 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"

-Rrepresenta 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

informação relacionada