在網上看到一些通過 php 直接添加系統用戶的解決方法,這些方法都在腳本中保存系統超級用戶密?很大的 安全 性問題。這裡提供的方法是通過php在前台添加用戶、密碼記錄到 mysql 數據庫 中,後台通過cron 隔時(時間可以自己設定)執行添加用戶的程序。程序中
在網上看到一些通過
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
);