このスクリプトを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
現在のユーザーがファイルを読み取ることができるかどうかを確認するのではなく、ファイルに読み取り権限があることを確認してください。