茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729938 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00353.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2008/3/17 8:47:14
用PHP新增 Linux 上使用者帳號
2001-11-07 23:48:48閱次:369
作者: 螢火飛


因為 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 的使用者了吧 ^^
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|