[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 安全技術 > 程序 > 正文
如何通過web安全添加系統用戶
http://www.linuxforum.net zy.wang (2001-04-21 18:14:06)
在網上看到一些通過php直接添加系統用戶的解決方法,這些方法都在腳本中保存系統超級用戶密碼,因此有
很大的安全性問題。這裡提供的方法是通過php在前台添加用戶、密碼記錄到mysql數據庫中,台通過cron
隔時(時間可以自己設定)執行添加用戶的程序。程序中都沒有記錄系統超級用戶密碼,這樣能保証系統的安
全。如下為添加用戶的台程序,這個程序只是為很粗糙的演示程序,功能為把addornot=0 的用戶加入系統中
而已,僅供讀者參考。php添加用戶信息到數據庫的程序略去。程序在RedHat6.0 下通過。

adduserfromdb.pl

#!/usr/bin/perl
use DBI;
$dbuser = "xxxx";
$dbpasswd = "xxx";
$db = "xxxx";

$dbh = DBI->connect("DBI:mysql:$db",$dbuser,$dbpasswd);
$query = "select user,passwd from usertable where addornot=0";
$sth = $dbh->prepare($query);
$rv = $sth->execute or die "Can't execute the query:$sth->errstr\n";    
        while(@row = $sth->fetchrow_array) {
                #print "user=".$row[0]."\n";
                #print "password=".$row[1]."\n";
                @saltchars = (a .. z, A .. Z, 0 .. 9);
                srand(time||$$);
                $salt = $saltchars[rand($#saltchars)] . $saltchars[rand($#saltchars)];
                #print "$salt\t$row[1]\n";
                $encrypt_passwd = crypt($row[1],$salt);
                #print $encrypt_passwd."\n";
                $add_exec = "/usr/sbin/useradd -p ".$encrypt_passwd." ".$row[0];
                #對useradd增加參數,可以控制用戶的組別、目錄、登陸與否、shell等等
                #print $add_exec."\n";
                system($add_exec);              
}
#1; 


用戶信息表
usertable:

CREATE TABLE usertoadd (
   user tinytext NOT NULL,
   passwd tinytext NOT NULL,
   addornot tinyint(4) DEFAULT '0' NOT NULL
);

(錯誤和疑問請發信到zy.wang@263.net)
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★