grep - 脚本在 ACL 中查找 "deny"ACE,并将其删除

标签 grep find acl

在我的 100TB 集群上,我需要查找 ACL 中具有“拒绝”ACE 的目录和文件,然后在每个实例上删除该 ACE。我正在使用以下内容:

# find .  -print0 | xargs -0 ls -led | grep deny -B4

并获取此输出(部分,仅作为示例)

-r--rw----  1 chris     GroupOne           4096 Mar  6 18:12 ./directoryA/fileX.txt
 OWNER: user:chris
 GROUP: group:GroupOne
 0: user:chris allow file_gen_read,std_write_dac,file_write_attr 
 1: user:chris deny file_write,append,file_write_ext_attr,execute 
--
-r--rwxrwx  1 chris     GroupOne       14728221 Mar  6 18:12 ./directoryA/subdirA/fileZ.txt
 OWNER: user:chris
 GROUP: group:GroupOne
 0: user:chris allow file_gen_read,std_write_dac,file_write_attr 
 1: user:chris deny file_write,append,file_write_ext_attr,execute 
--
 OWNER: user:bob
 GROUP: group:GroupTwo
 0: user:bob allow dir_gen_read,dir_gen_write,dir_gen_execute,std_write_dac,delete_child,object_inherit,container_inherit 
 1: group:GroupTwo allow std_read_dac,std_write_dac,std_synchronize,dir_read_attr,dir_write_attr,object_inherit,container_inherit 
 2: group:GroupTwo deny list,add_file,add_subdir,dir_read_ext_attr,dir_write_ext_attr,traverse,delete_child,object_inherit,container_inherit 
--

如您所见,根据“拒绝”ACE 的位置,我可以看到/看不到路径。我可以增加 -B 值(我在一个文件上看到最多 8 个 ACE),但随后我会得到更多输出以从中提取......

接下来我需要做的是提取 $ACENUMBER$PATHTOFILE 以便我可以执行此命令:

chmod -a# $ACENUMBER $PATHTOFILE

另一个问题是 find 命令(上面)给出了相对路径,而我需要完整路径。我想这需要以某种方式进行编辑。

关于如何实现这一目标有任何指导吗?

最佳答案

对于问题的第二部分:要输出绝对文件路径,请使您的参数成为完整路径,即

      find /my/full/path -print0

关于grep - 脚本在 ACL 中查找 "deny"ACE,并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916888/

相关文章:

regex - 匹配开头和结尾的单词

regex - 使用 GREP 和 AWK 从文件中提取子字符串的值

bash - 将管道与 find 命令一起使用

java - Spring ACL 是一个好的 ACL 实现吗?

linux - 我如何通过使用 grep 和 find 命令替换字符串来更新文件的内容

linux - 使用命令 grep 并定位

javascript - 动态内容的 JQuery Find() .value()

javascript - 降低 Javascript 中 DOM 搜索频率

python - 使用 python 检查 ldap 访问权限

acl - mosquitto 1.4 - 一旦启用 ACL 运行,就会获取 "Socket error on client <unknown>, disconnecting"