Verifique e altere as permissões específicas da pasta

1

Estou tentando verificar e alterar as permissões de uma pasta no script de shell. No entanto, ele quer alterar as permissões, mesmo que elas tenham mudado.

if [ "$(stat -c '%s' /usr/local/src)" == "755" ]; 
then  
echo "Approved!"
else
echo "Wait please, we're changing the permissions"
sudo chmod -R 755 /usr/local/src
fi

Erro:

Wait please, we're changing the permissions
sudo: unable to resolve host john
[sudo] password for john: 
sudo: unable to resolve host john

Eu digito a senha correta. Eu nunca recebo Approved! , por quê?

    
por Hudhud 12.10.2016 / 19:02

2 respostas

0

Eu não sei porque funciona, mas eu mudo '%s' para '%a' e isso resolveu meu problema:)

    
por 12.10.2016 / 19:09
0

Você precisa entender o que está fazendo.

man stat

produz, entre outras coisas, as sequências de formato:

  The valid format sequences for files (without --file-system):

   %a     access rights in octal

   %A     access rights in human readable form

   (...)

   %s     total size, in bytes

Como você pode ver, %s é tamanho. Como /usr/local/src é um diretório, o tamanho é 4096 . O que você está procurando são os direitos de acesso, então %a ou %A .

As saídas são correspondentemente,

$ stat -c '%a' /usr/local/src/
2775

ou apenas 3 dígitos se o primeiro octeto for 0 ; e

$ stat -c '%A' /usr/local/src/
drwxrwsr-x

No seu script, esta linha:

if [ "$(stat -c '%s' /usr/local/src)" == "755" ]; 

compara a saída da substituição "$(stat -c '%s' /usr/local/src)" com a string "755" . Uma maneira simples de depurar isso é executar o lado esquerdo sozinho e examinar o resultado.

$ stat -c '%s' /usr/local/src/
4096

Como você pode ver, isso não é um resultado, que pode representar direitos de acesso, embora seja similar em formato (4 dígitos). Mas nenhuma permissão pode ser definida como 9 , pois são octal. E octal significa que há apenas 8 dígitos representando, ou seja, 0-7. Aqui está o momento de verificar a página man do comando stat , que apresentei no começo.

Agora, deve ser fácil descobrir como corrigir seu script.

    
por 12.10.2016 / 19:24