web-dev-qa-db-ja.com

Bash Scripting-新しいファイルが作成されるグループを設定する方法

Bashシェルスクリプトを実行していて、新しいファイルが作成されるデフォルトグループを変更したい。 umaskを使用してアクセス許可を変更することを知っています。グループ向けのものはありますか?

67
Rory

newgrpコマンドは、ログインセッション中に現在のグループIDを変更するために使用されます。

そのセッションで作成された新しいディレクトリには、コマンドによって設定されたグループIDが含まれます。

newgrp (1)

12
moonshadow

これを行うには、いくつかの方法があります。

  1. 特定のディレクトリで作成されたすべてのファイルのデフォルトグループを変更するには、ディレクトリでsetgidフラグを設定します(chmod g+s _dir_)。ディレクトリ内の新しいファイルは、ディレクトリのグループ(chgrp <group> <dir>を使用して設定)で作成されます。これは、ディレクトリにファイルを作成するプログラムに適用されます。

    これは、新しいサブディレクトリ(Linux 3.10以降)に対して自動的に継承されますが、サブディレクトリが既に存在する場合、この変更は適用されません(-Rフラグを使用)。

  2. Setgidフラグが設定されていない場合、デフォルトグループは作成プロセスの現在のグループIDに設定されます。これはnewgrpコマンドを使用して設定できますが、シェルスクリプト内で使用するのが難しい新しいシェルを作成します。変更されたグループで特定のコマンド(またはコマンドセット)を実行する場合は、sg <group> <command>コマンドを使用します。

    sgはPOSIX標準コマンドではありませんが、Linuxで使用可能です。

166
mark4o