別のユーザー/グループを使用して特定のフォルダにファイルを作成/編集する

別のユーザー/グループを使用して特定のフォルダにファイルを作成/編集する

次のシナリオが可能かどうかを知りたいです。

私はwww-adminというユーザーであり、www-adminグループに属しています。私もsudoerです。

フォルダに作成されたすべてのファイルにグループとユーザーが/var/www/domain含まれていることを望みます。domaindomain

私がユーザーとしてwww-adminすべてのドメイン内でファイルを作成して編集する場合/var/www/domain:domains。

可能ですか?

ベストアンサー1

ディレクトリを作成するプロセスの有効なグループIDに関係なく、生成されたファイルが特定のグループに属するようにディレクトリを設定できます。これはBSDセマンティクスと呼ばれ、これを有効にするにはディレクトリのSGIDビットを設定する必要があります。

chgrp domain /var/www/domain
chmod g+s /var/www/domain

これはすでに存在しているファイルとディレクトリのグループを変更しないため、/var/www/domain手動で処理する必要があります(例:上記)-Rchgrpこのディレクトリ内に後で作成されたすべてのサブディレクトリもSGIDを継承し、そのサブディレクトリのBSDセマンティクスを自動的に有効にします。

しかし、所有者には同じ意味がありません。

/var/www/domain所有者とグループに対してこれを達成する必要がある場合は、ファイルを生成するコードが有効なユーザーとdomain有効なグループで実行されていることを確認する必要がありますdomainsudoこれを行うには、次の方法を使用できます。

sudo -u domain -g domain your_command

domainデフォルトのユーザーグループの場合は、domain次のように十分です。

sudo -u domain your_command

このソリューションは所有者とグループを簡単に処理するため、BSDセマンティクスは必要ありません。

ファイルを生成するプロセスの有効なユーザーやグループを変更したくない場合(たとえば、他の多くの機能を実行する大規模サーバーであるため)、ファイルを生成する機能の一部を外部化し、そのファイルを別のプロセスとして分離して、有効なUIDとGIDをそれに応じて変更できます。あるいは、BSDセマンティクスを使用してグループにのみ依存して最終目標を達成することもできます。

おすすめ記事