スクリプトを途中で実行するスクリプトがあります(たとえば、bob)に切り替えてそのユーザーの環境を使用して別のスクリプトを実行したい。スクリプトの終わりに私はrootに戻り、より多くのコマンドを実行したい。私はbobのパスワードを入力せずにこのスクリプトを実行したいと思います。スクリプトでユーザーを切り替えて別のスクリプトを実行する方法
このスクリプトは、初回起動時にユーザーデータ機能を介してAWS EC2インスタンスに提供されます。
これを行う方法は、sudoまたはsuを使用することだと思いました。しかし、私はこれらの方法のいずれかでボブの環境にアクセスすることはできません。下記の標準出力エコーで
は、このスクリプトは、sudoで実行されたときには、その値が設定されていない....[email protected]:~/workspaces/sandbox$ su --login bob
Password:
[email protected]:~$ cat bin/echo.sh
#!/bin/bash
echo "In echo.sh.. myvar is {$myvar}"
echo "Now executing the ruby script"
. ~/.bashrc
~/bin/echo.rb
[email protected]:~$ cat bin/echo.rb
#!/usr/bin/env ruby
puts "$myvar is: #{ENV['myvar']}"
[email protected]:~$ bin/echo.sh
In echo.sh.. myvar is {Inara}
Now executing the ruby script
$myvar is: Inara
[email protected]:~$ exit
logout
[email protected]:~/workspaces/sandbox$ cat test.sh
#!/bin/bash
stty echo
sudo --login -u bob bin/echo.sh
[email protected]:~/workspaces/sandbox$ ./test.sh
In echo.sh.. myvar is {}
Now executing the ruby script
$myvar is:
一つの方法は、実行することです:
su
を使用して-
ボブとしてログインシェルを起動する(裸-
ずにいることをやっていない)と-c
コマンドを実行するように依頼する必要な特権を得るためにローカルのSSHサーバー。コマンドをbob: 'ssh bob @ localhost - command'として呼び出すことができます。 bobの公開鍵を '$ HOME/.ssh/authorized_keys'に入れると、パスワードプロンプトはスキップされます。それはLinux環境ですか? –