特定のホストのすべてのACLを読み取り、存在するグループ名を変更する方法は?

特定のホストのすべてのACLを読み取り、存在するグループ名を変更する方法は?

次のコマンドを使用して、特定のホストのすべてのACLを読み取ろうとします。

getfacl -R /

私が望むのは、各ACLでgroupAを見つけ、groupAがある場合はgroupBに変更し、それ以外の場合は無視することです。

getfacl -R / | setfacl -g:groupB dir

上記は私には適していませんが、誰でも私に方向を教えてくれてありがとう。

ベストアンサー1

まず、2番目のコマンドが間違っています。

ディレクトリのACLを変更するには、groupBを許可します。読み書き権限:

setfacl -m g:groupB:rwx dir

第二に、コマンドが大丈夫であっても問題が発生します。

groupAがある場合はgroupBに変更します。

man setfacl例に示すように、ACLをあるファイルから別のファイルにコピーする方法があります。

getfacl file1 | setfacl --set-file=- file2

問題を解決する方法の1つは、すべてのファイルを1つずつ確認し、sedを使用してgroupAをgroupBに変更し、変更されたACLを同じファイルにコピーすることです。これにより、ACLにgroupAが含まれている場合はgroupBに変わり、そうでないと何も起こりません。それは次のとおりです。

for file in $(find / -xdev) ; do getfacl $file | sed s/groupA/groupB/ | setfacl --set-file=- $file ; done

より効率的な解決策があるのか​​、それとも検索するだけで同じことを行う方法があるのか​​わかりません。

おすすめ記事