私は質問で言及された概念に比較的慣れていません、そして異なる情報源からそれらについて読むことはそれらをより混乱させるだけです。これが私がこれまでに理解したことです:
ファイルへのアクセス許可が与えられると、次のようになります。
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
ユーザーuser2を想定しています usersグループのメンバー file.binを実行しようとします 。 setuidビットが設定されていない場合、これはfile.binのRUIDとEUIDの両方を意味します。 user2のUIDと同じでした 。ただし、setuidビットが設定されているため、これはRUIDがuser2のUIDと等しくなることを意味します。 、EUIDはファイルの所有者のUIDですが、user1 。
私の質問は次のとおりです:
- ファイルの所有者と
rootの違いは何ですか ?rootを実行します 所有者と同じ権限を持っていますか?または、rootの権限リストに別のエントリが必要ですか? ? - RUIDとEUIDの違いは?
- 私が理解しているように、RUIDとEUIDはプロセスにのみ適用されます。その場合、なぜユーザーIDの値を持っているのですか?
- RUIDがプロセスを作成するユーザーであり、EUIDが現在プロセスを実行しているユーザーである場合、この質問の最初の回答の最初の文は私には意味がありません。
- setuidビットが何をするのか正しく理解しましたか?
承認された回答:
答えは次のとおりです:
-
root常に満杯 ファイルとディレクトリへのアクセス。通常、ファイルの所有者もそれらを持っていますが、これは常に正しいとは限りません。例:-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.binuser1所有者です;ただし、読むしかできません および実行 、ただしroot引き続きフルアクセス( rwx )ファイルに。 -
RUIDは実際のユーザーID そしてそれは(ほとんど)変わらない。
user2の場合 システムにログインすると、シェルは実際のIDをuser2に設定して起動されます。 。シェルから開始するすべてのプロセスは、実際のIDuser2を継承します 実際のIDとして。EUIDは有効なユーザーID 、setuidビットを設定したユーザーが実行するプロセス(ユーザーではない)に対して変更されます 。
user2の場合file.binを実行します 、RUIDはuser2になります 開始されたプロセスのEUIDはuser1になります 。
passwdの場合を使用してみましょう :
-rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd
-
user2の場合 パスワードを変更したい 、/usr/bin/passwdを実行します 。 -
RUIDは
user2になります ただし、そのプロセスのEUIDはrootになります 。 -
user2passwdを使用できます のみを変更するには 内部的にpasswdであるため、自分のパスワード RUIDをチェックし、それがrootでない場合はチェックします 、そのアクションは実際のユーザーのパスワードに制限されます。 -
EUIDが
rootになる必要がありますpasswdの場合 プロセスは書き込む必要があるためです/etc/passwdへ および/または/etc/shadow。