ログインプロセスを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 ...
実行しない実行してください!それはあなたのシェルの歴史にあなたのパスワードを残すでしょう!
あなたが本当にする必要がある場合、パスワードなしのログインを許可するようにsudoers
ファイルを構成することをお勧めします。
これを行うには、コマンドSudo visudo
を実行し、次のような行を追加します。
reddy ALL=NOPASSWD: /bin/su - *
(ここでreddy
はユーザー名です)。
チーム全体にこのアクセス権を与える必要がある場合は、チームで(UNIX)グループを作成し、reddy
を%team
(チームグループ)に置き換えます。
(また、少し話題とは異なります:echo
コマンドは、必要な\n
をすでに追加しています。実際には反対(必要ない)が必要な場合、コマンドはecho -n
になります。)
私はあなたがそれを間違った方向に進んでいることについてヴァルミキーに同意しますが、そこにあるsudoersの行は私がお勧めするものではありません。彼のラインにより、あなたはすべてパスワードなしでrootを含む他の誰にでもSudoを許可されます。これにより、サーバーへの完全なアクセスが効果的に提供されます。つまり、/bin/su
行の一部は冗長です。
パスワードを入力せずにこの特定の1人のユーザーにのみSudoを実行できるようにする必要がある場合、正しい行は次のようになります。
%team ALL = (user) NOPASSWD: ALL
これで、パスワードを入力しなくても、そのユーザーとして何でも実行できます。 rootにSudoする必要がある場合は、依然としてパスワードが必要です。
あなたは今あなたの.bashrcで行うことができます
Sudo -u user /bin/bash