2015-04-29 145 views
0

我想在局域網的某些系統中阻止usb海量存儲。我寫了一個bash腳本來修改文件。我在ubuntu中將腳本作爲默認管理員運行。但腳本無法修改文件。我收到以下錯誤 「慶典:/etc/modprobe.d/blacklist.conf:權限被拒絕sudo in bash,權限被拒絕

下面是我的bash腳本

#/bin/bash 
password='mypassword'     #admin password of remote system 
val='blacklist usb-storage'   #text which i want to add in the file 
for sysName in $(cat systemDetails) #systemDetails is file which stores 
do 
ssh $sysName 'echo '$password' | sudo -S echo '$val ' >> /etc/modprobe.d/blacklist.conf' 
echo 
done 
#script ends 

注:我已經配置我的系統,不需要ssh密碼。

這方面的任何指針都會很有幫助。

+0

檢查:LS -la /etc/modprobe.d/blacklist.conf。 看看有什麼權限。 –

+0

它看起來像引用問題。爲什麼你可以直接在root帳戶下運行sudo? – marbu

+0

命令寫入時的重定向由調用sudo的shell處理,您需要寫入/重定向以由sudo(高級進程)啓動的進程啓動。 – Mat

回答

-2

試試這個:

ssh $sysName "echo $password | sudo -S sh -c 'echo $val >> /etc/modprobe.d/blacklist.conf'" 
+0

儘管這段代碼可能解決了這個問題,但有幾句解釋可以幫助讀者更好地瞭解解決方案。 – Thom

+0

在這篇文章中接受的答案解釋了很多:http://stackoverflow.com/questions/82256/how-do-i-use-sudo-to-redirect-output-to-a-location-i-dont-have -permission到WR – Jahid