管理に1つのパスワードを使用し、システムログインに別のパスワードを使用する


10

ログイン時に通常使用するパスワードと、システム管理とsudoアクセス用に別のパスワードをユーザーに与えるにはどうすればよいですか?1人のユーザーに2つのパスワードを設定します。


1
2つのアカウントを作成しないでください。1つは通常の使用用で、もう1つはsudoの使用を許可します。
Luis Alvarado、2013

いいえ、1つのアカウントで必要ない
Varun Sridharan

なぜこれを1つのアカウントにする必要があるのですか?sudoアクセスで個別のアカウントを作成できますが、個別のホームフォルダーはありません。このユーザーを通常のユーザーと同じグループに追加し、同じホームフォルダーを使用するように設定しますsudo usermod -d /path/to/new/home
Warren Hill

@SVarun私はあなたが最後にコメントしてから私のために働くステップで私の答えを更新しました。確認して、うまくいくかどうか教えてください。
アーロンD

回答:


16

sudoサービスのPAM(Pluggable Authentication Module)設定を上書きすることでこれを行う方法があります。これはマシンに大きなリスクを負って実行してください。コマンドの機能を理解していない限り、コピーアンドペーストするのではなく、ルートターミナルを常に開いたままにしてください-テストテストテスト!-戻って何かを修正する必要がある場合に備えて、ログアウトする前。

PAMのしくみに関する情報を読んで、壊れた場合の対処方法を知っておくことをお勧めします。権限を正しく設定していない場合、ソリューションがパスワードに対するハッシュテーブル攻撃を受けやすい可能性があるため、ほとんどのユーザーが別の角度からこの問題に取り組むことをお勧めします(管理用に別のユーザーアカウントを作成します)。

続行する場合は、新しいPAMモジュールをインストールする必要があります。pam_pwdfileは、古いスタイルの/ etc / passwdタイプのファイルを認証に使用します。これは、異なるサービスに異なるパスワードを使用するのに最適です。アカウント認識は提供されません。システムに存在しないユーザーのユーザー名とパスワードのペアを作成できます。これはsudoに使用するため、通常の方法でアカウントが存在することをsudoに確認させるだけなので、問題ではありません。

sudo apt-get install libpam-pwdfile

また、便利なhtpasswdファイルエディタを入手することもお勧めします。Benjamin Schweizerは、Pythonでうまく機能する便利なエディターを作成しました。http://benjamin-schweizer.de/htpasswd_editor.htmlからそれを取得し、その依存関係をインストールします。

sudo apt-get install python-newt

ツール-を使用して、htpasswd形式のファイルを生成しますsudo python htpasswd_editor sudo.passwd。sudoで使用するのと同じユーザー名を使用して、ユーザー名とパスワードを入力します-使用するユーザーごとに1つ。安全な場所にコピーし(これをテストするときは、/ etc / sudo.passwdに入れます)、chmod 660 /etc/sudo.passwdrootとして通常のユーザーが読めないようにします。

ファイルの所有者がrootであり、他のユーザーが読み取れないことを確認してください。ファイルにハッシュ化されたパスワードが含まれているため、これは脆弱性であり、他のユーザーが読み取りまたは書き込み可能である場合、セキュリティが著しく損なわれます。このため、セキュリティを確保する必要があるマシンでこの方法を使用することはお勧めしません。

最後に、/etc/pam.d/sudoファイルを編集します。他の行の上に次の行を追加します@include ...

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

明らかに、最後の引数を、生成されたhtpasswdファイルへのパスに置き換えます。次の行をコメント化し#@include common-authます。新しい認証方法を使用していることを確認します。

注意事項 - /etc/pam.d/sudoルートターミナルからファイルを編集する必要があります。テストせずにこれを閉じないでください!その場合、(何かが壊れている場合は)再度ログインできず、システムを修復するためにリカバリディスクから起動する必要があります。新しい端末を開いてログアウトする前にテストし、を使用してみてくださいsudo。通常のログインパスワードでは機能しなくなりますが、passwdファイルの生成時に使用した新しいパスワードが必要になります。ファイルを更新するには、もう一度便利なツールを使用します。


Ubuntuで実行する必要があります。他に方法はありますか
Varun Sridharan '19

私は答えを更新しました-私はこの方法をテストしましたが、あなたの質問を正しく理解していれば、あなたが望むことを行います。ぜひお試しください。
アーロンD

1
+50バウンティ。@AaronDあなたの答えは私の質問を解決しました。ありがとう!!!
ロビーWxyz

お役に立てて嬉しいです!
アーロンD

1

元の質問に対するはるかに簡単な解決策があり、私が実行する方法です:

  • 管理者以外のユーザーを1人作成する
  • 管理ユーザーを作成する

常に非管理者ユーザーとしてログインし、非管理者ユーザーが「管理」を行う必要がある場合は、次のようにしてください。

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

はい、それはあなたが望むものではありませが、実際に必要なものです

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