
chownを勝手に使えないことは既に知っています。一般ユーザーとしてuser1
しかし、私の場合、2人のユーザーがいます。 Sudoersファイルを使用すると、user2
asでsudoを使用できます。user1
user2
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権限を付与するのと同じですので役に立ちません)。
chown
user1がuser2に属するファイルを呼び出すことを可能にするsudoルール(おそらく小さなラッパースクリプトを使用)を作成できます。問題は、ファイル所有権の確認と呼び出しの間に競合状態があるため、これが安全ではないことですchown
。 user1(またはディレクトリ権限に応じて3人目のユーザー)は、確認と操作の間で他のファイルを置き換えることができます。
以下を使用する小さなプログラムを書くことができます。fchown
システムコール:ファイルを開き、呼び出しlstat
、現在の所有権を確認し、すべて正常であれば呼び出しますfchown
。ここでは、確認と操作は同じファイルハンドルで実行されるため、ファイル置換のリスクはありません。