Table des matières

Administration serveur

Quelques procedures d'install

Quelques opérations classiques

Ajouter un utilisateur pour du ftp

#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é

from=“IP.de.laquelle.on_veut_se_connecter” ssh-rsa cle_publique_complete adresse_mail@domaine.tld

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

resize

agrandissement

  1. démontage (ici umount /dev/grosdisk/lv1, utiliser -l si ça veut pas pour cause de “resource busy”).
  2. lvextend -L+42G /dev/grosdisk/lv1 (ajoute 42Go)
  3. lvextend -l +300 /dev/grosdisk/lv1 (ajoute 300 PE, vgdisplay pour savoir combien il en reste de dispo)
  4. e2fsck -f /dev/grosdisk/lv1 pour vérifier le filesystem
  5. resize2fs /dev/grosdisk/lv1 pour resizer le filesystem (à la taille de la partition si pas de taille précisée)
  6. et on remonte mount /dev/grosdisk/lv1.

réduction

  1. démontage (ici umount /dev/grosdisk/lv1, utiliser -l si ça veut pas pour cause de “resource busy”).
  2. e2fsck -f /dev/grosdisk/lv1 pour vérifier le filesystem
  3. resize2fs /dev/grosdisk/lv1 50G pour resizer le filesystem à 50Go
  4. lvreduce -L 50G /dev/grosdisk/lv1 (fixe à 50Go)
  5. 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/