Table des matières
Administration serveur
Quelques procedures d'install
Quelques opérations classiques
Ajouter un utilisateur pour du ftp
- Pure-ftpd
#remplacer <login> par le login souhaité pure-pw useradd <login> -d /path/2/ftp/<login> -y 2 -N 1000 -u 1001 -g 1001 # cela va demander le pass # -y 2 => 2 connexions simu max # -N 1000 => 1000 Mo de quota # -u & -g correspondent à uid et guid (pas obligés de figurer dans /etc/passwd) # pour modifier un param, ici mettre le quota à 500Mo pure-pw usermod <login> -N 500 # ATTTENTION, une fois les modifs de users effectuées, il faut lancer pure-pw mkdb # pour que cela devienne effectif ! #lister tous les users et leur home pure-pw list # pour voir toutes les infos d'un user pure-pw show <login> # les autres commandes possibles pure-pw --help
Configuration pure-ftpd
Ex de conf sous debian sur http://www.littleboboy.net/archives/2004/09/28/exemple-de-configuration-de-pureftpd-sous-debian et une autre bonne doc sur http://www.labo-linux.org/cours/module-2/chapitre-02-pureftpd/
Les fichier de conf sont tous dans /etc/pure-ftpd/conf/
. Pour les méthodes d'authentification, il s'agit de liens de /etc/pure-ftpd/auth/
vers certains /etc/pure-ftpd/conf/fichiers. Chaque fichier du rep de conf contient une valeur et a le nom du paramètre. pure-ftpd-wrapper (fournit par debian) lit ces fichiers de conf pour lancer pure-ftpd avec les bons params.
Apache
Auth by group
Pour gérer les accès par groupe, dans la conf du vhost
<Directory /path/2/dir/> AuthType Basic AuthName "Le libellé de la demande d'authentification" AuthUserFile /path/2/fichier.users.passwd AuthGroupFile /path/2/fichier.groups.users Require group group1 group2 </Directory>
Le fichier /path/2/fichier.users.passwd se remplit avec le classique htpasswd /path/2/fichier.users.passwd utilisateur_a_ajouter
, et le fichier /path/2/fichier.groups.users a la syntaxe
group1: user1 user2 group2: user1 user3 # etc.
ssh
Une doc complète sur http://www.fredshack.com/docs/openssh.html
Créer un accès par clé
- générer une paire de clés privée/publique (ssh-keygen ou puttygen.exe sous windows) au format ssh2
- sur le serveur, copier la clé publique dans le fichier /home_du_user_concerne/.ssh/authorized_keys sur une ligne sous la forme
from=“IP.de.laquelle.on_veut_se_connecter” ssh-rsa cle_publique_complete adresse_mail@domaine.tld
- dans le client ssh, préciser le nom du user et la clé privée à utiliser.
- sous linux, ssh-keygen met automatiquement (lors de la génération) la clé privée dans $HOME/.ssh/id_dsa et la clé publique dans $HOME/.ssh/id_dsa.pub (id_rsa si on utilise rsa au lieu de dsa pour crypter).
- sous windows, dans putty, créer une session où on précise session/host_name, (cocher ssh), Connection/auto-login username, Connection/SSH/Preferred SSH protocol version ⇒ 2, Connection/SSH/Auth/Private key file for authentification ; et enregiostrer cette session.
LVM
LVM (pour Logical Volume Manager) permet le resize de partition sans les effacer, (permet aussi d'avoir une même partition sur plusieurs disques physiques, de faire des snapshots de partition à chaud, etc…)
Pour manipuler les partitions, utiliser parted en GiB et le laisser aligner (en octets on doit tomber sur des multiples de 2MiB, donc commencer la partition 1 à 2097152B, soit 512×4096 B = 2 MiB), pour préciser que la partition n°2 sera en lvm, c'est (parted) set 2 lvm on
creation
# creation de la partition (type Linux LVM, 8e) avec fdisk # on scanne vgscan -v # on créé le physical volume pvcreate /dev/sdbX # on créé le volume group vgcreate nomVolumeGroup /dev/sdbX # et enfin notre logical volume lvcreate -L xxxG -n nomVolumeLogique nomVolumeGroup; #ici, xxx Go mais on peut donner la taille en K ou M # et on a dispo notre /dev/nomVolumeGroup/nomVolumeLogique # reste à créer le filesystem mkfs -v -c -j -L monLabel /dev/nomVolumeGroup/nomVolumeLogique
infos
- pvdisplay : infos sur les physical volumes déclarés
- lvdisplay : infos sur les logical volumes déclarés
resize
agrandissement
- démontage (ici
umount /dev/grosdisk/lv1
, utiliser -l si ça veut pas pour cause de “resource busy”). lvextend -L+42G /dev/grosdisk/lv1
(ajoute 42Go)lvextend -l +300 /dev/grosdisk/lv1
(ajoute 300 PE,vgdisplay
pour savoir combien il en reste de dispo)e2fsck -f /dev/grosdisk/lv1
pour vérifier le filesystemresize2fs /dev/grosdisk/lv1
pour resizer le filesystem (à la taille de la partition si pas de taille précisée)- et on remonte
mount /dev/grosdisk/lv1
.
réduction
- démontage (ici
umount /dev/grosdisk/lv1
, utiliser -l si ça veut pas pour cause de “resource busy”). e2fsck -f /dev/grosdisk/lv1
pour vérifier le filesystemresize2fs /dev/grosdisk/lv1 50G
pour resizer le filesystem à 50Golvreduce -L 50G /dev/grosdisk/lv1
(fixe à 50Go)- et on remonte
mount /dev/grosdisk/lv1
.
Modifications
Pour modifier un LV (activer ou pas le mirror par ex), c'est lvconvert.
Attention, pour avoir un mirror (raid1 sur au moins 2 PV donc), il faut au moins 3 PV (le 3e pour le log), sinon il répond qu'il y a pas assez de place (pour mettre son log, mais vu le message on comprend pas pourquoi il dit ça).
exemples
# Passer backup en raid1, on a crée 2 partition avec fdisk, un sdb3 de 10Go et un sdb4 du reste pvcreate /dev/sdb3 pvcreate /dev/sdb4 # on les ajoute au vg (vg2 ici) vgextend vg2 /dev/sdb3 vgextend vg2 /dev/sdb4 # et on peut passer notre lv "backup" en mirroir (attention, ça prend qq heures) lvconvert -m1 /dev/vg2/backup # si vraiment on peut pas avoir un 3e PV, on peut s'en sortir avec un log en RAM, mais ça demandera à lvm de le reconstruire à chaque boot), ça donnerait lvconvert -m1 --mirrorlog core /dev/vg2/backup # Pour supprimer le mirroir lvconvert -m0 /dev/vg2/backup # pour passer le log du disque en RAM (pour récupérer un PV par ex) lvconvert --mirrorlog core /dev/vg2/backup # et pour le remettre sur le disque lvconvert --mirrorlog disk /dev/vg2/backup # pour passer de linear en stripped, pour faire du raid0 et doubler les perfs disques (au prix de la sécurité des datas) lvconvert --stripes 2 --stripesize 256 /dev/vg2/video
Cf qq méthodes pour déplacer un lv sur https://unix.stackexchange.com/questions/34820/move-a-logical-volume-from-one-volume-group-to-another
Réparations
En cas de disque défaillant dans un vg avec des volumes en mirroir, on débranche physiquement le disque malade (ça évite à lvm de chercher à retrouver ses petits et de figer la machine et achever le disque), et on ajoute un nouveau disque avec une partition lvm assez grande pour récupérer les volumes en mirroir
# pvcreate pour la nouvelle partition (/dev/sdxN ici), puis on l'ajoute au vg vgextend vg /dev/sdxN # On active les lv qui peuvent l’être dans notre vg cassé (il manque un disque), ça va activer les lv en mirroir et ceux qui n'étaient que sur le bon disque vgchange -a y --partial vg # et on repare le lv miroir1 lvconvert --repair /dev/vg/miroir1
Pour déplacer tous les lv d'un pv (/dev/sdxA) vers un autre (/dev/sdxB), pour retirer le A du vg, c'est
pvmove /dev/sdxA /dev/sdxB
et pour le retirer c'est
vgreduce vg /dev/sdxA
Paquets utiles
Pour un serveur en debian etch, une liste de paquets utiles
# serveur apache / php5 / mysql5 mysql-server openssl apache2 libapache2-mod-auth-plain php5 php5-cli php5-curl php5-gd php5-imagick php5-mcrypt php5-ming php5-mysql php5-sqlite3 php5-tidy php5-xsl # autres services pure-ftpd nfs-user-server libapache2-svn nfs-user-server # utilitaires de base apt-file iftop joe findutils gcc hdparm htop lftp logrotate lynx make ntpdate perl python rsync screen sudo tethereal unzip whois zip # autres applis utiles munin phpmyadmin rsnapshot subversion # pour rsnapshot perl -MCPAN -e 'install qw(Lchown)' # pour un smtp minimal mailx ssmtp # pour activer le dépot multimedia (pas forcément utile sur un serveur de prod) debian-multimedia-keyring # utilitaires annexes imagemagick libfreetype6 lame # et pour les swftools, il faut aussi (enfin, pas vraiment car il refuse de compiler avec la lbc6 de etch) libfreetype6-dev libungif-bin t1lib-bin libjpeg62-dev libt1-dev libungif4-dev # pour des paquets perso vite faits (attention, pas dans etch, à prendre dans sarge car ceux de sid n'ont pas la bonne libc6) installwatch checkinstall
Install basique
Sur un nouveau sd, install de base
# à la 1re connexion root, on change le passwd et on installe sa clé ssh # màj paquet aptitude update && aptitude upgrade && aptitude dist-upgrade # je commence par mon éditeur favori (remplacer joe par vim ou emacs pour les fans d'autres éditeurs) aptitude install joe # que l'on configure (-option en début de ligne pour l'activer, --option pour désactiver) joe /etc/joe/joerc # cf http://ll.lairdutemps.org/linux/aliases#joe # on passe au .bashrc avec .bash_aliases et .bash_prompt # on configure ses locales (en-GB.utf8 par défaut, en activant quand même fr.utf8 et iso-8859-1 pour en et fr) dpkg-reconfigure locales # on s'occupe de son hostname echo #myhost.domaine.tld# > /etc/hostname # scripts persos : mkdir /home/bin # un script pour envoyer un mail au reboot joe /home/bin/mailAfterBoot.sh chmod +x /home/bin/mailAfterBoot.sh # que l'on ajoute au rc.local joe /etc/rc.local # on peut passer à l'install des paquets "basiques" aptitude install apt-build apt-file iftop joe findutils gcc hdparm htop lftp logrotate lynx make ntpdate perl python rsync screen sudo tshark unzip whois zip
Ensuite, reste à installer les services voulus…
Réseau
Cf http://www.cyberciti.biz/tips/linux-investigate-sockets-network-connections.html pour les commandes ss (remplaçant de netstat), avec aussi les équivalences de https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/