ファイルの所有権をあるユーザーから最初のユーザーが制御する別のユーザーに変更します。

ファイルの所有権をあるユーザーから最初のユーザーが制御する別のユーザーに変更します。

chownを勝手に使えないことは既に知っています。一般ユーザーとしてuser1しかし、私の場合、2人のユーザーがいます。 Sudoersファイルを使用すると、user2asでsudoを使用できます。user1user2

user1それでもファイルの所有権を付与するのに問題がありますかuser2

これまで私が思いついた最善の方法は次のとおりですuser1

user1@localhost$ sudo --user user2 cp fileOwnedByUser1 /tmp/fileOwnedByUser1
user1@localhost$ rm fileOwnedByUser1
user1@localhost$ sudo --user user2 mv /tmp/fileOwnedByUser1 fileOwnedByUser1

しかし、これは不器用で非効率的なようです。user1これを行うより良い方法はありますか?これまで私が考えた唯一のことは、user1ファイルからrootとして「chown」を実行することですSudoers

ベストアンサー1

user1 が sudo を介して user2 でコマンドを実行できることは、カーネルの下位レベルのファイル権限の決定には重要ではありません。ルート用に予約されていますchown(Linuxもこの機能を持つプロセスを許可しますCAP_CHOWNが、プロセスにこの機能を提供することは間接的にroot権限を付与するのと同じですので役に立ちません)。

chownuser1がuser2に属するファイルを呼び出すことを可能にするsudoルール(おそらく小さなラッパースクリプトを使用)を作成できます。問題は、ファイル所有権の確認と呼び出しの間に競合状態があるため、これが安全ではないことですchown。 user1(またはディレクトリ権限に応じて3人目のユーザー)は、確認と操作の間で他のファイルを置き換えることができます。

以下を使用する小さなプログラムを書くことができます。fchownシステムコール:ファイルを開き、呼び出しlstat、現在の所有権を確認し、すべて正常であれば呼び出しますfchown。ここでは、確認と操作は同じファイルハンドルで実行されるため、ファイル置換のリスクはありません。

おすすめ記事