如何检查子目录的读写执行权限?

比方说,我有一个文件夹“ football”,在足球文件夹中,它包含4个文件夹,分别是切尔西,曼联,利物浦和马刺。 football文件夹中的每个子文件夹都有读取,写入和执行的不同权限...。现在,我如何获取读取,写入和执行的值?如果该文件夹可读,则打印“可以读取”等等。....是否可以用775,777进行类似的检查?

 #!/bin/ksh
 for d in [subfolder]
 do
    if [subfolder can read == $permission_read ]
       printf "Can read"
     else if.........................
     else
            .........................
      fi
  done

子文件夹应该通过切尔西,曼联,利物浦和马刺队来检查每个许可.....

zcz888 回答:如何检查子目录的读写执行权限?

可以请您尝试以下解决方法。

cat script.ksh
GET_PERM() {
cate="$1"
element_to_check="$2"
directory="$directory"

case "$element_to_check" in
"7") echo "Directory named $directory has READ/WRITE/EXECUTE permissions for $cate.";;
"6") echo "Directory named $directory has READ/WRITE permissions for $cate.";;
"5") echo "Directory named $directory has READ/EXECUTE permissions for $cate.";;
"4") echo "Directory named $directory has READ permissions for $cate.";;
"3") echo "Directory named $directory has WRITE/EXECUTE permissions for $cate.";;
"2") echo "Directory named $directory has WRITE permissions for $cate.";;
"1") echo "Directory named $directory has EXECUTE permissions for $cate.";;
"0") echo "Directory named $directory has NULL permissions for $cate.";;
*) echo "Please check Directory named $directory has "$element_to_check" permission.";;
esac
}


while read directory
do
  echo "$directory"
  perm=($(stat -c "%a" "$directory" | awk 'length($0)>3{gsub(/./,"& ");print substr($0,3);next} {gsub(/./,"& ");print}'))
  echo "${perm[*]}"
  for i in "${perm[@]}"
  do
    ((count = count + 1))
    if [[ $count -eq 1 ]]
    then
        GET_PERM "USER/OWNER" "$i" "$directory"
    elif [[ $count -eq 2 ]]
    then
        GET_PERM "GROUPS" "$i" "$directory"
    else
        GET_PERM "OTHERS" "$i" "$directory"
    fi
  done
  unset perm
  unset count
done < <(find -type d 2>/dev/null)


脚本的作用是:

  • 它在find循环的最后有while条命令,它将按照您给定的路径运行(到目前为止,没有给定路径,因此它在当前目录上运行,有人可以提到完整路径您要检查的位置。)
  • 它处理读取,写入和执行基本权限的基本权限,尽管我知道可能有很多权限,但是我将在这里处理OP的问题。


上述脚本的测试运行:当我针对具有3个名为test1test2test3的目录的测试目录运行上述脚本时,会提供以下输出。

.
7 7 5
Directory named . has READ/WRITE/EXECUTE permissions for USER/OWNER.
Directory named . has READ/WRITE/EXECUTE permissions for GROUPS.
Directory named . has READ/EXECUTE permissions for OTHERS.
./test3
7 5 5
Directory named ./test3 has READ/WRITE/EXECUTE permissions for USER/OWNER.
Directory named ./test3 has READ/EXECUTE permissions for GROUPS.
Directory named ./test3 has READ/EXECUTE permissions for OTHERS.
./test1
7 7 5
Directory named ./test1 has READ/WRITE/EXECUTE permissions for USER/OWNER.
Directory named ./test1 has READ/WRITE/EXECUTE permissions for GROUPS.
Directory named ./test1 has READ/EXECUTE permissions for OTHERS.
./test2
7 4 4
Directory named ./test2 has READ/WRITE/EXECUTE permissions for USER/OWNER.
Directory named ./test2 has READ permissions for GROUPS.
Directory named ./test2 has READ permissions for OTHERS.
,

使用shell命令,我们可以看到子目录的rwx权限。

假设目录结构为a / b / c / d。要知道rwx权限,只需执行以下命令:

ls -l -R a

它将打印目录a中所有子目录的详细信息。

您可以输出流并将其保存在某个文件中,也可以对其进行解析以了解子目录的rwx详细信息。

ls -l -R a > file.txt
cat file.txt

检查所附的屏幕截图以供参考。

enter image description here enter image description here

本文链接:https://www.f2er.com/2734833.html

大家都在问