¿Cómo probar los permisos de archivos usando un script de shell?

¿Cómo probar los permisos de archivos usando un script de shell?

Estoy probando si mi archivo tiene permisos de lectura ejecutando este script como root:

#!/usr/bin/env bash

FILE="/etc/shadow"

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

exit 0

Idealmente, el script debe imprimirse Helloya que no hay permiso de lectura. Pero eso no está sucediendo.

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

¿Qué hay que modificar en el guión?

Respuesta1

Verifique información sobre permisos en un directorio, un archivo o un enlace

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

Respuesta2

#!/usr/bin/env bash

FILE="/etc/shadow"

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

exit 0

Esto verificará si el archivo tiene permiso de lectura en lugar de verificar si su usuario actual puede leer el archivo.

información relacionada