web-dev-qa-db-ja.com

Sudo Su自動ログイン

ログインプロセスをSudo suで自動化したい。私はこれらについて多くの質問を見てきましたが、どれも私のために働いていません。

Sudoとsuによるログインの自動化

これが私がこれまでに試したものです

echo "mypassword" | Sudo -S su - user
echo "mypassword\n" | Sudo -S su - user
echo mypassword | Sudo -S su - user
echo "mypassword" | Sudo -S su user
echo mypassword | Sudo -S su user

私は以下の応答を得ています

-bash: line 1: mypassword: command not found

私のBashバージョン

GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 
Copyright (C) 2009 Free Software Foundation, Inc.

注:パスワードに特殊文字@が含まれています

@ Sudo
usage: Sudo [-D level] -h | -K | -k | -V
usage: Sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p Prompt] [-u user name|#uid]
usage: Sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p Prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: Sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p Prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: Sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p Prompt] [-u user name|#uid] file ...
6
Reddy

実行しない実行してください!それはあなたのシェルの歴史にあなたのパスワードを残すでしょう!

あなたが本当にする必要がある場合、パスワードなしのログインを許可するようにsudoersファイルを構成することをお勧めします。

これを行うには、コマンドSudo visudoを実行し、次のような行を追加します。

reddy ALL=NOPASSWD: /bin/su - *

(ここでreddyはユーザー名です)。

チーム全体にこのアクセス権を与える必要がある場合は、チームで(UNIX)グループを作成し、reddy%team(チームグループ)に置き換えます。

(また、少し話題とは異なります:echoコマンドは、必要な\nをすでに追加しています。実際には反対(必要ない)が必要な場合、コマンドはecho -nになります。)

12

私はあなたがそれを間違った方向に進んでいることについてヴァルミキーに同意しますが、そこにあるsudoersの行は私がお勧めするものではありません。彼のラインにより、あなたはすべてパスワードなしでrootを含む他の誰にでもSudoを許可されます。これにより、サーバーへの完全なアクセスが効果的に提供されます。つまり、/bin/su行の一部は冗長です。

パスワードを入力せずにこの特定の1人のユーザーにのみSudoを実行できるようにする必要がある場合、正しい行は次のようになります。

%team ALL = (user) NOPASSWD: ALL

これで、パスワードを入力しなくても、そのユーザーとして何でも実行できます。 rootにSudoする必要がある場合は、依然としてパスワードが必要です。

あなたは今あなたの.bashrcで行うことができます

 Sudo -u user /bin/bash
7
Jenny D