2014-02-28 38 views
0

考慮這個須藤 - 我作爲jonhnd記錄,並通過了以下命令的腳本run1st.ksh運行此sudo來不同的用戶和運行命令後立即sudo的,被動的(非交互)

sudo -iu bigadmin 

這將我的憑據提升爲bigadmin通用用戶,但該用戶是「共享」用戶的含義 - 我真的沒有任何餘地來定製他的個人資料 他登錄後,我看到他的PATH變量非常瘦,只有少數加入路徑

echo $PATH 
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/opt/dell/srvadmin/bin 

因此pwd不在路徑中,也不可執行。 $ PATH中沒有那些目錄是可寫的,就像我說的修改任何bigadmin個人文件不是一個選項。我有一個開始了劇本我執行爲用戶只是我的會議,我必須強迫執行它

. ./myscript 

將工作

myscript 
. myscript 

給人找不到的MyScript錯誤可以理解的,因爲道路限制上述。 我想要做的是運行run1st.ksh中的sudo和myscript,以便當我輸入bigadmin提示時,myscript已經運行了 @barmar 感謝您的幫助。 這裏是從運行(把詳細的設置-x)

++ sudo -iu bigadmin ksh -c '. ./run1st.ksh' 
Usage: . [ options ] name [arg ...] 

@Barmar

sudo -iu bigadmin ksh -c '/home/bigadmin/run1st.ksh' 
ksh: line 1: /home/bigadmin/run1st.ksh: not found 

sudo -iu bigadmin ksh -c '. /home/biadmin/run1st.ksh' 


age: . [ options ] name [arg ...] 


$ sudo -iu bigadmin ksh -c '. /home/bigadmin; run1st.ksh' 
+ sudo -iu bigadmin ksh -c '. /home/bigadmin; run1st.ksh' 
Usage: . [ options ] name [arg ...] 

$ sudo -iu bigadmin ksh -c '. /home/bigadmin/run1st.ksh ; run1st.ksh' 
+ sudo -iu bigadmin ksh -c '. /home/bigadmin/run1st.ksh ; run1st.ksh' 
Usage: . [ options ] name [arg ...] 

的O/P不起作用

$ sudo -iu bigadmin /home/bigadmin/run1st.ksh 
+ sudo -iu bigadmin /home/bigadmin/run1st.ksh 
-nologin: line 1: /home/bigadmin/run1st.ksh: not found 

它實際上查找run1st .ksh在johnd的目錄中

$ sudo -iu bigadmin echo `pwd` 
++ pwd 
+ sudo -iu bigadmin echo /home/johnd 

,甚至在將它複製到johnd的家之後 - 我得到了SAME File not found命令。所以它在特定的PATH中查找文件,而不是在你提出的目錄中。也許調整該sudo命令中的PATH?

我沒有注意到文件名爲xxx. ksh的空間。修正了現在它不給文件找不到錯誤,但它執行它並返回到johnd提示符。

$ sudo -iu bigadmin /home/bigadmin/run1st.ksh 
+ sudo -iu bigadmin /home/bigadmin/run1st.ksh 
++ printf '\033]0;%[email protected]%s:%s\007' johnd server400 '~' 
$ 

回答

1

你可以這樣做:

sudo -iu bigadmin /path/to/myscript 
+0

,將讓我在bash shell的權利。我該如何做同樣的事情,然後像bigadmin一樣進入ksh(bourne)shell – user1874594

+0

使用'ksh'而不是'bash'。 – Barmar

+0

不適用於ksh。我將在一分鐘內更新問題中的o/p – user1874594