Como verificar as permissões de arquivo via SSH

6

Para começar, sou muito novo nisso, então, por favor, me perdoe se isso for extremamente básico ou soar excessivamente desinformado.

Eu gostaria de verificar todos os arquivos em um diretório específico no meu VPS para garantir que os arquivos sejam 644 e os diretórios sejam 755. O FTP está fora de questão porque há muitos arquivos / diretórios. SSH parece a escolha mais lógica, mas antes de eu ir permissões chmod eu gostaria de ver o que eu vou estar mudando. Existe alguma maneira de encontrar e exibir arquivos / diretórios que não atendam a esse critério?

Agradecemos antecipadamente por qualquer insight.

    
por Bms85smB 19.05.2011 / 15:56

4 respostas

10

Como um refinamento da resposta de David Spillett, que tal usar um único comando find? Eu acho que é um pouco mais limpo do que todos os tubos e chamadas para o grep. Além disso, elimina um pouco dos casos extremos em que isso pode explodir.

find . -type f ! -perm 644 deve encontrar todos os arquivos que não tenham permissões -rw-r - r--. Para diretórios, você pode usar find . -type d ! -perm 755 .

Quando estiver satisfeito com o que está vendo, você pode até combinar o chmod no mesmo comando:

find . -type f ! -perm 644 -exec chmod 644 {} \; e find . -type d ! -perm 755 -exec chmod 755 {} \;

    
por 19.05.2011 / 16:32
7
find . -type f | xargs ls -l | grep -v rw-r--r--

"encontre todos os arquivos no diretório atual, passe para" ls -l "para listar seus detalhes e verifique a saída de ls para todas as linhas não (a opção -v para grep nega a correspondência) contendo "rw-r - r--" e para diretórios:

find . -type d | xargs ls -l | grep -v drw-r--r--

Se você quiser digitalizar outro diretório, substitua "." com ele, como:

find /path/to/directory -type f | xargs ls -l | grep -v rw-r--r--

e se alguns dos nomes de arquivos / diretórios contiverem espaços, use as opções "use strings delimitadas por 0" em find e xargs para evitar erros:

find . -type f -print0 | xargs -0 ls -l | grep -v rw-r--r--

Além disso, você pode remover a opção -v do grep para encontrar arquivos / diretórios que fazer correspondam, se você quiser listá-los como uma verificação de integridade.

Usar find varrerá subdiretórios também por padrão. Para varrer apenas um diretório e não seus filhos, você poderia apenas enviar a saída de ls -l a grep em vez de usar find e xargs .

Quando você executar chmod , lembre-se de que você pode especificar a opção -v para listar o que ele faz e o que não muda ao realizar a operação - isso pode ser útil para garantir a si mesmo que você deu o comando certo.

    
por 19.05.2011 / 16:12
0

O comando a seguir deve fornecer permissões numéricas para todos os arquivos no diretório especificado

 stat -c "%a %n" /path/to/files/*
    
por 19.05.2011 / 16:03
-1

Veja se a primeira resposta para isso funciona para você: Ver permissões @stackoverflow

    
por 19.05.2011 / 16:03

Tags