1. C’est quoi un SYSTEMD ?
Systemd est un gestionnaire de systèmes et de services pour les systèmes d'exploitation Linux. Il est
conçu pour être rétro-compatible avec les scripts SysV init, et fournit un certain nombre de
fonctionnalités, comme le lancement en parallèle des services système pendant l'initialisation,
l'activation des démons à la demande, la prise en charge des instantanés d'état du système, ou la
logique de contrôle de service basée sur dépendances. Sur Red Hat Enterprise Linux 7, systemd
remplace Upstart comme système init par défaut.
2. Quelle sont les Types d'unités systemd disponibles ?
Unité du service
Unité cible
Unité Automount
Unité du périphérique
Unité de montage
Unité de chemin
Unité scope
Unité de tranche
Unité d'instantané
Unité de socket
Unité swap
Unité minuteur
3. Comment Répertorier les services ?
Pour répertorier toutes les unités de service actuellement chargées, veuillez saisir ce qui
suit dans une invite de shell :
systemctl list-units --type service
4. comment Afficher le statut du service ?
Pour afficher des informations détaillées sur une unité de service qui correspond à un service
système, veuillez saisir ce qui suit dans une invite de shell :
systemctl status name.service
5. comment Lancer un service ?
Pour lancer une unité de service qui correspond à un service système, veuillez saisir ce qui suit
dans une invite de shell en tant qu'utilisateur root :
systemctl start name.service
Veuillez remplacer name par le nom de l'unité de service que vous souhaitez lancer (par
exemple, gdm). Cette commande lance l'unité de service sélectionnée dans la session actuelle.
Pour obtenir des informations sur la manière d'activer une unité de service pour qu'elle soit
lancée pendant l'initialisation,
6. Comment Arrêter un service ?
Pour arrêter une unité de service qui correspond à un service système, veuillez saisir ce qui suit dans
une invite de shell en tant qu'utilisateur root :
systemctl stop name.service
7. comment Redémarrer un service ?
Pour redémarrer une unité de service qui correspond à un service système, veuillez saisir ce qui suit
dans une invite de shell en tant qu'utilisateur root :
systemctl restart name.service
8. comment Désactiver un service ?
Pour empêcher une unité de service qui correspond à un service système d'être automatiquement
lancée pendant l'initialisation, veuillez saisir ce qui suit dans une invite de shell en tant qu'utilisateur
root :
systemctl disable name.service
9. comment Redémarrer le système ?
Pour redémarrer le système, exécutez la commande suivante en tant qu'utilisateur root :
systemctl reboot
10. comment Suspendre le système ?
Pour suspendre le système, veuillez saisir ce qui suit dans une invite de shell en tant
qu'utilisateur root :
systemctl suspend
11. comment Hiberner le système
Pour hiberner le système, veuillez saisir ce qui suit dans une invite de shell en tant
qu'utilisateur root :
systemctl hibernate
12. c’est quoi Syslog ?
syslog est un daemon dédié à l'enregistrement des journaux (log) Les journaux log sont stockés
dans le répertoire /var/log/
Voici le contenu du repertoire /var/log
C’est quoi Le programme logrotate ?
logrotate est un fichier texte situé dans etc/, il sert à configurer 'la politique des rotations' des logs.
Effectivement, il faut supprimer les anciens fichiers log, sinon on risque une saturation du disque. Pour
cela on peut programmer des rotations de logs qui se traduisent par l'archivage des fichiers log assez
récents et la suppression des anciens, et ceci avec une périodicité bien définie.
La page man de logrotate donne toute la syntaxe et les mots clé.
Les lignes importantes à configurer du fichier /etc/logrotate.conf:
13. A quoi sert la commande top ?
Elle nous permet d’afficher des informations en continu sur l’activité du système. Elle permet surtout
de suivre les ressources que les processus utilisent (quantité de RAM, pourcentage de CPU, la durée
de ce processus depuis son démarrage).
14. Comment peut-on supprimer un processus ?
Avec la commande : kill [-numéro de signal] PID
Où PID est le numéro du processus
-numéro de signal c’est un nombre allant de 1 à 30 qui est une valeur système précis, 2 : SIGINT ; 9 =
SIGKILL ; 15 = SIGTERM(valeur par défaut 15).
Un utilisateur ne peut arrêter que les processus dont il est propriétaire c'est à dire qu'il a lancé.
Seul l'administrateur a le droit d'arrêter un processus ne lui appartenant pas.
15. C’est quoi Swatch :
L'utilitaire swatch peut surveiller un fichier de log et réaliser une action s'il voit passer un mot-clé.
Exemple de fichier de configuration /root/.swatchrc :
16. Pourquoi crée Le Serveur de log et comment ?
On peut être amené à créer un serveur de log si on possède plusieurs serveurs dont on souhaite
centraliser les log, par mesure de sécurité ou par commodité (facilité de consultation,
d'archivage, etc...)
Si on monte un serveur de log, il suffit d'ajouter :
côté serveurs envoyant les messages de log :----> une ligne dans le fichier syslog.conf de
chaque serveur en mentionnant les processus envoyant les messages (exemple : *.* pour
tous) et le nom du serveur de log ou son adresse IP précédée de @, comme ainsi :
*.* @log_server ou
*.* @192.168.30.221 ou
mail.inf @log_server (stocke les log d'envoi de mail)
côté serveur de log :----> l'option SYSLOGD ="-r" dans le fichier /etc/default/syslogd
17. a quoi sert La commande logger
La commande logger permet d'envoyer un message à syslog même connecté en utilisateur
$ logger -p auth.info -t unnom "mon message à envoyer"
-t permet d'ajouter unnom, un tag c'est un mot quelqconque pour signer le message
18. C’est quoi Le programme logrotate ?
logrotate est un fichier texte situé dans etc/, il sert à configurer 'la politique des rotations' des logs.
Effectivement, il faut supprimer les anciens fichiers log, sinon on risque une saturation du disque. Pour
cela on peut programmer des rotations de logs qui se traduisent par l'archivage des fichiers log assez
récents et la suppression des anciens, et ceci avec une périodicité bien définie.
La page man de logrotate donne toute la syntaxe et les mots clé.
19. Quelle sont Les lignes importantes à configurer du
fichier /etc/logrotate.conf:
monthly : tourner les logs tous les mois (enlever le weekly existant dans le fichier de configuration
par défaut Debian)
rotate n : conserver n fichiers (ici un fichier par mois [mettre 60, soit 5 ans])
create : créer un nouveau fichier de log
compress : compresser le fichier tourné
Pour tester vos fichiers de configuration logrotate.conf (et donc de logrotate.d/*)
taper : /usr/sbin/logrotate -dv /etc/logrotate.conf.
20. Qu'est-ce que le chiffrement de périphérique bloc ?
Le chiffrement des périphériques blocs protège les données sur un périphérique bloc en le
cryptant. Pour accéder au contenu décrypté du périphérique, l'utilisateur doit fournir une phrase de
passe ou une clé pour s'authentifier. Ceci offre une sécurité supplémentaire au-delà des mécanismes
de sécurité des systèmes d'exploitation existants, car le contenu du périphérique est protégé même
si celui-ci a été physiquement supprimé du système.
21. C’est quoi Périphériques bloc à chiffrement utilisant
dm-crypt/LUKS ?
LUKS (Linux Unified Key Setup) est une spécification pour le chiffrement de périphérique bloc.
LUKS établit un format sur disque pour les données, ainsi qu'une politique de gestion de phrase de
passe et/ou de clé.
LUKS utilise le sous-système de mappage de périphérique du noyau via le module dm-crypt. Cet
arrangement offre un mappage de bas niveau qui gère le cryptage et le décryptage des données du
périphérique. Les opérations au niveau de l'utilisateur, telles que la création et l'accès aux
périphériques chiffrés, sont réalisées à l'aide de l'utilitaire cryptsetup.
22. Que fais LUKS ?
Ce que LUKS fait :
LUKS chiffre des périphériques blocs entiers
LUKS est ainsi bien conçu pour la protection du contenu de périphériques
mobiles tels que :
o Médias de stockage amovibles
o Disques durs d'ordinateurs portables
Le contenu sous-jacent du périphérique bloc est arbitraire.
Ceci rend le chiffrement des périphériques swap utile.
Ceci peut aussi être utile avec certaines bases de données qui utilisent des
périphériques blocs spécialement formattés pour le stockage de données.
LUKS utilise le sous-système de mappage de périphérique du noyau existant.
Il s'agit du même sous-système que celui utilisé par LVM, il a donc été bien
testé.
LUKS permet le renforcement de la phrase de passe.
Ceci protège des attaques par dictionnaire.
Les périphériques LUKS contiennent de multiples emplacements de clés.
Ceci permet aux utilisateurs d'ajouter des sauvegardes de clés/mots de
passe.
23. qu’es ce que LUKS ne fait pas
Ce que LUKS ne fait pas :
LUKS n'est pas adapté pour les applications ayant besoin de plusieurs utilisateurs
(plus de huit) avec différentes clés d'accès pour le même périphérique.
LUKS n'est pas adapté pour les applications nécessitant un chiffrement au niveau du
0fichier.
24. Comment puis-je accéder aux périphériques chiffrés après
l'installation ? (System Startup)
Lors du démarrage système, une invite demandant la phrase de passe s'affichera. Après avoir
entré la phrase de passe correcte, le système continuera à démarrer normalement. Si vous utilisez
différentes phrases de passe pour de multiples périphériques chiffrés, vous devrez entrer plus d'une
25. Quels types de périphériques blocs peuvent être chiffrés ?
La plupart des périphériques blocs peuvent être chiffrés avec LUKS. À partir d'anaconda, vous
pouvez chiffrer des partitions, des volumes physiques LVM, des volumes logiques LVM, et des
contrôleurs RAID de logiciels.
26. Comment Créer et enregistrer les phrases de passe
Si vous utilisez un fichier kickstart pendant l'installation, anaconda peut ajouter une phrase de
passe générée de manière aléatoire à chaque périphérique bloc sur le système et enregistrer chaque
phrase de passe sur un fichier chiffré sur le système de fichiers local. Spécifiez l'URL de ce certificat
avec le paramètre --escrowcert, , backuppassphrasepour chaque commande kickstart liée aux
périphérique pour lesquels vous souhaitez créer des copies de sauvegarde des phrases de passe.
Remarquez que cette fonctionnalité est uniquement disponible lors d'une installation kickstart.
27. Comment Créer les périphériques blocs
Créez les périphériques blocs que vous souhaitez chiffrer en utilisant parted , pvcreate ,
lvcreate et mdadm.
28. Quels types de périphériques blocs peuvent être chiffrés ?
La plupart des périphériques blocs peuvent être chiffrés avec LUKS. À partir d'anaconda, vous
pouvez chiffrer des partitions, des volumes physiques LVM, des volumes logiques LVM, et des
contrôleurs RAID de logiciels.
29. Que veut dire LVM ?
Les partitions LVM (de l'anglais « Logical Volume Management ») offrent un certain nombre
d'avantages par rapport aux partitions standard. Les partitions LVM sont formatées en tant
que volumes physiques. Un ou plusieurs volumes physiques sont combinés afin de former
un groupe de volumes. La capacité totale de stockage de chaque groupe de volumes est ensuite
divisée en un ou plusieurs volumes logiques. Les volumes logiques fonctionnent de manière
similaire à des partitions standard. Ils possèdent un type de système de fichiers, comme ext4, ainsi
qu'un point de montage.
30. C’est quoi un Chargeur de démarrage GRUB
Lorsqu'un ordinateur exécutant Linux est allumé, le système d'exploitation est chargé en
mémoire par un programme spécifique nommé un chargeur de démarrage (ou chargeur
d'amorçage). Un chargeur de démarrage existe en général sur le disque dur primaire (ou autre
périphérique média) d'un système, son unique responsabilité est de charger le noyau Linux avec ses
fichiers requis ou (dans certains cas) avec d'autres systèmes d'exploitation en mémoire.
31. C’est quoi Le principe du RAID ?
Le principe du RAID repose sur l'idée de combiner plusieurs disques durs bon marché
(indifféremment IDE ou SCSI) dans le but de :
Etendre la capacité de stockage en ligne possible ;
Introduire une notion de redondance (pour autoriser une plus grande sécurisation des
données) ;
Améliorer les performances.
En effet, la capacité des disques actuels, même si elle s'est singulièrement améliorée ces dernières
années (on trouve couramment du 18 ou du 36 Gigas de nos jours), reste tout de même peu de
chose lorsque l'on souhaite parler en Téra et non plus en Giga.
Même sans aller jusqu'à vouloir stocker de grandes quantités de données (soyons raisonnable, 9 Giga
devrait suffire pour un petit serveur web ...), on peut vouloir utiliser la notion de redondance du Raid
afin d'améliorer la tolérance aux pannes de son architecture : les données seront dupliquées sur des
disques différents afin de pouvoir palier à la perte d'un disque.
Si la résistance aux pannes de l'architecture n'est pas une contrainte majeure (on peut envisager de
sauvegarder sur bande tous les soirs son serveur de fichiers), on peut utiliser le Raid pour étendre
simplement la capacité de stockage possible, et ce de manière transparente pour le système : 4
disques de 4,3Go donnant une partition utile de ~16Go.
32. Quelle sont les Niveaux de RAID disponibles sous Linux ?
a) Mode Linéaire
Cette solution est pertinente lorsque l'on souhaite étendre la capacité de stockage disponible en
ligne sans introduire une notion de tolérance aux pannes. Cette solution combine les capacités de
stockage d'un ensemble de disques existants (les données sont d'abord écrites sur le premier disque,
puis lorsqu'il est plein sur le second, etc...) et permet d'utiliser 100% de l'espace disque utile.
b) RAID 0
Cette méthode (striping) est souvent utilisée lorsque la haute disponibilité des données n'est pas
nécessaire (on doit disposer d'au moins 2 disques). Elle permet d'obtenir une amélioration des
performances I/O (lecture et écriture) tout en restant très proche du mode linéaire. Elle permet en
effet d'améliorer l'algorithme en dispatchant les données sur l'ensemble des disques (les données
sont découpées puis dispersées sur les disques sans redondance).
c) RAID 1
Ce mode (mirroring) implémente une stricte duplication des données sur tous les disques présents
dans le miroir (on doit disposer d'au moins 2 disques). L'information étant enregistrée N fois sur les
disques (permet de gagner du temps en lecture même si on en perds lors de l'écriture), si on perds N-
1 disques on ne perds pas les données. Il est à noter que l'on perds tout de même 50% de l'espace
disque utile.
d) RAID 0+1
Comme son nom l'indique, cette solution combine le RAID 0 et le RAID 1. Elle permet d'améliorer les
performances I/O (Input/Output) en lecture tout en permettant une bonne disponibilité des données
grâce à leur duplication sur l'ensemble des disques. Mais tout comme le mode miroir, on perd 50%
de l'espace disque potentiellement disponible.
e) RAID 4
L'algorithme utilisé ici (striping) permet de dispatcher les I/O sur l'ensemble des disques (au moins 3)
tout en réservant un disque pour sauvegarder une donnée supplémentaire de parité. De fait, si on
perds un disque, on peut reconstituer l'information manquante. Cependant, l'utilisation d'un disque
de parité ajoute un goulot d'étranglement au système (toute écriture va provoquer un accès au
disque de parité), pour cela il est préférable d'utiliser à la place le Raid5.
f) RAID 5
Le RAID 5 est sensiblement identique au RAID 4 mais améliore le procédé en stripant l'information de
parité sur l'ensemble des disques.
33. Quel son les avantage et les inconvénient du Mode Linéaire
Avantages :
- Permet de disposer de 100% de l'espace disque dans une partition ;
- Moins de temps CPU mobilisé par le RAID dans le noyau.
Inconvénients :
- Pas de haute disponibilité : la perte d'un disque entraine la perte des données ;
- Quasiment pas d'amélioration des performances (on peut cependant obtenir une
amélioration si des I/O se produisent de manières concurrentes sur des disques différents).
34. Quel son les avantage et les inconvénients du RAID 0
Avantages :
- Permet de disposer de 100% de l'espace disque dans une partition ;
- Amélioration des performances I/O en lecture et écriture.
Inconvénients :
- Pas de haute disponibilité : la perte d'un disque entraîne la perte des données.
35. Quel son les avantage et les inconvénients du RAID 1
• Avantages :
- Haute disponibilité des données : survit à la perte de N-1 disques ;
- Amélioration des performances en lecture.
• Inconvénients :
- Dégradation des performances en écriture ;
- Mobilise un peu plus de temps CPU dans le noyau ;
- Perte de 50% de l'espace disque.
36. Quel son les avantage et les inconvénients du RAID 0+1
Avantages :
- Haute disponibilité des données : survit à la perte d'un côté du miroir ;
- Amélioration des performances en lecture et écriture.
Inconvénients :
- Mobilise un peu plus de temps CPU dans le noyau ;
- Perte de 50% de l'espace disque.
37. Quel son les avantage et les inconvénients du RAID 4
Avantages :
- Haute disponibilité des données : survit à la perte d'un disque ;
- Amélioration des performances en lecture.
Inconvénients :
- On perds l'équivalent d'un disque pour le stockage des données ;
- On risque de plafonner le débit en écriture rapidement.
38. Quel son les avantage et les inconvénients du RAID 5
Avantages :
- Haute disponibilité des données : survit à la perte d'un disque ;
- Amélioration des performances en lecture et écriture.
Inconvénients :
- On perd l'équivalent d'un disque pour le stockage des données.
39. C’est quoi le Disques de rechange (ou spare) ?
Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de rechange. Un disque qui va venir
remplacer automatiquement un disque en faute. Linux autorise l'ajout on-line de disques de
rechange (vous devez cependant les rajouter manuellement dans le fichier de configuration
/etc/raidtab pour le cas d'un reboot)
40. Qu'est-ce que Docker?
Vous pouvez penser Docker comme étant un gestionnaire de conteneurs pour les systèmes
d'exploitation basés sur UNIX. Donc, fondamentalement, il vous permet de créer de nombreux
environnements isolés sur un seul noyau comme le montre le schéma ci-dessous comparé au mode
de vitalisation classique
41. Comment Exporter ou sauvegarder une VM KVM ?
En dehors des containers LXC que j'utilise souvent pour isoler mes environnements de test, j'utilise
aussi des "vraies" machines virtuelles avec KVM, notamment lorsque j'ai besoin d'une VM windows ou
d'un autre Linux ; par exemple CentOS 6.x alors que j'ai une Ubuntu 14.04 LTS sur mon poste.
Pour le stockage des données KVM, j'utilise des volumes logiques avec LVM.
Pour exporter ou sauvegarder une VM, il faut donc récupérer la définition de la VM, ainsi que les
données.
Sauvegarde manuelle
Fichier de définition
Le fichier de définition se trouve dans /etc/libvirt/qemu/. Il est au format xml, avec le nom de la
machine. Par exemple :
/etc/libvirt/qemu/Ubuntu-LXD.xml décrit la configuration de la machine Ubuntu-LXD.
On peut également exporter avec la commande virsh dumpxml NOM_DE_LA_VM. Exemple :
virsh dumpxml Ubuntu-LXD > /mnt/backup/Ubuntu-LXC.xml
Données
Dans le fichier de définition, on trouve le paramétrage des disques. La source peut être de
type dev (volume logique) ou file (fichier):
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/vmvg/Ubuntu-LXD'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
</disk>
Pour un fichier :
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/CentOS6.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
</disk>
Pour sauvegarder ces données, on peut donc utiliser la commande dd :
dd if=/dev/vmvg/Ubuntu-LXD of=/mnt/backup/Ubuntu-LXD.img bs=512k #
cas d'un dev
dd if=/var/lib/libvirt/images/CentOS6.img of=/mnt/backup/CentOS6.img
bs=512k # cas d'un file
Via un script
Pour me simplifier la vie, j'ai développé un script qui fait toutes ces étapes, et vérifie également
l'espace disque disponible.
#!/bin/bash
#
# Liste des domaines
#
#-----------------------------------------------------------------
if [ "$(id -u)" != "0" ]; then
echo "Merci de lancer ce script en tant que root"
exit 1
fi
#
# Repertoire par defaut
#
BACKUPDIR=/media/vl/backup/KVM
# Liste des machines virtuelles (domain KVM)
virsh list --all
echo -n "Machine / domaine : "
read DOM
if [ -z $DOM ] ; then
echo "Pas de machine saisie..."
exit
fi
echo -n "Backup directory : [$BACKUPDIR] "
read BACKDIR
if [ -z $BACKDIR ] ; then
BACKDIR=$BACKUPDIR
fi
if [ ! -d $BACKDIR ] ; then
echo "Repertoire $BACKDIR inexistant ! "
exit 1
fi
# Export de la configuration
virsh dumpxml $DOM > ${BACKDIR}/$DOM.xml
if [ "$?" != "à" ] ; then
echo "Erreur dans l'export XML"
exit 1
fi
# Recherche des partitions ou fichiers de la VM
IMGFILE=$(grep 'source dev' ${BACKDIR}/${DOM}.xml | cut -d "'" -f2)
# premier test avec source dev
if [ "$IMGFILE" = "" ] ; then
echo "Test avec source file"
IMGFILE=$(grep 'source file' ${BACKDIR}/${DOM}.xml | cut -d "'" -
f2)
if [ "$IMGFILE" = "" ] ; then
echo "Impossible de trouver l'image de la VM"
exit
fi
fi
for rawfile in $IMGFILE ; do
echo
echo -n "Espace occupé par $rawfile : "
VMSIZE=$(virsh vol-info $rawfile|grep Allocation|cut -c '15-25'|
cut -d ',' -f1 )
echo $VMSIZE
echo
DFSIZE=$(df -h $BACKDIR --output=avail |tail -1|cut -d ',' -f1)
echo "Espace dispo sur $BACKDIR : $DFSIZE "
if [ $VMSIZE -gt $DFSIZE ] ; then
echo "Il n'y a pas assez de place disponible sur le répertoire
cible $BACKDIR"
exit
fi
echo -n "Sauvegarde de $rawfile ? "
read rep
if [ "$rep" = "o" ] ; then
filename=$(basename $rawfile)
echo dd if=${rawfile} of=${BACKDIR}/${DOM}-${filename}.img
bs=512K
dd if=${rawfile} of=${BACKDIR}/${DOM}-${filename}.img bs=512K
fi
done
Comment ce fais la Mise en place d'un serveur FTP cloisonné ?
Comme le dit Wikipedia, chroot (change root) est une commande des systèmes d'exploitation UNIX
permettant de changer le répertoire racine d'un processus de la machine hôte. Ceci est un bon
moyen de cloisonner les utilisateurs sur une machine, en les isolant, sans leur permettre d'avoir
accès à toute l'arborescence. C'est généralement ce qui est utilisé, par exemple, sur les
hébergements mutualisés pour les accès ftp.
Un exemple sans le chroot. L'utilisateur a accès à toute l'arborescence, depuis / :
pure-ftp-sans-chroot.png
Un exemple avec des comptes chrootés. L'utilisateur n'a accès qu'à son répertoire.
pure-ftp-avec-chroot.png
Nous allons voir dans cet article comment mettre cela en place, avec 2 serveurs ftp différents :
vsftpd
pure-ftpd
Le principe est le suivant :
on va créer pour chaque connexion un utilisateur, qui n'aura pas accès au shell
on met en place un serveur FTP
on paramètre ce serveur FTP pour chrooter toutes les connexions
Création d'utilisateur
Pour simplifier les opérations, on va définir le dossier personnel comme étant le dossier utilisé
comme DocumentRoot du serveur http.
Ceci permet également de distinguer facilement les "vrais" utilisateurs des utilisateurs ftp.
Par exemple, pour un utilisateur lambda :
sudo useradd -d /var/www/users/lambda -s /usr/sbin/nologin lambda
sudo passwd lambda
A ce stade, on peut vérifier que la connexion par ssh avec l'utilisateur ne fonctionne pas :
ssh [email protected]
[email protected]'s password:
Linux debian7-w2_6akt4 3.13.0-44-generic #73-Ubuntu SMP Tue Dec 16
00:22:43 UTC 2014 x86_64
The programs included with the Debian GNU/Linux system are free
software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
This account is currently not available.
Connection to 10.0.3.87 closed.
L'utilisateur existe, son mot de passe est valide, mais son compte n'est pas valable.
Il faut maintenant lui donner accès par FTP.
On n'oublie pas non plus de modifier le fichier /etc/shells:
echo '/usr/sbin/nologin' >> /etc/shells
Cette ligne est nécessaire car, comme l'indique la FAQ : le shell assigné à l'utilisateur doit être listé
dans le fichier /etc/shells.
Si le shell n'est pas déclaré dans ce fichier, la connexion ne fonctionne pas, et on a un message 530
Login authentication failed :
Name (10.0.3.87:me): lambda
331 User lambda OK. Password required
Password:
530 Login authentication failed
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.
Avec vsftpd
Installation
apt-get install vsftpd
Paramétrage
Le paramétrage se fait dans le fichier /etc/vsftpd.conf. On va modifier 4 lignes :
# pas d'accès anonyme
anonymous_enable=NO
# autorise les comptes locaux (dans /etc/passwd)
local_enable=YES
# autorise l'écriture dans les répertoires
write_enable=YES
# cloisonne les utilisateurs
chroot_local_user=YES
Puis on redémarre le service :
/etc/init.d/vsftpd restart
Stopping FTP server: vsftpd.
Starting FTP server: vsftpd
Spécificité de vsftpd concernant le répertoire utilisateur
Avec vsftpd, il est nécessaire que le répertoire de l'utilisateur existe, mais que ce dernier soit en
lecture seule. Du coup, l'utilisateur ne pourra pas charger de fichier à la racine. Il faut donc alors
créer un sous-répertoire dans lequel il aura les droits. Par exemple :
tree users
users : dr-xr-xr-x root root
└── lambda : dr-xr-xr-x lambda:lambda
└── web : drwxr-xr-x lambda lambda
On verra plus loin qu'avec pure-ftpd, il existe une option permettant de créer le répertoire à la
première connexion de l'utilisateur.
Avec pure-ftpd
Installation
L'installation est également très simple.
apt-get install pure-ftpd
Paramétrage
Par défaut, l'accès via un compte Unix n'est pas autorisé :
# cat /etc/pure-ftpd/conf/UnixAuthentication
no
Le paramétrage se fait dans plusieurs fichiers, présents dans le répertoire /etc/pure-ftpd/conf
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
echo "yes" > /etc/pure-ftpd/conf/UnixAuthentication
echo "no" > /etc/pure-ftpd/conf/PAMAuthentication
Les commandes permettent de chrooter tous les utilisateurs, créer le Home Dir s'il n'existe pas,
autoriser l'authentification Unix (via le fichier /etc/passwd) et ne pas autoriser l'authentification PAM.
Puis on redémarre le service :
/etc/init.d/pure-ftpd restart
A ce stade, les utilisateurs sont restreints à leur répertoire. Ils ne peuvent pas aller voir ce qui se
passe ailleurs...
Conclusion
Personnellement, je trouve que pure-ftpd est plus simple à mettre en oeuvre, tout en offrant plus de
fonctionnalités : comptes virtuels, quota, etc.
Pure-ftpd vient avec plusieurs programmes annexes, dont pure-pw qui permet de gérer les comptes
virtuels.
Par exemple, pour créer un compte virtuel :
# mkdir /var/www/users/virtuser
# chown ftpuser:ftpgroup /var/www/users/virtuser
# pure-pw useradd virtuser -u ftpuser -g ftpgroup -d
/var/www/users/virtuser
Password:
Enter it again:
# cd /etc/pure-ftpd
# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50puredb
# service pure-ftpd restart
Note : on peut mélanger des comptes virtuels et des comptes Linux, si on
laisse UnixAuthentication = yes.
Le wiki Fedora est assez détaillé sur le paramétrage de pure-
ftpd : http://doc.fedora-fr.org/wiki/PureFTPD_:_Installation_et_configuration