半世紀以上の Unix 経験を調べましたが、同僚も私自身もグループ (sg
およびgpasswd
) にパスワードを設定したことはありません。グループ パスワードの一般的な使用例は何でしょうか。それとも、歴史的な理由からのみ存在するのでしょうか。
答え1
私もこの機能が使用されているのを一度も見たことがありません。ほとんどの SA はこの機能の存在すら知りません。のマニュアル ページを見ると、gpasswd
次のような注意書きがありました。
グループパスワードに関する注意事項
Group passwords are an inherent security problem since more than one person is permitted to know the password. However, groups are a useful tool for permitting co-operation between different users.
なぜ存在するのか
ユーザーがパスワードを持つモデルを模倣する自然なアイデアであり、そのユースケース モデルをグループにも複製するのは理にかなっていると思います。しかし、実際には、それらは何の役にも立ちません。
グループ パスワードの考え方は、特定のグループ (自分がメンバーとしてリストされていないグループ) にアクセスする必要がある場合に、コマンドを使用してアクセスしnewgrp
、これらの代替グループにアクセスするためにパスワードを要求されるというものです。
これらの大きな問題は、各グループにパスワードが 1 つしかないため、複数の人がこの特定のグループにアクセスする必要がある場合、この 1 つのパスワードを共有しなければならないことです。
グループ
私がこれまで見てきたほとんどの環境では、通常、人々をセカンダリ グループに配置し、これらのグループにファイル システム上のファイルへのアクセス権を付与しており、これにより、必要な使用法のほとんどが満たされていました。
須藤
追加の権限の登場により、sudo
必要に応じてグループに付与できるようになり、グループ パスワードが提供していたユース ケースがさらに損なわれるようになりました。ユーザーにさらに多くの権限を許可する必要がある場合は、ロールを作成しsudo
、ユーザー名または所属グループに権限を昇格させて特定のタスクを実行できるようにする方がはるかに簡単でした。
ACL について
最後に、アクセス制御リスト (ACL) を作成する機能により、ユーザー/グループ/その他の権限モデルだけでは提供できない最後の柔軟性が実際に提供され、グループ パスワードの必要性が不明瞭になりました。
答え2
グループ パスワードの実際の使用法を次に示します。これは、ログに私のアカウントがブルート フォース攻撃を受けている (または辞書攻撃であった可能性がある) ことが示されていたため、私が自分の仕事用サーバーで実装したものです。
私は、ワークステーションと自宅のコンピューターで使用するキー ペアを生成するために、それぞれ と を使用しましたssh-keygen
。puttygen
自宅で使用するキーにはパスワードが必要です。私は に両方の公開キーを追加し.ssh/authorized_keys
、パスワード付きでメンバーのないグループを作成しましたmarionette
。ルートとして、visudo
次の行を追加しました。
Cmnd_Alias SUDOING = /bin/bash, /usr/bin/sudo -i
%marionette ALL=NOPASSWD:SUDOING
私は自分のアカウントのパスワードを無効にしました。誰もその方法でログインすることはできません。私は今、自分のキーでのみログインし、パスワードで保護されたグループに入ると、newgrp marionette
を使用してルートになることができますsudo -i
。オプション
がないと、NOPASSWD:
ユーザーアカウントパスワード。無効になっていて、このグループに がない場合NOPASSWD
、 はできませんsudo -i
。また、ユーザーアカウントコマンド リストにパスワードが含まれていない場合/bin/bash
、または root がデフォルトで使用しているシェル。
これにより、sudo を実行するまでの手順が数ステップ長くなりますが、セキュリティが強化されます。すべてのアカウントをこのようにする場合は、パスワードと sudo 権限を持つローカル アカウントを 1 つ作成し、次/etc/ssh/sshd_config
のような内容を追加して、そのアカウントからの ssh エントリを拒否します。
DenyUsers root caan
DenyGroups root daleks
これは、再インストールしてアクセス キーのバックアップを忘れた場合にローカル アクセスを行うために必要です。
答え3
私もそのパスワードの使用例を見たことがありません。これは約 20 年間の *nix の経験です。
私が思いつく唯一の使用例は、これを「!」に設定してロックし、そのグループのメンバーでない人はコマンドで変更できないようにすることですnewgrp
。
SLES の /etc/group や RedHat ベースのシステムの /etc/gshadow を調べてみると、これが「典型的な」使用例のようです。SLES では、そのパスワードのシャドウ メカニズムを作成することすらしませんでした。
答え4
ユースケースを提案しましょう。
まず最初に言っておきたいのは、私たちは「ユーザー」という言葉に慣れすぎていて、それについて考えることすらないということです。しかし、「ユーザー」は実際にはユーザーたとえば、家には3台のコンピュータがあります。妻のラップトップ、私のラップトップ、そして共通のデスクトップコンピュータです。妻のラップトップを使うときは、妻のユーザーアカウントでログインします。妻が私のラップトップを使うときは、私のユーザーアカウントでログインします。誰かがデスクトップを必要とする場合は、その人は1つの共通アカウントを使用します。ここで、コンピュータシステムが「ユーザー」と呼ぶものは、実際にはユーザーしかし、ワークフロー- 一連のアクティビティ。
ここで質問です。なぜ、自分の仕事ごとに 1 つずつ、複数のアクティビティを持つことができないのでしょうか。できます。仕事用のコンピューターで、現在のタスクに集中できるように (実験的に) 多くの異なるユーザーを作成しました。これらのユーザーをすべて同じグループに入れたので、現在どのユーザーを使用していてもファイルにアクセスできます。
では、gpasswd はどこに当てはまるのでしょうか?
Ubuntu のデフォルトの動作では、ユーザーごとに特別なグループが作成されます。
これらの主要なグループを次のように考えるとどうなるでしょうかユーザーそして、システムのユーザーについて考えるワークフロー?
すると、これらの新しいユーザーはログインするためにパスワードが必要になりますよね? ここで gpasswd の出番です。グループでログインする方法をまだ理解する必要があります (現時点でわかっているのは、すでにログインしている場合は gpasswd でグループを切り替えることができるということです)。