簡體   English   中英

如何使用腳本切換用戶以運行另一個腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM