Como testar permissões de arquivo usando shell script?

Como testar permissões de arquivo usando shell script?

Estou testando se meu arquivo tem permissões de leitura, executando este script como root:

#!/usr/bin/env bash

FILE="/etc/shadow"

if ! [ -r $FILE ]; then
  echo "Hello"
fi

exit 0

Idealmente, o script deve ser impresso Hello, pois não há permissão de leitura. Mas isso não está acontecendo.

ls -ltrh /etc/shadow
---------- 1 root root 7.1K Jun  7 06:59 /etc/shadow

O que precisa ser modificado no script?

Responder1

Verifique informações sobre permissões no diretório, arquivo ou link

stat -L -c "%a %G %U" FILE or DIRECTORY

Responder2

#!/usr/bin/env bash

FILE="/etc/shadow"

if ! [[ $(stat -c "%A" $FILE) =~ "r" ]]; then
  echo "Hello"
fi

exit 0

Isso verificará se o arquivo tem permissão de leitura em vez de verificar se o arquivo pode ser lido pelo usuário atual.

informação relacionada