在我的100TB集群上,我需要找到ACL中包含"deny“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命令(上面)给出了一个相对路径,而我需要完整的路径。我想这需要以某种方式进行编辑。
有什么关于如何实现这一点的指导吗?
发布于 2012-03-29 07:26:05
对于问题的第二部分:要输出绝对文件路径,请将参数设置为完整路径,即
find /my/full/path -print0发布于 2012-03-30 03:26:59
for x in $(find /mydirectory -mindepth 1); do
if [ $(ls -led $x | grep deny | wc -l | sed -e 's/^[ \t]*//') -gt 0 ]; then
chmod -a# "$(ls -led $x | grep deny | cut -d ":" -f 1)" $x;
fi;
donehttps://stackoverflow.com/questions/9916888
复制相似问题