特定のファイルを見つけて権限を変更する

特定のファイルを見つけて権限を変更する

異なるアクセス権を持つ複数のファイルを含むPermissionsというディレクトリがあるとします。

私が望むのは、ファイルにカテゴリへのアクセス権がある場合は、そのカテゴリに同じアクセス権を付与したいとothers思います。group

例 1: file_1 が存在する場合は、r-x---r--ファイルに権限があることを望みます。r-xr--r--

例2:

file_2に権限があり、r-xr----xそうすることを望みます。r-xr-x--x

例3:

file_3 と file_4 にはそれぞれアクセス権があり、rw---x---これらのrwxr-----ファイルは変更されていない状態にしておく必要があります。

findそのようなファイルを検索してからその値を変更できることはわかっていますが、-perm 0740権限とは異なる権限を持つファイルのみを検索し、ファイルが-exec chomd --- \;見つかった場合はアクセス許可を変更してアクセス許可を変更するにはどうすればよいですか。othergroupgroupother

答え1

chmodこれは自分でできます。:

chmod -R g+o dir

文字の組み合わせは、ugoaファイルへのユーザーのアクセス権を制御します。 [...]ファイルグループの他のユーザー(g)、[...]

演算子+を使用すると、選択したファイルモードビットが各ファイルの既存のファイルモードビットに追加されます。 [...]

この文字は、rwxXst影響を受けるユーザーのファイルモードビットを選択します。 [...]次の文字の1つ以上ではなく、次のいずれかの文字を指定できますugo。 [...] そして、これら2文字に属さないユーザーに権限を付与します。最初の2つのカテゴリのうち(o)。

答え2

GNUfindとループを使用すると、設定されていないが設定されているr w xすべてgroupの権限を検索して、others次のように設定できますgroup

for perm in r w x; do
  find . -type f \! -perm /g+"$perm" -perm /o+"$perm" -exec chmod g+"$perm" {} \;
done

関連情報