web-dev-qa-db-ja.com

すべての権限を持つディレクトリの所有者(ユーザーまたはグループ)を変更できませんか?

TL; DR:操作が許可されないのはなぜですか?そして、どうすればこれを解決できますか?


解決できない問題に直面しています。ユーザーa:group a)としてディレクトリを作成しています。これをユーザーb:groupaに変更します。この操作が許可されない理由がわかりません。これが起こっていることです:

user a@foo:~$ mkdir /home/user b/foo/test             
uber a@foo:~$ chmod 0777 /home/user b/foo/test
user a@foo:~$ ls -alF /home/user b/foo/ | grep test
drwxrwxrwx 2 user a            group a 4096 Jan  6 19:53 test/
user a@foo:~$ chown user b:group a /home/user b/foo/test
chown: changing ownership of `/home/user b/foo/test': Operation not permitted

(わかりやすくするために、ユーザー名とグループ名を変更しました)

関連する可能性のあるその他の事項:

  • ユーザーAはグループAとグループBに属しています。
  • ユーザーBはグループBに属しています。
  • / home/user bのディレクトリfooは0750で、ユーザーB:グループAが所有しています。

この操作が許可されない理由と、これを解決するにはどうすればよいか(Sudoを使用しないソリューションがプラスです)を理解したいと思っています。

4
Bjorn

ファイルの所有権を変更できるのは、rootである(またはCAP_CHOWN Posix機能を持っている)場合のみです。これは、ファイルを配布するとセキュリティ上の懸念が生じるためです(たとえば、ディスククォータが有効になっている場合は、ユーザーbのクォータを埋めることができます)。

許可されている場合は、Sudochownを使用してください。

ただし、所有するグループを自分がメンバーになっているグループに変更できるため、「グループb」「/ home/userb/foo/test」をchgrpできるはずです。これは、ユーザーとファイルを共有する代わりになる場合があります。 b達成しようとしていることに応じて、ルートになることなく。

より柔軟なアクセス許可については、ACLを調べることをお勧めします。

12
gentledevil

パートA:
所有者とルート(TBOMK)のみであるため、操作は許可されていません。

パートB:答えは明らかです。ユーザーbにそれを行わせるか、弾丸を噛んでSudoを使用する必要があります。 Sudoを使用したくない場合は、rootがなく、他の誰かに使用してもらう必要があるためだと思いますが、解決策は2つしかないようです。

0
Yitzchak