Как проверить права доступа к файлам с помощью скрипта оболочки?

Как проверить права доступа к файлам с помощью скрипта оболочки?

Я проверяю, есть ли у моего файла права на чтение, запустив этот скрипт от имени пользователя root:

#!/usr/bin/env bash

FILE="/etc/shadow"

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

exit 0

В идеале скрипт должен печататься, Helloтак как нет разрешения на чтение. Но этого не происходит.

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

Что необходимо изменить в сценарии?

решение1

Проверьте информацию о разрешениях на каталог, файл или ссылку

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

решение2

#!/usr/bin/env bash

FILE="/etc/shadow"

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

exit 0

Это проверит, имеет ли файл разрешение на чтение, вместо проверки того, доступен ли файл для чтения текущему пользователю.

Связанный контент