2012-03-28 8 views
2

100TBのクラスタでは、ACL内にACEが拒否されているディレクトリとファイルを見つけ、各インスタンスでそのACEを削除する必要があります。あなたが見ることができるように、ACL内の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が「拒否」する場所に応じて、私が見ることができます:私は、次を使用しています/ not-the-pathを参照してください。私は次に何をする必要がどのような

私は-B価値を高めることができる(私は、ファイル上の8つのACEまで見てきた)が、その後、私はより多くの出力から蒸留することになるだろう...

$ACENUMBER$PATHTOFILE私はそのように抽出され

chmod -a# $ACENUMBER $PATHTOFILE 

その他の問題は、findコマンド(上記)が相対パスを与えているのに対して、完全なパスが必要なことです。私はそれが何とか編集する必要があると思います。

これを達成するためのガイダンスはありますか?あなたの質問の後半部分については

+0

つまり、あなたの引数の完全なパスを作ります通常は正しいことを行い、すべての行の前に4つのスペースを追加して、コードの書式設定を求めます。 – sarnold

+0

ありがとう、私は次回それを試みます。 – Tom

+0

あなたは特に_current user_に興味がありますか? '-readable'、' -writable'、または '-executable'を使うとGNU' find(1) 'ユーティリティは' access(2) 'を使ってこれらの条件が真であるかどうかを判断し、' access(2) 'はACLを考慮に入れます。あるいは、どのユーザーやグループにも適用される 'deny'ルールに興味がありますか? – sarnold

答えて

1

:出力ファイルの絶対パスに使用すると、コードブロックを選択し、エディタで `{}`ボタンを押した場合

 find /my/full/path -print0 
+0

はい、私は時間のために検査するファイルの量を減らすことを望んでいました。私が興味を持っている部分は、クラスタ全体の約50〜60%です。私は一晩中走っても問題ないと思う...ああ、私は完全な道を得るために完全な資格を得ます...私は大きなダミー... – Tom

+0

今日はサポートからこれを得ました: mydirectory -mindepth 1); [$(ls -led $ x | grep deny | wc -l | sed -e 's/^ [\ t] * //')-gt 0];次に、chmod -a# "$(ls -led $ x | grep deny | cut -d": "-f 1)" $ x; fi; – Tom

+0

「コード」はこのコメントを書式化するはずだった...推測しない – Tom

1
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; 
done 
関連する問題