{{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]]