su
コマンドを介してroot(スーパーユーザー)になることができることは知っていますが、コマンドを入力した後にそれを認証する必要があります。 rootになり、1行で(パスワードを使用して)認証する方法はありますか
まあ、私が考えることができる唯一のものは
echo 'password' | Sudo -S command
-S
フラグは、Sudo
に標準入力からパスワードを読み取らせます。 man Sudo
で説明されているように:
-S、-stdin
ターミナルデバイスを使用する代わりに、プロンプトを標準エラーに書き込み、標準入力からパスワードを読み取ります。パスワードの後には改行文字が必要です。
したがって、ls
特権でSudo
を実行するには、次のようにします。
echo 'password' | Sudo -S ls
Sudo
アクセストークンがアクティブな場合、パスワードを入力する必要がない場合は、すでに最近実行しているため、これによりエラーが生成されることに注意してください。これを回避するには、-k
を使用してアクセストークンをリセットします。
echo 'password' | Sudo -kS ls
実際のルートシェル(su
やSudo -i
など)にアクセスする方法は知りません。ただし、これで十分です。
ターミナルで visudo
コマンドを実行して、sudoersファイルを編集します。
Sudo visudo
sudoersリストに次の行を追加します
username ALL = NOPASSWD : ALL
注:上記の行のusernameを実際のUserNameに置き換えます。
echo 'password' | Sudo -kS ls
ソリューションは機能しますが、いくつかのセキュリティ上の欠点があります。そのほとんどは、terdonの回答へのコメントで既に言及されています。したがって、別のアプローチを提案したいと思います。
頻繁に実行する必要があるコマンドが1つだけの場合、たとえばapt-get upgrade
は、Sudo someCommand
がnotを要求するようにシステムを構成できます。
これを行うには、visudo
を実行し、次のようなものを入力します。
myusername ALL=(ALL) NOPASSWD: /usr/bin/apt-get upgrade
コマンドを入力する場合without引数(この例ではupgrade
なし)を入力すると、ユーザーはany引数を指定して実行できることに注意してください。注意して使用してください。
これもできます:
Sudo -S <<< "password" command
パスワードを完全に削除する代わりに、タイムアウトを増やして、1日に数回入力するだけで済みます。ターミナルで、次を実行します:
Sudo visudo
ファイルの最後に、次の行を追加してタイムアウトを30分に設定します(jsmith
をユーザー名に置き換えます)。
Defaults:jsmith timestamp_timeout=30
任意の番号を使用できます。 -1
はタイムアウトなし(最初のみプロンプトが表示される)を意味し、0
はインスタントタイムアウト(Sudo
が表示されるたびにプロンプトが表示される)を意味します。デフォルトのタイムアウトは5分です。
Vader、元の質問に対するコメントから、スーパーユーザーのアクセス許可で実行されている対話型のシェルに切り替えたいですか?
Sudoには、シェルを要求する特定の引数があります。
-s [command]
The -s (Shell) option runs the Shell specified by the Shell environment variable if
it is set or the Shell as specified in the password database. If a command is
specified, it is passed to the Shell for execution via the Shell's -c option. If no
command is specified, an interactive Shell is executed.
これにより、前述のセキュリティ上の欠点が回避され、次のコマンドを使用して「ルートに移動」できます。
Sudo -s
IF本当にルートシェルを実行する必要があります(ほとんどの場合、実行しません)。 (「ルート」として実行することを反映するため)それに応じて設定されるシェルの変数は、「-H」フラグを使用して実行できます。したがって、完全なコマンドは
Sudo -s -H
詳細は Sudoのマンページ で確認できます。