Wie testet man Dateiberechtigungen mit einem Shell-Skript?

Wie testet man Dateiberechtigungen mit einem Shell-Skript?

Ich teste, ob meine Datei Leseberechtigung hat, indem ich dieses Skript als Root ausführe:

#!/usr/bin/env bash

FILE="/etc/shadow"

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

exit 0

Im Idealfall müsste das Skript gedruckt werden Hello, da keine Leseberechtigung vorliegt. Aber das passiert nicht.

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

Was muss im Skript geändert werden?

Antwort1

Überprüfen Sie die Berechtigungen für ein Verzeichnis, eine Datei oder einen Link.

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

Antwort2

#!/usr/bin/env bash

FILE="/etc/shadow"

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

exit 0

Dadurch wird überprüft, ob die Datei Leseberechtigung hat, anstatt zu überprüfen, ob die Datei für Ihren aktuellen Benutzer lesbar ist.

verwandte Informationen