UNIXのrootアカウントは正しいですか?

UNIXのrootアカウントは正しいですか?

いくつかの大学の配布資料の主張

rootUnixシステムでは、パスワードの変更、通信プロトコルで使用されるネットワークポートへのアクセス、ハードウェアとのやり取りなど、ユーザーのみがアクセスできる機能の一部がオペレーティングシステムに記録されます。

この説明は正しいですか?これは「オペレーティングシステム」で正確にどこに実装されていますか? root以外のユーザーが書き込めない場合は、どのように自分のパスワードを変更できますか/etc/passwd

私が知っている限り、rootユーザーに無制限の権限を持たないSELinuxなどのUNIXベースのシステムはありますか?

答え1

この説明は正しいですか?

はい、いいえ。この声明はせいぜい不完全です。具体的には:

  • パスワードの変更:ユーザーは自分のパスワードを変更できますが、root他のユーザーのパスワードのみを変更できます。これはアクセス権によって強制されます/etc/shadow。 setuidが書き込み権限を取得できるため、バイナリpasswd(1)は権限をバイパスできます。/etc/shadowpasswdrootroot/etc/shadow
  • 通信プロトコルで使用されるネットワークポートにアクセスします。root1024以下のTCPおよびUDPポートのみをバインドでき、他のポートは誰でもバインドできます。これはカーネルによって実施されます。また、rootrawソケットのみを使用できます(特に実行するpingにはuidを設定する必要がある理由ですroot)。ただし、rawソケットにアクセスする詳細はオペレーティングシステムによって異なり、時にはさまざまな非標準ACLメカニズムを介してアクセスが許可されることがあります。
  • ハードウェアとの対話:原則として、プロセスのみがrootハードウェアにネイティブコマンドを送信できます。これは主にデバイスに対する権限によって行われます/dev。ただし、ほとんどのシステムには、USBディスクのマウント、CDの書き込み、オーディオハードウェアの使用など、ユーザーがこれらの権限をバイパスするメカニズムがあります。

これは「オペレーティングシステム」で正確にどこに実装されていますか?

カーネルによって実装された権限システムがあります。ほとんどのオペレーティングシステムは、OpenBSDなどの他のさまざまなメカニズムでこのシステムを補完します。pledge、またはLinux SELinux

私が知っている限り、rootユーザーに無制限の権限を持たないSELinuxなどのUNIXベースのシステムはありますか?

はい。

答え2

LinuxはUnixではないので、ここでLinuxとの比較は正しくないと思うので、元の声明に戻りましょう。

Unix の passwd コマンドマニュアルでは、root のみがこのユーティリティを使用できることを示しています。

http://man.cat-v.org/unix-1st/5/passwd

同様に、オープンポートは特権プロセスのみを特定のポートに変更することを許可します。 sys/socket.h は Unix で定義されます。 http://pubs.opengroup.org/onlinepubs/7908799/xns/syssocket.h.html

以下に示すように:

http://man7.org/linux/man-pages/man7/ip.7.html

これを行うための権限は、ルートを要求するのと同じです。

ハードウェアとのやりとりはやや広範でさえ曖昧です。ただし、root権限を必要とする/dev/インターフェース(mknodなど)を参照することもできます。

したがって、このステートメントは基本的に正確です。

関連情報