[英]How to switch users with script to run another script
我有一個腳本,它將以root身份執行,在腳本切換過程中,我想切換到某個用戶(例如bob),並使用該用戶的環境執行另一個腳本。 在腳本末尾,我想切換回root並執行更多命令。 我想運行此腳本,而不必輸入bob的密碼。
該腳本將在首次啟動時通過用戶數據功能提供給我的AWS EC2實例。
我認為做到這一點的方法是使用sudo或su。 但是,我似乎無法使用這兩種方法訪問bob的環境。
在下面的stdout echo中,您將看到環境變量myvar被初始化為Inara,但是當使用sudo執行此腳本時,該值未設置。
dave@bugbear:~/workspaces/sandbox$ su --login bob
Password:
bob@bugbear:~$ cat bin/echo.sh
#!/bin/bash
echo "In echo.sh.. myvar is {$myvar}"
echo "Now executing the ruby script"
. ~/.bashrc
~/bin/echo.rb
bob@bugbear:~$ cat bin/echo.rb
#!/usr/bin/env ruby
puts "$myvar is: #{ENV['myvar']}"
bob@bugbear:~$ bin/echo.sh
In echo.sh.. myvar is {Inara}
Now executing the ruby script
$myvar is: Inara
bob@bugbear:~$ exit
logout
dave@bugbear:~/workspaces/sandbox$ cat test.sh
#!/bin/bash
stty echo
sudo --login -u bob bin/echo.sh
dave@bugbear:~/workspaces/sandbox$ ./test.sh
In echo.sh.. myvar is {}
Now executing the ruby script
$myvar is:
您可能正在尋找以下之一:
模擬-u
用戶bob的-i
初始環境:
sudo -i -u bob [command]
或者,使用sudo
來獲得使用su
所需的特權,並要求它-
以bob身份啟動登錄外殼程序(沒有裸露-
您沒有這樣做),然后-c
運行命令:
sudo su - bob -c [command]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.