自分が所有するファイルのgid(group)を変更する許可が拒否されました


17

許可の仕組みに関するいくつかのことをまだ見逃しているようです。私はdebian 7システムbtwにいます。ちょうど今、私はこのファイルをダウンロードしました。これはに属しmyuser:myuserます。つまり、ユーザーとグループの両方が設定されています。また、$HOMEダウンロード先であるため、ディレクトリにもあります。

ここまでは順調ですね。このファイルをpcの他のユーザーと共有したいので、ファイルのグループ所有権を「ユーザー」グループに切り替えたいと思います。しかし、それは失敗します:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

そして、フォルダーの内容は次のとおりです。

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

私は許可で何が起こっているのか曖昧です。誰か説明できますか


される/xmas_carolサンバ/ NFSマウント?
ラーフルパティル14

解決策はsetfacl(ファイルシステムにACLがある場合)です。unix.stackexchange.com/questions/101263/…を
ctrl-alt-delor

私はちょうどそのグループに自分を追加したことに気づくまで、私は同じエラーを抱えていました。つまり、変更を有効にするには、ログアウトしてからログインし直す必要がありました。
ジョナサン

回答:


22

あなたのユーザーはおそらくusersグループのメンバーではないので、そのグループにファイルを与える権利はありません。説明する:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

この動作はPOSIX仕様に記載されています。

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

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

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

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

とにかく、これは最近のDebianベースのディストリビューションの設定方法ではないため、特定のユーザーにファイルへのアクセスを許可する方法は、

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

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

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

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


4

最近のUNIC(および「最近」はここではかなり広い意味を持っています)では、ファイルのグループ所有権を自分がメンバーではないグループに変更することはできません。さまざまなUNIXフレーバーのレガシーバージョンがこれをサポートしており、お客様のようなユースケースについては、セキュリティの問題であることが判明しました。

グループの所有権を外部グループに変更できるという問題は非常に些細な問題です。ファイルが存在するファイルシステムでグループクォータが有効になっている場合、悪意のあるユーザーは外部グループのクォータを単純にいっぱいにして、ユーザーが不可能にできる可能性がありますこのグループをプライマリグループIDとして使用して、さらにファイルを作成します。これは、すでに実行されているプロセスにも簡単に影響を与え、「ディスクがいっぱい」であるためにそれらを停止させる可能性があります。

問題を回避するには、(少なくとも)2つの可能性があります。まず、システムのスーパーユーザーに、アカウントの補足グループのリストに目的のターゲットグループを追加するように依頼できます。もちろん、これは、このグループと関係がない場合に限って意味があります。

ファイルを誰でも書き込み可能にする必要がないもう1つの方法は、ACLを使用して、目的のグループに読み取りおよび書き込みの許可を与えることです。

$ setfacl -m group:thegroupsname:rwx the_file(s)

(通常のファイルで)executeを与える必要はなく、おそらく書き込み許可を与えたくないでしょう。
ctrl-alt-delor

2

不変ビットが設定されているためである可能性があります。実行中のファイル属性のリストを取得します

lsattr /path/to/your/file

iが表示された場合、不変の属性が設定され、誰もファイルを変更できません(ルートであっても)。

属性を削除するには、ルートとして実行する必要があります

chattr -i /path/to/your/file

ファイルシステムの属性をもっと見るには、マニュアルページを読んでください

man chattr
man lsattr

良い点ですが、質問から私は質問者がスーパーユーザーの権利を持っていないのではないかと思うので、不変フラグをクリアする必要があります(少なくとも私が長い間やってきたすべてのファイルシステムでは)。また、彼はアーカイブを抽出したばかりなので、使用するアーカイバがアーカイブを設定する必要があったので、おそらく問題ではありません(同じ問題)。
アンドレアスヴィーゼ14

0

今すぐグループに自分を追加した場合は、ログアウトしてから再度ログインし、変更が有効になることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.