用PHP新增 Linux 上使用者帳號

用PHP新增 Linux 上使用者帳號

文章hardman » 週二 8月 14日, 2007年 6:06 pm

因為 RedHat Apache Server 一般都是以 apache 這個 USER ID 執行,所以 PHP 執行時的身份也是 apache;但是管理使用者帳號的權利是 root,所以在 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 內容如下:


#!/bin/sh


/usr/bin/sudo /usr/sbin/useradd -d /home/$1 -p $2 $1




存檔後,不要忘記將之改為可執行檔


#chmod 755 /sbin/createuser.sh




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




切換目錄到 Apache 的 DocumentRoot


#cd /var/www/html




建立一個 mkuser.php 內容是:


<?


$USERNAME = "abc" ; // 使用者名稱


$USERPASS = crypt( "1234" ) ; // 以 crypt 將密碼 "1234" 編碼


exec( "/sbin/createuser.sh $USERNAME $USERPASS" ) ;


?>



然後用瀏覽器開啟 http://您的網址/mkuser.php




回到系統 #ls -l /home




有沒有看到多出一個叫做 testuser 的使用者了吧 ^^ 原作者:PHP5網管實驗室-螢火飛
hardman
 
文章: 6
註冊時間: 週五 4月 28日, 2006年 11:17 am
送出感謝: 0 次
擁有感謝: 0 次

文章門神 » 週三 8月 15日, 2007年 1:07 pm

蔡老大

你應該多貼一點

你學了不少ㄟ !!

貢獻一下吧 !!

Thank you !!
ps:急件請直接電洽
技術問題請優先洽詢 help@ublink.org

如果我們的回答您真的看不懂
請將設備的問題和IP
以及管理者的ID/Password
Mail到help@ublink.org
電話溝通讓工程師直接登入IP查看

如有其它問題,歡迎與我聯繫,謝謝您。
04-2260-5121(LineID:0932976167)
門神JanusLin
skype:janus-lin
FB:https://www.facebook.com/ublinknetwork
圖檔
頭像
門神
 
文章: 5911
註冊時間: 週五 12月 8日, 2006年 11:10 am
來自: 台中
送出感謝: 16
擁有感謝: 0 次


回到 Linux 作業系統

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客