Outils pour utilisateurs

Outils du site


new_club_account

Compte CLUB

Il existe deux commandes par défaut pour créer des comptes unix : adduser et useradd. En plus de créer l'utilisateur, adduser demande d'autres informations (password) et créé le répertoire home s'il n'existe pas. Useradd se contente de créer l'utilisateur dans /etc/passwd et s'arrête là.

Comme il existe deux commandes pour créer un utilisateur qui ont un comportement différent, et que nous avons besoin de pouvoir créer à la fois des comptes de club et des comptes admin nous allons dédier chacune à un cas précis.

Compte club avec adduser

Compte unix

Adduser se configure dans /etc/adduser.conf. En lisant ce fichier, on note trois directives :

DSHELL=/dev/null

Parce qu'on ne veut pas que les clubs se connectent en ssh au serveur, mais seulement en ftp.

DHOME=/home/apps

Les répertoires home ne seront donc pas créés dans /home mais dans /home/apps.

SKEL=/etc/skel

C'est une directive par défaut, qui indique que les home sont remplis avec le contenu du répertoire /etc/skel. Par défaut ce répertoire contient des fichiers pour bash (.bash_history, .bash_login et .bash_logout). Mais comme nos comptes sont orientés web on a pris soin de le remplacer par autre chose.

$ tree /etc/skel
/etc/skel
├── doc
├── logs
│   ├── access.log
│   └── error.log
└── www
    └── index.php

Tout ça pour dire que la commande

adduser club

fait une bonne partie du boulot.

apache

Pour lier ce compte au serveur web il faut créer un vhost du type :

<VirtualHost *:80>
        ServerName club.imt-lille.club
        ServerAlias alias.imt-lille.club

        ServerAdmin telnetz@googlegroups.com
        DocumentRoot "/home/apps/club/www"

        <Directory "/home/apps/club/www">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                Require all granted
        </Directory>

         <FilesMatch \.php$>
                 SetHandler "proxy:unix:/opt/php56/var/run/club.sock|fcgi://localhost"
         </FilesMatch>

        ErrorLog /home/apps/club/logs/error.log
        CustomLog /home/apps/club/logs/access.log combined
</VirtualHost>

Dans /etc/apache2/sites-available/club.conf puis lancer un :

# a2ensite club.conf
# /etc/init.d/apache2 reload

DNS

Le nom de domaine étant probablement nouveau, il faut rajouter l'entrée dans l'enregistrement DNS du nom de domaine imt-lille.club.

Pour plus de flexibilité on fera un enregistrement CNAME avec comme argument club qui pointe vers telnew. Le jour où on change l'IP de telnew, l'IP du sous domaine créé changera aussi.

PHP

Il n'est pas du tout recommandé de laisser un compte utiliser la version de php du système. S'il a besoin d'une lib à installer ou d'options particulières dans son php.ini, on ira faire les modifs pour lui et pas pour les autres.

Si on veut lui donner du php 5.6, on lui rajoute un fichier pool dans /opt/php56/etc/pool.d/club.conf :

[club]

user = club
group = club

chdir = /
security.limit_extensions = .php

listen = /opt/php56/var/run/club.sock
listen.owner = www-data
listen.group = www-data
;listen.mode = 0660

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Puis :

# /etc/init.d/php-56-fpm reload

À partir d'ici, on peut tester que ça fonctionne en tapant dans l'url club.imt-lille.club et en vérifiant la version de php sur le phpinfo() qui sert d'index par défaut.

:!: Ce phpinfo(), c'est pour info hein, après il faut absolument le virer

:!: S'il y a des fichiers à importer vers ce compte, il faut toujours penser à leur donner les bons droits :

# chown -R club:club ~club/www

Mysql

Il est fortement probablement qu'un compte club ait besoin d'une base, mais ce n'est pas systématique. Si besoin :

# Connection à MySQL
mysql -u root -p

# Ajout de l'utilisateur
CREATE USER 'club'@'localhost' IDENTIFIED BY '$password';

# Création de la BDD
CREATE DATABASE `club`

# Donne les permissions de la BDD à l'utilisateur
GRANT ALL PRIVILEGES ON `club`.* TO 'club'@'localhost';

# On se déconnecte de MySQL
\q

# On teste la connexion
sudo -u club -H mysql -u club -p -D club

Si après avoir entré le mot de passe vous voyez mysql> c'est que tout fonctionne.

Quelques notes :

  • Le nom de la base = nom de l'utilisateur mysql = nom du compte unix. C'est tellement plus clair quand il faut faire de la maintenance après plusieurs années.
  • @'localhost' et non pas @“%”, qui donnerait la possibilité de se connecter depuis n'importe quel serveur. Ou alors faut vraiment en avoir besoin.
new_club_account.txt · Dernière modification: 2017/12/06 12:51 par deldel