« Généralités sur linux » : différence entre les versions

Aller à la navigation Aller à la recherche
aucun résumé des modifications
Aucun résumé des modifications
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Ce howto a été écrit au départ pour debian etch puis a été adapté pour debian lenny. Il reste cependant valable la plupart du temps pour ces deux versions de debian.
[[category:serveur]]


=Généralités sur linux=
=Fichiers=
 
==Fichiers==


Le système de fichier ext3 est principalement destiné aux systèmes basés sur GNU/Linux. Il permet des fichiers ayant un nom jusqu'à 256 caractères.
Le système de fichier ext3 est principalement destiné aux systèmes basés sur GNU/Linux. Il permet des fichiers ayant un nom jusqu'à 256 caractères.
Ligne 13 : Ligne 11 :
Sous linux, l'arborescence part d'une origine commune qu'on appel "root" (racine en français) ou "/". L'organisation standard des répertoires est décrite dans le [http://www.pathname.com/fhs/ Filesystem Hierarchy Standard]. Le respect de cette hiérarchie assure compatibilité et portabilité des systèmes linux.
Sous linux, l'arborescence part d'une origine commune qu'on appel "root" (racine en français) ou "/". L'organisation standard des répertoires est décrite dans le [http://www.pathname.com/fhs/ Filesystem Hierarchy Standard]. Le respect de cette hiérarchie assure compatibilité et portabilité des systèmes linux.


==Droits, permissions des fichiers et dossiers==
=Droits, permissions des fichiers et dossiers=


===A propos des permissions et des droits===
===A propos des permissions et des droits===
Ligne 71 : Ligne 69 :
* sticky bit : il faut utiliser la commande <code>chmod u+t</code> (ou chmod 1xxx). Pour les dossiers : lorsque ce droit est positionné, il empêche la suppression des fichiers du dossier à tout utilisateur n'étant pas le propriétaire du fichier. Cependant, un utilisateur ayant le droit d'écrire dans le fichier pourra toujours le modifier (et donc, le vider complètement s'il le veut !). Pour les fichiers : le positionnement de ce droit indique que le fichier devra rester en mémoire même après son exécution. Le but était d'éviter de charger/décharger trop souvent les fichiers souvent utilisés et d'améliorer ainsi les performances.
* sticky bit : il faut utiliser la commande <code>chmod u+t</code> (ou chmod 1xxx). Pour les dossiers : lorsque ce droit est positionné, il empêche la suppression des fichiers du dossier à tout utilisateur n'étant pas le propriétaire du fichier. Cependant, un utilisateur ayant le droit d'écrire dans le fichier pourra toujours le modifier (et donc, le vider complètement s'il le veut !). Pour les fichiers : le positionnement de ce droit indique que le fichier devra rester en mémoire même après son exécution. Le but était d'éviter de charger/décharger trop souvent les fichiers souvent utilisés et d'améliorer ainsi les performances.


===L'umask===
==L'umask==
La commande <code>umask</code> permet de définir pour chaque utilisateur avec quelles permissions seront créées les fichiers et dossiers.
La commande <code>umask</code> permet de définir pour chaque utilisateur avec quelles permissions seront créées les fichiers et dossiers.
Pour calculer l'umask à appliquer, il faut soustraire les permissions voulues aux permissions totales (777).<br />
Pour calculer l'umask à appliquer, il faut soustraire les permissions voulues aux permissions totales (777).<br />
Ligne 91 : Ligne 89 :
N'oubliez pas de définir l'umask de votre utilisateur root dans <code>/root/.bash_profile</code>
N'oubliez pas de définir l'umask de votre utilisateur root dans <code>/root/.bash_profile</code>


===uid et le gid d'un utilisateur et modification du groupe===
==uid et le gid d'un utilisateur et modification du groupe==
L'uid (user ID) d'un utilisateur est son identifiant numérique. Il est unique à chaque utilisateur. Il est généralement supérieur à 1000.<br />
L'uid (user ID) d'un utilisateur est son identifiant numérique. Il est unique à chaque utilisateur. Il est généralement supérieur à 1000.<br />
Le gid (group ID) d'un groupe est son identifiant numérique. Il est unique à chaque groupe et est généralement supérieur à 1000.<br />
Le gid (group ID) d'un groupe est son identifiant numérique. Il est unique à chaque groupe et est généralement supérieur à 1000.<br />
Ligne 110 : Ligne 108 :
usermod -g legroupe pfoo
usermod -g legroupe pfoo
</nowiki></pre>
</nowiki></pre>
===Inclure un utilisateur dans un groupe===
 
==Inclure un utilisateur dans un groupe==
Appartenir à un groupe permet souvent d'obtenir des droits supplémentaires. Exemple: appartenir au groupe <code>audio</code> donne accès aux périphériques audios.
Appartenir à un groupe permet souvent d'obtenir des droits supplémentaires. Exemple: appartenir au groupe <code>audio</code> donne accès aux périphériques audios.
Pour modifier les différents utilisateurs apprtenant à un groupe, il est possible de directement modifier le fichier <code>/etc/group</code> en énumérant les utilisateurs à droite du groupe voulu.
Pour modifier les différents utilisateurs apprtenant à un groupe, il est possible de directement modifier le fichier <code>/etc/group</code> en énumérant les utilisateurs à droite du groupe voulu.
Ligne 123 : Ligne 122 :
<code>man gpasswd</code> pour plus d'informations.
<code>man gpasswd</code> pour plus d'informations.


==Les liens==
=Les liens=
Sous linux chaque fichier est repéré physiquement sur le disque par un inode (c'est en quelque sorte le vrai nom des données sur le disque). Le nom de fichier (filename) est ce qu'on appel une étiquette et pointe sur l'inode.
Sous linux chaque fichier est repéré physiquement sur le disque par un inode (c'est en quelque sorte le vrai nom des données sur le disque). Le nom de fichier (filename) est ce qu'on appel une étiquette et pointe sur l'inode.


===Hard link===
==Hard link==
On créé un hardlink avec la commande <code>ln</code>. Ils permettent de créer une nouvelle étiquette pointant vers un inode. Une fois un hardlink créé, on peut accéder au fichier aussi bien avec le nom d'origine qu'avec le nom que l'on vient de créer. Si on efface le nom d'origine, le fichier reste accessible par le hardlink.
On créé un hardlink avec la commande <code>ln</code>. Ils permettent de créer une nouvelle étiquette pointant vers un inode. Une fois un hardlink créé, on peut accéder au fichier aussi bien avec le nom d'origine qu'avec le nom que l'on vient de créer. Si on efface le nom d'origine, le fichier reste accessible par le hardlink.
Notez que les hardlinks doivent être situé sur le même disque physique.
Notez que les hardlinks doivent être situé sur le même disque physique.
Ligne 136 : Ligne 135 :
source est le nom du fichier pour lequel vous voulez créer un hardlink, et nouveau_nom est le nom du lien
source est le nom du fichier pour lequel vous voulez créer un hardlink, et nouveau_nom est le nom du lien


===symbolic link===
==symbolic link==


Un lien symbolic est une nouvelle étiquette pointant cette fois vers un nom de fichier. Si on efface le fichier d'origine, le lien ne signifie plus rien.
Un lien symbolic est une nouvelle étiquette pointant cette fois vers un nom de fichier. Si on efface le fichier d'origine, le lien ne signifie plus rien.
Ligne 146 : Ligne 145 :
source est le nom du fichier pour lequel vous voulez créer un hardlink, et destination est le nom du lien
source est le nom du fichier pour lequel vous voulez créer un hardlink, et destination est le nom du lien


==Ajouter et supprimer des utilisateurs==
=Ajouter et supprimer des utilisateurs=


Pour ajouter un groupe il faut utiliser la commande groupadd :
Pour ajouter un groupe il faut utiliser la commande groupadd :
Ligne 163 : Ligne 162 :
L'option -m précise qu'il faut créer le répertoire personnel de l'utilisateur.
L'option -m précise qu'il faut créer le répertoire personnel de l'utilisateur.


==Le patch kernel grsecurity et la restriction des droits de /proc==
=Le patch kernel grsecurity et la restriction des droits de /proc=


Le patch grsecurity pour le noyau linux permet d'augmenter la sécurité de votre machine. Cependant, la restriction des droits qu'il peut imposer sur certains répertoires peut être quelque-peut gênante, notamment pour les services utilisant l'ipv6. Si le kernel est bien configuré il a attribué les répertoires dont il a durcit les privilèges à un groupe (défini par la directive de configuration CONFIG_GRKERNSEC_PROC_GID). Si certains services posent des problèmes au lancement (c'est le cas par exemple pour postfix ou bind9 lorsqu'on les configure pour gérer l'ipv6) ajoutez les simplement au groupe des sous-répertoires de /proc/.
Le patch grsecurity pour le noyau linux permet d'augmenter la sécurité de votre machine. Cependant, la restriction des droits qu'il peut imposer sur certains répertoires peut être quelque-peut gênante, notamment pour les services utilisant l'ipv6. Si le kernel est bien configuré il a attribué les répertoires dont il a durcit les privilèges à un groupe (défini par la directive de configuration CONFIG_GRKERNSEC_PROC_GID). Si certains services posent des problèmes au lancement (c'est le cas par exemple pour postfix ou bind9 lorsqu'on les configure pour gérer l'ipv6) ajoutez les simplement au groupe des sous-répertoires de /proc/.
Ligne 169 : Ligne 168 :
Si vous utilisez snmpd, il faut modifier la ligne de lancement dans <code>/etc/default/snmpd</code> en ajoutant l'option <code>-g GID</code> où GID est le groupe défini par CONFIG_GRKERNSEC_PROC_GID.
Si vous utilisez snmpd, il faut modifier la ligne de lancement dans <code>/etc/default/snmpd</code> en ajoutant l'option <code>-g GID</code> où GID est le groupe défini par CONFIG_GRKERNSEC_PROC_GID.


==Le programme tar==
=Le programme tar=
 
=Généralités sur ce howto=
 
Je vais commencer par décrire l'arborescence que la suite du howto utilise.
Le dossier <code>/srv/</code> va contenir tous les dossiers et fichiers en rapport directement avec le serveur. Sur mon installation, j'ai créé une partition à part pour <code>/srv/</code> ce qui permet de ne pas perdre les données lors d'une réinstallation.
<code>/srv/bind/</code> contient les différentes zones dns que mon serveur bind9 gère.
<code>/srv/http/</code> contient les différents sites internet que mon serveur héberge du moment qu'ils ne sont pas rattaché à un utilisateur en particulier. Les sites internet rattachés à un utilisateur doivent être dans le dossier home de l'utilisateur en question.
 
Notez que pour la suite de ce howto, tous les changements de permissions effectués supposent que vous êtes en umask 0027.
Vous pouvez voir votre umask actuel avec la commande umask. Si votre umask n'est pas 0027, tapez :
<pre>umask 0027</pre>
 
Créez le répertoire /srv s'il n'existe pas :
<pre>
mkdir /srv
chmod o+rx /srv
</pre>
 
=Généralités sur l'installation d'un serveur dédié sous debian=
 
==Configurer les locales==
 
Les paramètres régionaux (locales en anglais) sont un ensemble de définitions de textes et de formats des fichiers.
 
===Debian===
 
Pour modifier la locale sous Debian, tapez :
<pre>
dpkg-reconfigure locales
</pre>
Au premier menu, cochez les locales suivantes avec la touche espace :
<pre>
fr_FR ISO-8859-1
fr_FR.UTF-8 UTF-8
fr_FR.UTF-8@euro UTF-8
fr_FR@euro ISO-8859-15
</pre>
Au menu suivant, définissez <code>fr_FR.UTF-8</code> comme locale active par défaut.
 
A titre d'information, les locales actives sont listées dans <code>/etc/locale.gen</code>. Vous pouvez modifier manuellement les locales actives en les ajoutant dans ce fichier puis en utilisant la commande <code>locale-gen</code>
 
Si vous avez des fichiers écrits avec une locale différente, vous pouvez rectifier vos fichiers avec <code>iconv</code>.
 
===ArchLinux===
 
Pour modifier la locale sous ArchLinux, il y a 3 étapes distinctes :
* Indiquer quelles locales peuvent être utilisées en modifiant le fichier <code>/etc/locale.gen</code> : il faut les décommenter en retirant le #
* Re-générer les locales en tapant en root la commande <code>locale-gen</code>
* Préciser laquelle utiliser dans le fichier <code>/etc/rc.conf</code> à la variable <code>LOCALE</code> quasiment tout en haut du fichier. Exemple : <code>LOCALE="fr_FR.utf8"</code>
 
==Configurer l'hostname du serveur==
 
Généralement, l'hostname de votre serveur correspond au nom de la machine chez la société chez qui vous louez le serveur. C'est ce même nom qui est affiché dans la ligne de votre shell lorsque vous vous loguez en ssh. Si vous possédez votre domaine, vous voudrez probablement avoir votre propre hostname. Dans mon cas, mon serveur s'appelle core.csnu.org.
 
Le premier fichier à modifier est <code>/etc/hostname</code>. Ce fichier défini notamment le nom affiché dans le shell. Tapez :
<pre>
echo core.csnu.org > /etc/hostname
</pre>
 
Il faut aussi modifier le fichier <code>/etc/hosts</code> et modifier la correspondance entre l'ip de la machine et l'hostname. Dans mon cas :
<pre>
213.186.47.110  core.csnu.org
</pre>
 
==Configurer une adresse ipv6==
 
Si la société chez qui vous louez votre serveur vous a alloué un bloc ipv6 vous voudrez peut-être configurer des adresses ipv6 sur votre serveur. Dans mon cas, le bloc ipv6 est 2001:41D0:1:127d::/64.
Pour ajouter l'adresse ipv6 2001:41d0:1:127d::1 à l'interface eth0 de votre serveur, tapez:
<pre>
ifconfig eth0 inet6 add 2001:41d0:1:127d::1/64
</pre>
Pour supprimer cette adresse ipv6 :
<pre>
ifconfig eth0 inet6 del  2001:41d0:1:127d::1/64
</pre>
Pour que l'adresse ipv6 soit configurée automatiquement au boot il faut ajouter les lignes suivantes dans <code>/etc/network/interfaces</code> :
<pre><nowiki>
iface eth0 inet6 static
      address 2001:41d0:1:127d::1
      netmask 64
      #mtu 1280
      up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
</nowiki></pre>
 
Enfin, il faut modifier <code>/etc/hosts</code> :
<pre>
::1 localhost.localdomain localhost
2001:41d0:1:127d::1 core.csnu.org
</pre>
 
==Automatiser la création du motd==
 
Le fichier <code>/etc/motd</code> contient le message qui doit être affiché lorsque quelqu'un se log en ssh. Vous pouvez y entrer par exemple un message que vous voulez passer aux utilisateurs du serveur.
 
Si vous voulez bénéficier d'un motd graphique, installez le paquet <code>linuxlogo</code> :
<pre>
aptitude install linuxlogo
</pre>
 
Vous pouvez créer un logo en dirigeant la sorti de la commande <code>linux_logo</code> vers <code>/etc/motd</code> :
<pre>
linux_logo > /etc/motd
</pre>
Si vous voulez automatiser la création d'un motd dynamique qui se modifiera par exemple à chaque changement de kernel il faut créer un script sh qui sera lancé à chaque démarrage. Personnellement, je me sers du fichier <code>/etc/rc.local</code>.
Voici mon fichier <code>/etc/rc.local</code> :
<pre>
#!/bin/sh -e
linux_logo > /etc/motd
echo >> /etc/motd
echo "Debian GNU/Linux 4.0" >> /etc/motd
echo >> /etc/motd
uname -a >> /etc/motd
echo >> /etc/motd
echo "server    : `hostname | cut -f 1 -d "."`" >> /etc/motd
echo "ip        : `cat /etc/network/interfaces | grep "address" | head -n 1 | cut -f 2 -d " "`"  >> /etc/motd
echo "ip6 : `tac /etc/network/interfaces | grep "address" |  head -n 1 | cut -f 2 -d " "`" >> /etc/motd
echo "hostname  : `hostname`" >> /etc/motd
echo >> /etc/motd
/bin/cp /etc/motd /etc/issue
exit 0
</pre>
 
==Des mails temporaires avec exim4==
 
Vous aurez peut-être temporairement besoin d'un serveur smtp local pour gérer vos envois de mails (crontab, ...). Pour celà, nous allons rapidement configurer <code>Exim4</code>.
Pour commencez, installez <code>mailx</code>:
<pre>
aptitude install mailx
</pre>
<code>mailx</code> permet d'envoyer et de recevoir des mails (c'est un MUA, ou Mail User Agent). Les dépendances de mailx sous debian vont installer un serveur smtp. Sous debian, c'est exim4 qui va est installé par défaut.
 
Vous serrez amené à répondre à plusieurs questions pour la configuration d'exim4. Rien de bien compliqué.
Pour une raison obscure, lors de l'installation, je ne pouvais pas modifier le nom du serveur (mailname). Si vous êtes dans le même cas de figure, il suffit de modifier le fichier <code>/etc/mailname</code> et d'y entrer votre domaine. Une fois cela fait, il ne reste plus qu'à relancer la configuration d'exim:
<pre>
dpkg-reconfigure exim4-config
</pre>
4 203

modifications

Menu de navigation