2009-12-14 49 views
1

我想到了suPHP,但那不是我所需要的。它不符合我的目的,以不同的用戶身份運行整個PHP腳本。我只需要以不同的用戶身份運行一個單獨的linux命令行。如何在PHP中以特定用戶身份運行外部命令

可能嗎?

+0

您是指phpsuexec? // http://httpd.apache.org/docs/2.0/suexec.html – miku 2009-12-14 00:54:15

+0

我知道suPHP和suEXEC,但我不知道phpsuexec是什麼。 – GetFree 2009-12-14 13:34:42

回答

0

你可以嘗試shell_exec功能和須藤

編輯:看到作爲sudo的提示輸入密碼,你可能想要使用proc_open,它允許您使用管道。有關如何創建自定義密碼管道的信息,請參閱this comment

+0

但sudo會要求輸入密碼,對吧? – GetFree 2009-12-14 01:10:49

+0

然後嘗試proc_open。查看我鏈接到的手冊頁上的第一個示例,瞭解如何使用管道。 – 2009-12-14 01:19:06

+1

你可以配置sudo不提示輸入密碼。 – 2009-12-14 02:05:20

1

我相信你應該嘗試另一種方法。 「setuid」。

http://en.wikipedia.org/wiki/Setuid

基本上你問運行,因爲它的主人,而不是程序的文件。

+0

在鏈接中說:「由於安全漏洞的可能性增加,許多操作系統在應用於可執行shell腳本時忽略setuid屬性。」 shell腳本是我需要運行的。 Linux有這個限制嗎? – GetFree 2009-12-14 01:14:11

+0

不是默認情況下,但腳本只有在其解釋器也是setuid時才允許運行setuid。 – ephemient 2009-12-14 01:32:06

+0

如果我編譯一個C程序,然後執行一個shell命令併爲該C程序設置setuid標誌,該怎麼辦?它會繞過這個限制嗎? – GetFree 2009-12-14 13:25:41

0

您可以使用該用戶的CRON執行該腳本。如果這是一個Web應用程序,那麼您僅限於具有有限權限的Apache/Nobody用戶。如果這隻需要在特定的時間運行,我會使用CRON。

另一種方法是Sticky Bits

相關問題