Я проверяю, есть ли у моего файла права на чтение, запустив этот скрипт от имени пользователя 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
Это проверит, имеет ли файл разрешение на чтение, вместо проверки того, доступен ли файл для чтения текущему пользователю.