我有一個腳本,將作爲根執行,部分方式通過腳本我想切換到用戶(說,鮑勃),並執行另一個腳本使用該用戶的環境。在腳本結尾處,我想切換回root並執行更多命令。我想運行這個腳本,而不必輸入鮑勃的密碼。如何切換用戶腳本運行另一個腳本
此腳本將在首次啓動時通過用戶數據功能提供給我的AWS EC2實例。
我認爲這樣做的方法是使用sudo或su。但是,我似乎無法使用這兩種方法訪問bob的環境。
在下面的標準輸出回波,你會看到環境變量MYVAR被初始化爲Inara但是當這個腳本使用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:
一種方法是運行本地SSH服務器。你可以像bob一樣調用命令:'ssh bob @ localhost - command'。如果將bob的公鑰放入'$ HOME/.ssh/authorized_keys'中,密碼提示將被跳過。它是一個Linux環境嗎? –