パスワードなしで別のユーザーにsudoを許可する


46

特定のユーザーに 'su'できるようにしたいので、パスワードを入力せずにコマンドを実行できます。

例えば:

ログインがuser1で、「su」を実行したいユーザーがuser2の場合:

次のコマンドを使用します。

su - user2

しかし、それは私にプロンプ​​トが表示されます

Password:


他のユーザーにパスワードを尋ねます。少なくとも他のユーザーは、自分のIDで何が行われたかを知っています。
グローバルノマド

1
これは、別の物理ユーザーとは関係ありません。両方のIDは私のものです。アカウントを作成したときにパスワードを知っています。毎回パスワードを入力する必要はありません。
ツィオ

ユーザーにsshしても大丈夫でしょうか、それとも特に1つのシェルを継承し、suが動作する必要がありますか?
bmike

1
@zio素晴らしいユースケース。ないopen -na Skypeあなたのために動作しませんか?
bmike

回答:


66

sudo あなたのためだけにそれを行うことができます:)

ただし、少し設定する必要がありますが、一度行うと、次のようになります。

sudo -u user2 -s

そして、パスワードを入力せずにuser2としてログインします。

設定

sudoを構成するには、次のようにして構成ファイルを編集する必要がありますvisudo。注:このコマンドは、viテキストエディターを使用して構成を開きます。これに自信がない場合はexport EDITOR=<command>、次の行を実行する前に(を使用して)別のエディターを設定する必要があります。別のコマンドラインエディターが簡単だと見なされることもあるnanoので、そうしますexport EDITOR=/usr/bin/nano。通常、次のスーパーユーザー権限が必要ですvisudo

sudo visudo

このファイルは異なるセクション、エイリアス、デフォルトで構成され、最後にルールがあります。これは、新しい行を追加する必要がある場所です。したがって、ファイルの最後に移動して、これを追加します。

user1    ALL=(user2) NOPASSWD: /bin/bash

また、置き換えることができます/bin/bashALL、その後、あなたは、パスワードなしではuser2として任意のコマンドを起動できます sudo -u user2 <command>

あなただけのユーザーに切り替えることができるようにしたい場合

user1    ALL=(ALL) NOPASSWD: /bin/bash

更新

Skypeに関するあなたのコメントを見ました。Skypeをsudoの構成ファイルに直接追加することを検討できます。アプリケーションフォルダーにSkypeがインストールされていると仮定します。

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

次に、ターミナルから呼び出します。

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

これはsshキーのアイデアよりもはるかに複雑ではないので、リモートアクセスにもsshキーが必要でない限り、これを使用します。
bmike

2
セキュリティの観点から注意すべきことの1つは、特定のコマンドを指定すると、それがuser1の読み取り専用コマンドであることを意味するということです。それ以外の場合は、コマンドを別のもので上書きし、user2として実行できます。そして、それを気にしない場合は、user1がuser2として任意のコマンドを実行できるように指定することもできます。したがって、sudoの設定がより単純になります。
スタンクルドジエル

@StanKurdziel良い点!知っておくべきことですが、rootでない限り、ユーザーがシステム実行可能ファイルを書き込み可能にすることはほとんどありませんが、この場合はsudoは必要ありません;-)しかし、このコメントを追加するのはめったにないので私はおそらくそれを複数回見落としていることを。
ホイヘンス

行動寄りにそれを取得するにはsu - user2代わりにsu user2、コマンドは、おそらくすべての関与させるべきでsudo -u user2 -iあるuser2として最初のログインをシミュレートするために、
ゲルトファンデンベルグ

4

2番目のアカウントに公開/秘密sshキーを設定し、最初のアカウントにキーを保存します。

次に、次のようなコマンドを実行できます。

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

1つのユーザーアカウントで2つのインスタンスが実行されており、そのプログラムによって読み取り/書き込みされたファイルが競合する可能性があるため、Skypeが混乱するという問題がまだあります。また、必要に応じて十分に機能する可能性があり、2番目のSkypeインスタンスを実行するためにiPod touchは必要ありません。


1
これは、任意のホスト上の任意のアカウントにパスワードなしでログインする一般的な場合に適した安全なソリューションですが、両方のアカウントが同じホストにあり、同じユーザーに属している場合、おそらくやり過ぎだと思います。
calum_b

@scottishwildcatパスワードをスクリプト化してクリアテキストで入力するか、変数を使用してキーチェーンにパスワードを保存しexpect、対話をスクリプト化するようなツールを使用する方法よりもはるかに安全です。sudo su - blahパスワードを使用して入力するだけです。他の答えは、これをコメントとして保持するのに十分なほどsudoをカバーすると思います。
bmike

ああ、私は確かにあなたの答えを削除することを提案していませんでした...私はダウン票すらしませんでした、それは完全に良い答えです。
calum_b

私たちは完全に同意しているようです-追加してくれてありがとう-あなたがそれを改善できるなら、答えに自由に編集してください。
bmike

受け入れられているソリューション(sudo -u user2 <...>)には、リモートで使用できないという利点があります。これは、セキュリティに役立つ可能性があります。盗難される可能性のあるuser1の秘密キーはありません。
ゲルトファンデンバーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.