在網上看到一些通過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->
errstrn";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 "$saltt$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 );