ユーザーが所有するファイルのグループ権限を変更できないのはなぜですか。ユーザー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)を使用しています。
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ベースのディストリビューションのセットアップ方法ではないため、特定のユーザーにディレクトリへのアクセス権を与える方法は、次のいずれかです。
ディレクトリのグループ所有権を、あなたと他のユーザーの両方がメンバーであるグループに変更します。
それに応じてディレクトリの権限を変更するだけです。
$ chmod 755 /home/martin
$ ls -ld /home/martin/
drwxr-xr-x 170 martin martin 491520 Apr 20 13:43 /home/martin/
これにより、誰でもディレクトリにアクセスできるようになります。ポールも含まれます。