2011-08-01 22 views
122

我有script.sh必須作爲user2運行。但是,此腳本只能在我的應用程序的user1下運行。如何作爲另一個用戶沒有密碼運行腳本

我想下面的命令來運行:

su user2 -C script.sh 

而且能夠沒有密碼運行。

我也希望這是非常嚴格的,因爲user1只能在user2下運行script.sh而沒有別的。

我試着用sudoers文件來做這件事,並且經過幾個小時的嘗試後,感到無窮無盡。

如果有人可以提供一個明確的例子說明如何完成這個(而不是通用的使用sudoers),那將是不勝感激。

+13

我並不特別接近。這是一個關於如何以特定方式編程系統的問題;因此,它是關於shell編程的,並且在SO的範圍內,這是關於編程的問題。很顯然,有些人認爲這不是主題,應該降低投票率;問題和答案都有相當數量的反對票。 –

回答

97

呼叫visudo和補充一點:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh 

命令路徑必須是絕對!然後從user1 shell調用sudo -u user2 /home/user2/bin/test.sh。完成。

+2

在Ubuntu的幫助下有一個[sudoers的很好的描述](https://help.ubuntu.com/community/Sudoers)格式。 sudoers的手冊頁是醜陋的:( – Mifeet

165

試運行:

su -c "Your command right here" -s /bin/sh username 

這將運行給你有權須藤爲用戶命令的用戶名。

+10

它像普通用戶一樣完全sudo權限是這樣的:'sudo su -c「你的命令就在這裏」-s/bin/sh otheruser「 – rubo77

+5

只需要注意任何mac用戶,顯然語法有點不同:'su username -c「命令」'。 – NHDaly

+1

如果你試圖以另一個用戶的身份啓動screen,那麼這可能是有用的 - http://www.linuxquestions.org/questions/linux-software -2/running-screen-command-for-different-users-at-startup-401990 /#post2041890 – Mint

相關問題