我正在尝试使用Shell脚本在UNIX中添加/更新目录/文件的权限default:group:fin:r--
。但是掩码值未正确更新。以下是其中涉及的步骤。
目录/文件的现有权限
# file: /test/test1 # owner: own # group: sgrp user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:group:fin:rwx default:mask::rwx default:other::r-x
步骤1 :备份Bkp_File.txt
文件中的现有目录/文件,
ops dev hdfs dfs -getfacl -p /test/test1 > Bkp_File.txt
步骤2 在Bkp_File.txt
文件中应用权限更改
line="# file: /test/test1 # owner: own # group: sgrp user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:group:fin:rwx default:mask::rwx default:other::r-x"
i="default:group:fin:r--"
Find=$(echo "$i" | cut -d ':' -f1-3):
Src=$(echo "$line" | grep -o "$Find.*" | awk '{print $1}'
Tgt=$(echo "$line" | sed -i "s/$Src/$i/" Bkp_File.txt)
def_m=$(echo "$line" | grep -o "default:mask::.*" | awk '{print $1}')
def_g=$(echo "$line" | grep -o "default:group:.*:r-x" | wc -l)
Upd_msk=$(echo "$line" | sed -i "s/$def_m/default:mask::r-x/" Bkp_File.txt)
步骤3 ,使用setfacl命令在实际文件中应用权限,然后将最新的权限复制到另一个文本文件New_File.txt
hdfs dfs -setfacl -m default:group:fin:r-- /test/test1
hdfs dfs -getfacl /test/test1 > New_File.txt
步骤4 ,比较Bkp_File.txt
和New_File.txt
,看两个文件的内容是否完全匹配
问题
当我们比较两个文件时,由于两个文件之间的default:mask::
值不同,因此无法匹配。 New_File.txt
中的掩码值为default:user::r-x
,而Bkp_File.txt
中的掩码值为default:user::rwx