ファイルを準備
- EXCELで下の内容のファイルを作成(ユーザデータ)
uxxx1:pxxx1::users::/home/uxxx1:/bin/bash uxxx2:pxxx2::users::/home/uxxx2:/bin/bash uxxx2:pxxx2::users::/home/uxxx2:/bin/bash
- シェルコマンド(main)
-
#!/bin/sh /usr/sbin/newusers $1 awk -F":" '{print $1":"$2 }' $1 |/usr/sbin/chpasswd ./skel2 $1 php newdb.php <$1
- シェルコマンド(skel2)
-
#!/bin/sh for rec in `cat $1` do IFS_OLD=IFS IFS=":" set -- $rec user=$1 group=$4 IFS=IFS_OLD echo $user (cd /etc/skel/;tar cf - .)|(cd /home/$user;tar xf -) chmod 755 /home/$user chown -R $user /home/$user chgrp -R $group /home/$user touch /home/$user done
- PHPスクリプト(newdb.php)
-
<?php $dsn = "mysql:host=127.0.0.1"; $user = 'root'; $pass = 'パスワード'; try { $dbh = new PDO($dsn,$user,$pass); } catch(PDOException $e) { echo 'Connection faild: '.$e->getMessage(); } $fp = fopen("php://stdin","r"); while($rec = fgets($fp)) { list($user,$pass) = explode(":",$rec); $sql = "CREATE USER {$user}@localhost IDENTIFIED BY '{$pass}'"; $dbh->query($sql); $sql = "GRANT USAGE ON * . * TO '{$user}'@'localhost' IDENTIFIED BY '{$pass}' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0"; $dbh->query($sql); $sql = "CREATE DATABASE IF NOT EXISTS `{$user}`" ; $dbh->query($sql); $sql = "GRANT ALL PRIVILEGES ON `{$user}` . * TO '{$user}'@'localhost'"; $dbh->query($sql); print "$user $pass\n"; } fclose($fp);
実行
./main ユーザデータ
skel2はテンプレート(/etc/skel)をコピーします。
newdb.phpはMySQLのデータベースを個々の利用者に1つ作成します。