How To Setup Nas Server

Ce howto qui va décrire le recyclage d'un mac G3 blanc bleu en un serveur NAS, ainsi que la configuration de la distribution pour gérer le raid, les accès ssh et samba.

La configuration finale est mono "utilisateur", c'est-à-dire que toute personne se connectant à la machine, n'aura pas besoin de s'identifier, et sera authentifiée avec un compte bien spécifique. Il n'y a aucune gestion des ACLs, car mon objectif est de faire un serveur de sauvegarde chez moi, pas en milieu industriel.

Le chapitre "Mise en place du système" est aussi valable pour les autres types de machines (x86, SPARCS, ...).

Mise en place de la machine

Le serveur sera basé sur une distribution linux debian Etch. La distribution sera installée sur le disque dur d'origine, et 2 autres disques seront utilisés en RAID pour faire de la sauvegarde de fichiers.

Le matériel ajouté au G3:

Sous Debian/Ubuntu la carte sata Sonnettech est reconnue parfaitement, elle utilise le driver sil:

Le partitionnement du disque d'origine de 15Go sera fait ainsi:

    Apple 32,3kB
    Apple_bootstrap 1MB
    racine 11,5 GB
    swap 1,5GB

Mise en place du système

Installation de Debian

Lors de l'installation de la distribution Debian, n'installe que le système de base, rien de plus (ne sélectionne pas lors de l'installation le choix serveur de fichier). Nous allons installer étape par étape ce dont nous avons besoin.

A la fin de l'installation, j'ai un compte root, le nom de la machine sera MyNAS et son adresse ip sera 192.168.0.1

Toute cette étape se fait avec un écran et un clavier sur la machine.

ssh

Un fois le système installé, il faut pouvoir se connecter à distance, pour la cela il suffit d'installer le serveur OpenSSH.

Installation

    apt-get install openssh-server

Configuration

Une petite configuration à réaliser, consiste à supprimer le forwarding de X. La valeur X11Forwarding qui est à yes, la mettre à no:

    nano -w /etc/ssh/sshd_config
    ...
    X11Forwarding no
    ...

Déconnecte-toi et continue la configuration via SSH.

Mise en place des disques en RAID1

Installation du logiciel de raid: mdadm

installer le paquet mdadm

    apt-get install mdadm

Aux différents invites indique successivement none et ne démarre pas automatiquement le RAID. Cela sera fait avec le fichier de configuration créé à l'étape suivante.

Configuration du raid:

Création d'un raid avec des disques vierges

J'ai choisi de faire un serveur de sauvegarde en Raid1. Pour cela j'ai configuré mdadm comme suit:

  • Crée le noeud du raid /dev/md0:
     mknod /dev/md0 b 9 0
  • Crée le raid1 avec les disques /dev/sda et /dev/sdb
    mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/sda /dev/sdb
  • Formate le raid:
    mke2fs -j /dev/md0
  • Sauvegarde l'ancien fichier de configuration:
    mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.old
  • Crée le fichier de configuration qui sera lu au démarrage du serveur:
    mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Ca y'est le système raid est en place, et le sera encore au prochain boot.

Utilisation de disques ayant un raid prééxistant

  • Crée le noeud du raid /dev/md0:
     mknod /dev/md0 b 9 0
  • assemble le raid1 avec les disques /dev/sda et /dev/sdb
    mdadm --assemble --verbose /dev/md0 /dev/sda /dev/sdb
  • Sauvegarde l'ancien fichier de configuration:
    mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.old
  • Crée le fichier de configuration qui sera lu au démarrage du serveur:
    mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Mise en place du répertoire partagé, avec un user, qui sera dans le RAID

Afin d'utiliser mon NAS, je vais partager le disque grâce à Samba. Pour cela je crée un compte share qui contiendra tout ce qui est à partager, et je configure Samba pour qu'il partage ce dossier home (ou un sous dossier) sur le réseau.

Créer un utilisateur de partage: share

Création d'un compte share avec sa home qui sera /home/share, et qui ne pourra pas se connecter ni executer de script:

    useradd share -s /bin/false -d /home/share -m -c "Compte de partage"

Ce compte à son importance dans la configuration de samba que nous allons voir plus loin.

Ajout du RAID dans le fstab

Configurer le fichier fstab pour que le raid soit monter dans /home/share:

    /dev/md0        /home/share           ext3    defaults                0       2

Création du répertoire publique

Va dans /home/share et crée un répertoire pub:

    cd /home/share/
    mkdir pub

Étant donné que tu es connecté en root, il faut mettre le répertoire au bon utilisateur:

    chown share:share pub

Mise en place de samba

Installation

Installation de samba server:

    apt-get install libcupsys2 samba samba-common

Lors de l'installation, indique le nom de domaine:

    MYDOMAIN

Configuration

Edites le fichier /etc/samba/smb.conf:

    nano -w /etc/samba/smb.conf

    security = share

    [share]
    writeable = yes
    public = yes
    path = /home/share/pub
    browseable = yes
    read only = no
    force user = share
    force group = share

Sauvegarde, et redémarre Samba, la partie partage est terminée.

    /etc/init.d/samba restart

Ajout d'un compte d'administration: arrêt à distance

Mise en place de sudo

Installation de sudo

Pour gérer les droits d'exécution de logiciels sur le server nous allons utiliser sudo:

    apt-get install sudo

Création du compte utilisateur d'arrêt de la machine à distance

Création de l'utilisateur:

    useradd stop -s /bin/sh -d /home/stop -m -c "Compte extinction des feux"

Lui donner un mot de passe:

    passwd stop

configuration de sudo, pour cela tapper visudo:

    # Host alias specification
    Host_Alias MACHINES = 192.168.0.2, localhost, MyNAS

    # User alias specification
    User_Alias SHUTDOWN_USER = stop

    # Cmnd alias specification
    Cmnd_Alias SHUTDOWN_CMD = /sbin/shutdown -h now, /sbin/halt

    # User privilege specification
    root    ALL=(ALL) ALL
    SHUTDOWN_USER   MACHINES=NOPASSWD: SHUTDOWN_CMD

Fais bien attention à mettre le nom de ta machine (celle entrée lors de l'installation de Debian) à la place de MyNAS dans le fichier de configuration.

Ceci permet d'arrêter le NAS à distance avec la commande:

    ssh stop@192.168.0.1 sudo halt

Si tu tapes cette commande en console, le mot de passe te sera demandé.

Connexion sans mot de passe pour arrêter le serveur

Etant donné que l'on a créé un compte pour arrêter le serveur à distance stop, il suffit d'ajouter la clef publique de ta machine distante dans les clefs autorisées à se connecter à distance.

  • crée une clef sur ton poste (si elle n'existe pas déjà):
    ssh-keygen -t rsa
  • copie la clef sur le server NAS:
    scp ~/.ssh/id_rsa.pub root@192.168.0.1:~/
  • connecte-toi à la machine en root via ssh, puis ajoute ta clef rsa public à la liste des clefs autorisées pour le compte stop:
    cat id_rsa.pub >> /home/stop/.ssh/authorized_keys
  • supprime le fichier id_rsa.pub du serveur:
    rm id_rsa.pub

A présent si tu tapes en console depuis ton poste distant:

    ssh stop@192.168.0.1 sudo halt

Plus aucun mot de passe ne t'est demandé. Le serveur NAS s'arrête.

Tu peux créer un raccourci sur le bureau de ton poste pour arrêter le serveur.

Jouer une musique lorsque le serveur est prêt

Beep

Installer le logiciel beep:

    apt-get install beep

Pour jouer une musique lorsque le serveur est prêt, il suffit d'éditer le fichier /etc/rc.local et d'y ajouter la ligne de commande voulu avant la ligne exit 0.

Si tu veux simplement émettre un beep:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

beep -l 900 -r 3 -f 500

exit 0

de la musique

Il faut installer sox:

   apt-get install alsa-base alsa-utils libasound2 linux-sound-base alsa-oss
   apt-get install libmad0 libogg0 libvorbis0a libvorbisenc2 libvorbisfile3 sox

Crée un répertoire sounds dans /usr/local/share/

    cd /usr/local/share
    mkdir sounds

Dans ce répertoire met tes sons.

Edite le fichier rc.local et ajoutes-y la commande pour lire le son (ou la musique):

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/bin/play /usr/local/share/sounds/ogre.wav

exit 0

Cette commande permet de lire un fichier wav, mp3 ou ogg.

Si aucun son ne sort, c'est qu'il faut monter le son:

    amixer set Master 100

Gestion du RAID

  • connaitre l'état du RAID:
    mdadm --detail /dev/md0
  • avoir plus de détails et le temps de reconstruction du RAID:
    cat /proc/mdstat
  • supprimer le disque marqué faulty du raid (sdX étant le disque en défaut):
    mdadm /dev/md0 --fail /dev/sdaX
    mdadm --manage /dev/md0 -r /dev/sdX
  • ajouter un nouveau disque dans le raid (sdX étant le disque à ajouter):
    mdadm --manage /dev/md0 -a /dev/sdX

liens

File server

Distrib

RAID