{{tag>fr fr:archive fr:linux fr:base_de_données fr:serveur fr:authentification}} ====== Authentification sur une base SQL ====== :!: Article archivé, dernière mise à jour 2007. Certains service de [[bender]] nécessitent une authentification. Afin de la gérée, j'utilise une base SQL éditable en web. Cette base est utilisée pour : * La partie sécurisée (HTTPS) du site * L'accès au FTP Cela offre : * Une administration simple avec phpmyadmin * Un traitement des informations facile par requête SQL * Des performances correctes (pas de ralentissement) Nous considérons que [[serveur_web]] et [[mysql]] sont déjà installés. Cette configuration est utilisée pour [[bender]]. ===== Description de la structure des tables ===== Liste des tables : * users : liste des utilisateurs * groupes_apache : liste des groupes d'utilisateur pour apache * pending : liste des utilisateurs en attente de validation ^ users ^^ ^ Champ ^ Description ^ | login | login de l'utilisateur | | name | nom réel | | email | e-mail | | password | mot de passe chiffré | | uid | UID (pour le FTP) | | gid | GID (pour le FTP) | | homedir | répertoire racine (pour le FTP) | | shell | shell (pour le FTP) | | language | langage (pour le site web) | | creation_date | date de création | | last_logged | date de dernière connexion | | comments | commentaires | ^ groupes_apache ^^ ^ Champ ^ Description ^ | groupe | nom du groupe | | login | login de l'utilisateur | ^ pending ^^ ^ Champ ^ Description ^ | login | login de l'utilisateur | | name | nom réel de l'utilisateur | | email | e-mail | | language | langue | | date | date de la demande | ===== Création de la base ===== Voici le script SQL permettant de générer la structure de la base : -- phpMyAdmin SQL Dump -- version 2.9.0.2-Debian-1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Mardi 31 Juillet 2007 à 23:22 -- Version du serveur: 5.0.24 -- Version de PHP: 4.4.2-1.1 -- -- Base de données: `users` -- CREATE DATABASE `users` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `users`; -- -------------------------------------------------------- -- -- Structure de la table `groupes_apache` -- CREATE TABLE `groupes_apache` ( `groupe` varchar(30) NOT NULL default '', `login` varchar(20) NOT NULL default '', PRIMARY KEY (`groupe`,`login`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Liste des users par groupe'; -- -------------------------------------------------------- -- -- Structure de la table `pending` -- CREATE TABLE `pending` ( `login` varchar(20) NOT NULL default '', `name` varchar(50) default NULL, `email` varchar(50) default NULL, `language` char(3) NOT NULL default 'fr', `date` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`login`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `users` -- CREATE TABLE `users` ( `login` varchar(20) NOT NULL default '', `name` varchar(50) default NULL, `email` varchar(50) default NULL, `password` varchar(50) default NULL, `uid` int(11) NOT NULL default '500', `gid` int(11) NOT NULL default '500', `homedir` varchar(50) NOT NULL default '/ftp', `shell` varchar(50) NOT NULL default '/bin/false', `language` char(3) NOT NULL default 'fr', `creation_date` date default NULL, `last_logged` date default NULL, `comments` varchar(255) default NULL, PRIMARY KEY (`login`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; ===== Ajout des utilisateurs et groupes ===== Creer les utilisateurs nécessaires à l'utilisation de la base, par exemple : * un utilisateur apache qui peut lire la base : CREATE USER 'apache'@ 'localhost' IDENTIFIED BY '****************'; GRANT USAGE ON * . * TO 'apache'@ 'localhost' IDENTIFIED BY '****************' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT SELECT ON `users` . * TO 'apache'@'localhost'; * un utilisateur ftp qui peut lire la base : CREATE USER 'ftp'@ 'localhost' IDENTIFIED BY '****************'; GRANT USAGE ON * . * TO 'ftp'@ 'localhost' IDENTIFIED BY '****************' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT SELECT ON `users` . * TO 'ftp'@'localhost'; * un utilisateur admin qui peut éditer cette base : CREATE USER 'users_admin'@ 'localhost' IDENTIFIED BY '****************'; GRANT USAGE ON * . * TO 'users_admin'@ 'localhost' IDENTIFIED BY '****************' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT SELECT , INSERT , UPDATE , DELETE ON `users` . * TO 'users_admin'@'localhost'; ===== Configuration des clients ===== Pour la confirugation des clients, voir directement : * [[proftpd]] pour le SQL * [[serveur_web|apache]] pour le serveur web ===== Scripts supplémentaires ===== ==== Modification des mots de passe via une page php ==== ===== Backup ===== * pour la base de donnée voir [[mysql]] ===== Links ===== * [[bender]] * [[serveur_web]] * [[mysql]]