web-dev-qa-db-ja.com

ユーザーが自分のファイルのグループ所有権を変更できないのはなぜですか?

ユーザーが所有するファイルのグループ権限を変更できないのはなぜですか。ユーザーmartinがあるとします。

$ ls -lAd /home/martin/
drwx------ 8 martin martin 4096 Apr 20 01:06 /home/martin/

何らかの理由で、ユーザーpaulが私の家にアクセスできるようにしたいのですが。

$ chgrp paul /home/martin/
chgrp: changing group of `/home/martin/': Operation not permitted

ユーザーが自分のファイルのグループ所有権を変更できないというセキュリティ上の理由はありますか?

私は Debian 7 (wheezy)を使用しています。

14
Martin Vegter

chgroupは、自分がメンバーになっているグループにのみ許可されます。

$ groups
terdon Sudo netdev Fuse vboxsf vboxusers 
$ chgrp Fuse file
$ ls -l  file
-rw-r--r-- 1 terdon Fuse 531 Apr 15 19:17 file
$ chgrp mysql file
chgrp: changing group of ‘file’: Operation not permitted

この動作は POSIX仕様 で説明されています。

ファイルの所有者または適切な特権を持つユーザーのみが、ファイルの所有者またはグループを変更できます。

一部の実装では、指定されたグループが有効なグループIDまたは呼び出しプロセスの補足グループIDの1つでない場合、chgrpの使用を適切な特権を持つユーザーに制限します。

これの主な理由は、あなたがグループのメンバーでない場合、そのグループがアクセスできるものを変更できないはずです。 この回答 on chown権限も関連します。

従来、共有システムでは、すべての通常のユーザーが属するusersグループがあり、それが各ユーザーのプライマリグループです。これにより、usersグループが所有するファイルが作成され、すべてのユーザーがそれらを読み取ることができます。

とにかく、これは最近のDebianベースのディストリビューションのセットアップ方法ではないため、特定のユーザーにディレクトリへのアクセス権を与える方法は、次のいずれかです。

  1. ディレクトリのグループ所有権を、あなたと他のユーザーの両方がメンバーであるグループに変更します。

  2. それに応じてディレクトリの権限を変更するだけです。

    $ chmod 755 /home/martin
    $ ls -ld /home/martin/
    drwxr-xr-x 170 martin martin 491520 Apr 20 13:43 /home/martin/
    

    これにより、誰でもディレクトリにアクセスできるようになります。ポールも含まれます。

18
terdon