私は質問で言及された概念に比較的慣れていません、そして異なる情報源からそれらについて読むことはそれらをより混乱させるだけです。これが私がこれまでに理解したことです:
ファイルへのアクセス許可が与えられると、次のようになります。
-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.bin
user1
所有者です;ただし、読むしかできません および実行 、ただし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
になります 。 -
user2
passwd
を使用できます のみを変更するには 内部的にpasswd
であるため、自分のパスワード RUIDをチェックし、それがroot
でない場合はチェックします 、そのアクションは実際のユーザーのパスワードに制限されます。 -
EUIDが
root
になる必要がありますpasswd
の場合 プロセスは書き込む必要があるためです/etc/passwd
へ および/または/etc/shadow
。