php 取得 root 身份執行程式

有一個指令 sudo 可以讓一般使用者以 root 身份執行某些指令,這些權限全部紀錄在 /etc/sudoers 中,如何設定不是我的重點,請自行 man sudoers 便知。

首先,查一下是否安裝了 sudo 這個套件

#rpm -qa | grep sudo

如果沒有的話,在光碟的 RPMS 目錄下有,勞駕自行安裝。

接著修改 /etc/sudoers 這個檔,但不要用 #vi 直接修改它,因為安全的理由,它被設成唯讀(readonly),請用 #visudo 去修改,增加一行在檔案最後面:

apache ALL=NOPASSWD:/usr/sbin/useradd

然後存檔,這一行的意思是當使用者 apache 執行 /usr/sbin/useradd 這個指令時,是以 root 身份執行的,而且不需要密碼。

接著再建立一個 Shell Script 我將它命名為 /sbin/createuser.sh
這個 Shell Script 內容如下: [shell]
#!/bin/sh
/usr/bin/sudo /usr/sbin/useradd -d /home/ -p[/shell]
存檔後,不要忘記將之改為可執行檔

#chmod 755 /sbin/createuser.sh

好了,這樣我們就可以在 PHP 中,利用 exec() 這個函數執行外部指令,來建立使用者帳號了。以下純粹是範例喔!可別真的照著做 ^_^

切換目錄到 Apache 的 DocumentRoot[shell]

#cd /var/www/html[/shell]

建立一個 mkuser.php 內容是:[php]
<?
$USERNAME = "abc" ; // 使用者名稱
$USERPASS = crypt( "1234" ) ; // 以 crypt 將密碼 "1234" 編碼
exec( "/sbin/createuser.sh $USERNAME $USERPASS" ) ;
?> [/php]
然後用瀏覽器開啟 http://您的網址/mkuser.php

回到系統 #ls -l /home
有沒有看到多出一個叫做 testuser 的使用者了吧 ^^

Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in PHP服务器脚本 and tagged , , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注