2012-03-11 42 views
0

如果我想在主腳本文件中以特定用戶身份調用另一個shell腳本,我該如何去做呢?孩子的腳本似乎鬆散了它運行的用戶的上下文,我還沒有找到任何有用的子腳本技術。運行shell腳本作爲父腳本的用戶

例:war-install.sh

if [ ! -d /opt/tomcat/ ] 
then 
    ./tomcat-install-files/install.sh 
fi 

這裏的問題是,如果我跑war-install.sh作爲root或使用sudo命令,./tomcat-install-files/install.sh似乎失去了sudo/root的上下文。我該如何糾正這一點?

謝謝!

+0

它不應該(改變用戶),除非子命令自己的setuid後:但一般以其他用戶身份運行命令(如果shell腳本不好主意!)。是什麼讓你認爲它失去了sudo用戶? – torek 2012-03-11 04:28:15

+0

如果我運行命令「sudo ./tomcat-install-files/install.sh」,腳本運行良好。但是,如果我運行「sudo war-install.sh」,一旦它調用install.sh,我會得到一堆「權限被拒絕」錯誤。 – Roosh 2012-03-11 05:18:38

+0

以上是war-install.sh的全部內容嗎?/opt/tomcat /是否作爲目錄存在?假設「否」(還有更多)和「否」(所以它到達./行)是「。」仍然指向那個地方的同一個地方? (在調用./tomcat-install-files/install.sh之前,嘗試設置-x和/或在那裏執行'pwd')。 – torek 2012-03-11 05:53:49

回答

0

我同意Roosh發生的奇怪事情。

sudo -l <user> <cmd>

+0

如果子腳本運行su命令,則全部執行腳本被暫停。 – Roosh 2012-03-11 05:19:45

+0

這應該是'sudo',而不是'su'('su'會打開一個交互式shell,這不是你想要的腳本)。 – 2012-03-11 11:11:46

+0

@MichałKosmulskiArg傻我的不好...修正! – Sandro 2012-03-11 16:59:13

0

嘗試用空間點

if [ ! -d /opt/tomcat/ ] 
then 
    . /tomcat-install-files/install.sh 
fi