如何使用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 如果当前用户可以读取该文件。

相关内容