なぜホイールとオペレーターにルートがあるのですか?グループに所属するルートはこれまでに違いをもたらすことができますか?


18

FreeBSDマシンで、rootがwheelとoperatorにあることに気づきました。UID 0がグループ内にあると、...なんでも...何にも影響する状況を考えようとしています。さらに、rootは/ etc / passwdにプライマリログイングループを必要としますか?または、ユーザーが空のプライマリグループフィールドを持っている場合、login(3)は窒息して死にますか?

(明確にするために、ファイルにはグループ所有者が必要なので、「root」グループの存在の目的を理解しています。ユーザーroot / toor / whateverがそのグループメンバーシップを持っていることの重要性を理解していません。)

これは何十年も前のことなのでしょうか、それとも本当の理由がありますか?

回答:


5

要するに:いいえ。ルートをオンにwheelしてoperatorグループを変更しても何も変わりません。

しかし、あなたはまた2つの他のことを疑問視しています:

  • ルートグループIDは(デフォルトで)0に設定されます。これは、取得できる空の値に最も近いものです。

    $ head -4 /etc/passwd
    # $FreeBSD: releng/9.2/etc/master.passwd 243947 2012-12-06 11:52:31Z rwatson $
    #
    root:*:0:0:Charlie &:/root:/bin/csh
    toor:*:0:0:Bourne-again Superuser:/root:
    

    前述のように、すべてのユーザーはグループを持っている必要があるため、ルートグループID(またはユーザーgid)をvoidまたは空の値に設定することはできません。ユーザーgidを空白に設定しようとすると、次の警告が表示されpwd_mkdbます。

    pwd_mkdb: no gid for user root
    pwd_mkdb: at line #3
    pwd_mkdb: /etc/pw.Rlb2U3: Inappropriate file type or format
    re-edit the password file?
    

    そのため、ルートが定義されているという事実は、単なる無意味な番号ではなく、適切な名前を付けることに関するものです。ルートgidは、意味のない任意の番号(gid内にないgid)に変更できます/etc/group。あなたのルートユーザーはログインすることができるだろう、suまたは任意の他のルートを行うことができます。あなたはちょうどそのようなものを持つことになります:

    $ id
    uid=0(root) gid=10000 groups=10000,5(operator)
    
  • OpenBSDNetBSDのようなFreeBSDのように、rootになるにはユーザーが参加する必要があるため、まったく異なる話であるwheelグループに属するユーザーがいる理由について。wheelsu

    FreeBSDドキュメント(9.4章)から:

    SUのルート(またはスーパーユーザー権限を持つ他のアカウント)、あなたはでなければなりませんホイールグループ。この機能がなければ、システムのアカウントを持ち、rootのパスワードも見つけた人はだれでも、システムへのスーパーユーザーレベルのアクセスを取得できます。この機能では、これは厳密には真実ではありません。su(1)は、彼らがwheelにない場合でもパスワードを入力しようとすることを防ぎます。

    しかし、あなたは正しい、ホイールからルートユーザーを削除しても状況は変わりません。これは、toorユーザーがwheelの一部ではなく、rootoperatorグループの一部であるため、純粋に形式的なものです。

  • ただし、演​​算子グループは純粋に形式的であり、それ自体に特別な意味はありません。

また、Richard Stallmanwheelグループについて考えることもあります(gnu su manualから)。

GNU "su"が `wheel 'グループをサポートしない理由==================================== ==========

(このセクションはRichard Stallmanによるものです。)

一部のユーザーは、他のすべてのユーザーに対して総電力を保持しようとすることがあります。たとえば、1984年、MIT AIラボの数人のユーザーは、Twenexシステムのオペレーターパスワードを変更し、他のすべてのユーザーからパスワードを秘密にしておくことで権力を掌握することを決定しました。(カーネルにパッチを適用することで、このクーデターを阻止し、ユーザーに力を与えることができましたが、Unixでそれを行う方法がわかりませんでした。)

ただし、定規は時々誰かに言うことがあります。通常の「su」メカニズムの下では、通常のユーザーに共感するrootパスワードを誰かが知ったら、残りを伝えることができます。「ホイールグループ」機能はこれを不可能にし、したがって支配者の力を強化します。

私は定規の側ではなく、大衆の側にいます。ボスやシステム管理者をサポートすることに慣れている場合、最初はこの考えがおかしいと感じるかもしれません。


1

login(3)などは、プライマリグループを想定しています。彼らは、utmp / wtmpファイルに有効なフィールドを設定するためにそれを必要とします。そして、(ファイル形式が変更されていなくても)login(1)またはsshd(8)または他のプログラムがユーザーセッションをセットアップしようとすると、根本的な問題にぶつかります-utmp / wtmpに関係なく、両方を満たす必要がありますUIDおよびGIDカーネルプロセスプロパティ(ログインしたユーザーによって作成されたファイルには、気づいたようにUIDとGIDが入力されている必要があります)。

all-powerful-rootがプライマリグループ以上のものを必要とする問題については、パーミッションチェック(UID 0ではスキップされるため)ではなく、他のいくつかの用途では必要です。

「wheel」グループは、特にpam_wheelなどのいくつかの追加認証チェックに使用されます

「operator」などの他のグループはセキュリティ機能に使用される場合があります(たとえば、rootによって実行されるプロセスは、GROUPメンバシップ(「operator」など)を保持しながら、特権のないUSER(「nobody」など)にsetuid(2)する場合があります)これにより、そのようなプロセスはそのグループが所有するファイルに引き続きアクセスできるようになり、完全なUID 0アクセスで実行することによるセキュリティの問題が大幅に軽減されます。

システムにこの機能を使用するプログラムがあるかどうかはわかりません(またはデフォルトのFreeBSD CURRENTの場合)


0

違いを生むことができます-プログラムがグループメンバーシップをチェックするとすぐに、結果に応じて異なる動作をします。もちろん、rootユーザーが強制できる特権に違いはありません。


0

グループwheelのメンバーが誰もいない場合、wheelは単純に無視され、すべてのユーザーがsu ...を実行してパスワードを推測できる可能性があるわけではありません。少なくとも1人のユーザーIDをグループwheelのメンバー(つまり、userid root)にすると、ホイールコントロールがチェックされ、グループwheelの他のメンバーのみがsuを実行できます。

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