SUDOパスワードとは異なるSSH /ログインパスワード


9

ユーザーが(GUI、シェル、またはSSHを介して)アカウントにログインするときに使用するパスワードとは異なるパスワードを使用して、ユーザーをsudoステータスに昇格させたい。これは可能ですか?

編集: rootパスワードを設定するとrootとしてログインできるため、これは適切な方法ではありません。システム全体のrootパスワードではなく、ユーザー固有のsudoパスワードを使用します。


1
これについて詳しく説明してもらえますか?なぜこれをしたいのですか?
Doug Harris

1
質問は十分に説明されていると思いますが、目標は、長くて難しいパスワードを使用してログインを安全にしてから、sudoアクセスに別のパスワードを使用して、ユーザーのアカウントが侵害されてもsudoアクセスが自動的に提供されないようにすることです。
リチャード

rsa / dsaキーを使用してsudoを実行することは可能だと聞きました。これには、任意のパスフレーズを使用できます。
Rob

回答:


2

男sudoersから:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

または、sshを介したパスワードベースのログインを完全に禁止することもできます。リモートログインにはパスフレーズ暗号化キーが必要です。その後、sudoのパスワードを自由に使用できます。関連するオプションは

男sshd_configから

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

助けてくれてありがとう、チャス。オーウェンズ。あなたの解決策の副作用はルートアカウントにパスワードがあり、したがってルートとしてログインすることが可能になることです。これは私が開いたままにしたいドアではありません。システム全体のrootパスワードではなく、ユーザー固有のsudoパスワードを使用します。
Richard

sshd_configからrootログインを無効にすることもできます
Rob

1

代わりにこれをsudoers manで探していますか?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 

johnshen64、ご協力ありがとうございます。あなたの解決策の副作用はルートアカウントがパスワードを持っているので、私が開いたままにしたいドアではないルートとしてログインすることが可能になるということです。システム全体のrootパスワードではなく、ユーザー固有のsudoパスワードを使用します。
Richard

そのユーザーはrootユーザーである必要はありません。指定しない場合、デフォルトでrootになります。あなたはそれがあなたのためになるかどうか確かめるためにそれを実験することができます。unixは非常にオープンであり、それでも機能しない場合は、ラッパースクリプトを記述したり、sudoを変更して(cを知っている場合)、希望どおりに実行したりすることもできます。
johnshen64

@ johnshen64彼は、同じパスワードがすべてのユーザーに使用されるという事実に反対していると思います。
Chas。オーエンス

わかりましたが、ユーザーごとに管理ユーザーを作成できます。たとえば、$ {USER} foradminとすると、ユーザーは常に-u $ {USER} foradminを指定できますが、sudoをカスタムスクリプトで置き換える必要があることを強制します。
johnshen64

1

SSH経由のパスワードログオンを無効にし、推測しにくいパスワードを設定できる公開キーログオンを許可するのはどうでしょう。次に、ローカルパスワードを短くして、sudoで使用できます。

それ以外の場合は/etc/pam.d/sudo、別の(または追加の)モジュールを使用するように構成するpam_dialpass必要がありますが、一見すると必要なものが許可される場合があります。

一方のLDAP構成ともう一方のローカルパスワードを構成することもできます。それは、どれだけの変更が可能で、喜んで行うか、どのモジュールが利用可能かなどに依存します。


助けてくれてありがとう、ブラム。最初の提案は機能しますが、公開鍵認証は、鍵ファイルを転送する準備ができていない限り、処理が禁止される可能性があることに注意してください。
Richard

1

解決策1:newgrp

ユースケースに対処する簡単な方法:NOPASSWDは、グループおよびグループpasswdと組み合わせて使用することです。

sudoersに行を追加します。

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

passwd保護グループを作成します。

groupadd rudo
gpasswd  rudo # Enter passwd

権限のないユーザーとしてログインする場合(まだrudoグループに参加していない場合)、グループにログインするrudoと、パスワードの入力を求められます。

login user
newgrp rudo

これでsudo、グループにログインしたままであれば、パスワードなしで実行できます。


解決策2:runaspw

これを使用するためのより良い、おそらくより安全な方法runaspwrunaspwrunas_defaultオプションに関連付けられているため、そのオプションも追加する必要があります。

デフォルトの%sudoグループエントリがすでにあると仮定します。

%sudo   ALL=(ALL:ALL) ALL

これらの行をsudoersファイルに追加します。

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

次にsudo、パスワードを使用して新しいユーザーを追加します。

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

これで、sudoグループユーザーはsudoユーザーのpasswdの入力を求められますが、sudoグループ内のユーザーのみがsudoを実行できます(上記のグループソリューションとは異なり、グループ内またはグループpasswdを持つすべてのユーザーがsudoを実行できます)。

マイナーな問題は、デフォルトのrunasユーザーがsudorootとしてsudoを実行するようになり、明示的にrootを指定する必要があることです。

sudo -u root <cmd>

ただし、エイリアス(alias sudo='sudo -u root')または間接sudoコマンドを定義するのは簡単です。

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