複数のサブディレクトリを持つ大きなディレクトリのすべての権限/グループが変更または正しく作成されていない場合は、それを保存して書き換えるか、このディレクトリのユーザー/権限を別のコンピュータにミラーリングするためのシェルスクリプトを作成しようとします。
それは次のとおりです。
chown adam:brown /var/blarg
chmod 770 /var/blarg
chown adam:brown /var/blarg/toast.file
chmod 777 /var/blarg/toast.file
...etc
この操作を手動で実行すると時間がかかります。これを行うための既存のコマンド/スクリプトがあるかどうか疑問に思います。
ベストアンサー1
@yetiさんのコメントに続き、しばらく前にこれについて考えてみたところ、次のような結論に達したことが思い出されます。
find /path/to/dir -printf '%m\t%u\t%g\t%p\0' > filelist
それから
while read -rd $'\0' perms user group file; do
if [ -e "$file" ]; then
chown "$user:$group" "$file"
chmod "$perms" "$file"
else
echo "warning: $file not found"
fi
done < filelist
動作します。出力の末尾にファイル名を入れ、read
改行の代わりにヌル終端を使用します。しなければならないこれにより、ファイル名にスペースやその他の特殊文字が含まれている場合でもセキュリティが保証されます。 2番目のコマンドを実行したい場所に応じて、/path/to/dir
コマンドの前のコンポーネントが削除されたファイル名を使用します。find
%P
%p