GNU/Linux >> Linux の 問題 >  >> Linux

グループにユーザーを追加しましたが、ファイルに対するグループのアクセス許可はまだ効果がありませんか?

ファイルの権限を変更しました(chmod g+w testfile )そしてls -l testfileを実行します 与える:

-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile

次に、そのグループにユーザーを追加しました(“ / etc / group 」にはuser1:x:1000:user2があります 行)が、user2としてそのファイルを編集できません。なぜそうなのですか?

承認された回答:

user2 ログアウトして再度ログインする必要があります。グループ権限は次のように機能します:

  • ログインすると、プロセスは/etc/passwdに記載されているメイングループのグループメンバーシップを持つようになります。 、および/etc/groupでユーザーが言及されているすべてのグループ 。 (より正確には、pw_gid getpw(your_uid)のフィールド 、およびユーザーが明示的なメンバーであるすべてのグループ。 /etc/passwdを超えて および/etc/group 、情報はNISやLDAPなどの他の種類のユーザーデータベースから取得される場合があります。)メイングループはプロセスの有効なグループIDになり、他のグループはその補足グループIDになります。
  • ファイルへのアクセスなど、プロセスが特定のグループのメンバーシップを必要とする操作を実行する場合、そのグループは、プロセスの有効なグループIDまたは補足グループIDのいずれかである必要があります。

ご覧のとおり、ユーザーのグループメンバーシップへの変更は、ユーザーがログインしたときにのみ有効になります。プロセスを実行するには、手遅れです。そのため、ユーザーはログアウトしてから再度ログインする必要があります。それが問題になる場合は、ユーザーは別のセッションにログインできます(たとえば、別のコンソールで、またはssh localhostを使用してログインできます。 。

内部的には、プロセスは失うしかできません。 特権(ユーザーID、グループID、機能)。カーネルはinitを開始します プロセス(起動後の最初のプロセス)はrootとして実行され、すべてのプロセスは最終的にそのプロセスの子孫になります¹。 login プロセス(またはsshd 、またはログインするデスクトップマネージャの一部)はまだrootとして実行されています。その仕事の一部は、root権限を削除し、適切なユーザーとグループに切り替えることです。

1つの例外があります。それは、setuidまたはsetgidプログラムの実行です。そのプログラムは追加のアクセス許可を受け取ります。親プロセスのメンバーシップのさまざまなサブセットに加えて、setxid実行可能ファイルを所有するユーザーまたはグループの追加のメンバーシップの下で動作することを選択できます。特に、setuidルートプログラムにはroot権限があるため、すべてを実行できます²。これがsuのようなプログラムのやり方です およびsudo 彼らの仕事をすることができます。

関連:すべてのプログラムで「マウスの中ボタンの貼り付け」機能をオフにするにはどうすればよいですか?

¹init(initrd、udev)から派生していないプロセスが存在する場合がありますが、原則は同じです。rootとして開始し、時間の経過とともに特権を失います。
²SELinuxなどのマルチレベルセキュリティフレームワークを除く。


Linux
  1. Linuxでユーザーをグループに追加する方法

  2. ファイルパーミッションにおけるユーザーとグループ所有者の優先順位?

  3. 他のユーザーのファイルにグループ権限を付与しますか?

  1. Tarファイルのアクセス許可を変更した場合、それはその中のファイルに適用されますか?

  2. Linux – 1人のユーザーが複数のCrontabファイルを持つことができますか?

  3. Linux でファイルとディレクトリのアクセス許可/所有権を管理する方法

  1. Samba 共有上のファイルのユーザー/グループ所有権を強制する方法

  2. ユーザーをグループに追加しますが、ID を実行すると反映されません

  3. ファイルを削除していますが、ディスク容量はまだいっぱいです