GNU/Linux >> Linux の 問題 >  >> Linux

sudo を使用して別のユーザーとして bash サブシェルで一連のコマンドを実行するにはどうすればよいですか?

sudo 内でシェルを実行する :sudo bash -c 'whoami; whoami'

' 以外の任意の文字を使用できます それ自体を一重引用符で囲みます。そのコマンドに一重引用符が必要な場合は、 '\'' を使用してください (技術的には:end single-quoteliteral,literal ' 文字、単一引用符で囲まれたリテラルを開始します。しかし、事実上、これは単一引用符で囲まれたリテラル文字列に単一引用符を挿入する方法です)。


ヒア ドキュメントを使用して、標準入力としてコマンドを sudo された bash に渡すことができます:

sudo bash <<"EOF"
whoami
id
EOF

このように、特に複数のレベルがある場合、正しい引用をいじる必要はありません。例:

sudo bash <<"EOF"
whoami
echo $USER ~
sudo -u apache bash <<"DOF"
whoami
echo $USER ~
DOF
EOF

プロデュース:

root
root /root
apache
apache /usr/share/httpd

(内側のターミネータをインデントできないことに注意してください — その行では単独である必要があります。ヒア ドキュメントでインデントを使用したい場合は、 <<- を使用できます << の代わりに 、ただし、スペースではなくタブでインデントする必要があります.)


たとえば、これを試してみてください。私はそれをテストしました:

sudo bash -c "cd /;ls;ls|grep o"

この例では、最初に dir を /root に変更し、次にルート ディレクトリをリストし、最後にルート ディレクトリに対して、名前が「o」の文字を持つディレクトリのみをフィルタリングします。

しかし、より良い方法は、必要なすべてを実行し、すべての複雑なアクションの終了コードを提供するスクリプトを作成することです。次に、上記の例のように単一コマンドのグループの代わりに sudo スクリプトを実行できます。


Linux
  1. 別のサーバーを使用してサーバーにSSH接続する方法は??

  2. シェルスクリプトを使用してgnuplotでコマンドを実行する方法は?

  3. xargs でエイリアス化されたコマンドを使用するにはどうすればよいですか?

  1. 通常のユーザーを sudoers ファイルに追加するにはどうすればよいですか?

  2. 検索を使用するときに複数のコマンドを実行するにはどうすればよいですか?

  3. bashコマンドを使用してフォルダを一覧表示するには?

  1. Bash履歴コマンドの使用方法

  2. 別のユーザーの権限で bash スクリプトを自動的に実行する

  3. sudoers で引用符を含むコマンドをユーザーに実行させるにはどうすればよいですか?