2017-08-29 138 views
0

我有一個腳本,將作爲根執行,部分方式通過腳本我想切換到用戶(說,鮑勃),並執行另一個腳本使用該用戶的環境。在腳本結尾處,我想切換回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: 
+0

一種方法是運行本地SSH服務器。你可以像bob一樣調用命令:'ssh bob @ localhost - command'。如果將bob的公鑰放入'$ HOME/.ssh/authorized_keys'中,密碼提示將被跳過。它是一個Linux環境嗎? –

回答

0

你可能尋找其中之一:

模擬-u用戶bob的-i初始環境:

sudo -i -u bob [command] 

或者,使用sudo,以獲得所需的權限使用su,並要求它-啓動登錄shell鮑勃(不裸-你不這樣做),並-c運行命令:

sudo su - bob -c [command] 
+0

謝謝Michael的建議。我嘗試過--login,但是儘管有文檔廣告,但它沒有給我提供環境。我已經編輯了我上面的原始帖子供您審覈。 – Mercutio

相關問題