2016-04-03 60 views
1

我在Ubuntu上使用Apache 2.4。我用C語言編寫了一個模塊,並使用Apache Extension工具(apxs)將其集成到Apache服務器中。我的代碼中有一部分使用exec函數調用可執行文件,但我想以超級用戶的身份調用該可執行文件。所以我想以超級用戶權限運行我的模塊,但默認情況下,Apache以www數據用戶的身份運行並要求輸入www數據的密碼。如何以超級用戶權限運行Apache模塊?

是否有任何方式使用超級用戶權限運行此模塊?

否則是否有任何其他方式來在Apache模塊中運行C命令的root命令?

是否可以使用suExec模塊?

+1

爲什麼不簡單地將root作爲被調用的可執行文件的所有者,並對可執行文件執行chmod u + s?但是,從任何人都可以訪問的Web服務器調用時,要小心地以root身份運行二進制文件! –

回答

0

不,不可能在Apache服務器本身不同的用戶下運行Apache模塊。但是有幾種策略可以解決這個限制。

1)您可以設置「setuid bit」你想從Apache的運行可執行文件,像這樣:

chown root:root executable 
chmod 06755 executable 

然後,當你運行這個可執行文件(比如,與fork + execsystem )來自Apache模塊,則可執行文件將以根用戶權限從root用戶下運行。

2)您可以配置/etc/sudoers文件,該方式允許www-data在sudo命令的幫助下使用root權限運行有問題的可執行文件。

3)您可以擁有一個單獨的進程,以root權限運行並從任何類型的IPC/RPC接收來自Apache模塊的命令。

請注意,您應該避免使用root權限,因爲在root下運行您的代碼可能會帶來安全風險。當然,除非你確定你的代碼不會有任何bug。

+0

我申請第二個選項,它現在工作正常 –

相關問題