如何使用shell腳本測試檔案權限?

如何使用shell腳本測試檔案權限?

我正在透過以 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

這將檢查檔案是否具有讀取權限,而不是 checkinf 如果目前使用者可以讀取該檔案。

相關內容