Sous-sections
/etc/rc.d/init.d/ sous Linux
Le répertoire /etc/rc.d/init.d/ contient tous les scripts de démarrage
des différents services.
Pour démarrer un service on lancera typiquement la commande:
|
/etc/rc.d/init.d/nom_service start |
|
Bien sûr les possibilitées de ces scripts shell d'initialisation ne s'arrêtent pas à ``start'',
au minimum vous pourrez trouver start et stop, et en général vous trouverez:
|
start, stop, status, restart, condrestart, reload. |
|
/etc/inetd.conf sous *BSD ou /etc/xinetd sous Linux
``inetd'' (respectivement xinted) démarre les programmes fournissant des services Internet.
Au lieu de démarrer ces services au moment de l'initialisation du système, et de les
laisser inactifs jusqu'à ce qu'il y ait une demande de connexion,
on ne démarre que inetd et celui ci écoute sur tous les ports
nécessaires aux services listés dans ses fichiers de configuration.
Lorsqu'une requête arrive, inetd démarre le service correspondant. à cause
de la façon dont il fonctionne, inetd (comme xinetd) est aussi appelé le
super-serveur.
Les services listés dans les fichiers de configuration de
inetd ou xinetd peuvent être séparés en 2 groupes. Les services du premier groupe
sont dit multi-threaded et ils nécessitent que le processus père crée
un nouveau processus pour chaque nouvelle demande de connexion. Chaque
processus gère alors une connexion. Pour de tels services,
inetd continue d'écouter pour prendre en charge de nouvelles demandes
de connexions, et de lancer de nouveaux processus. D'un autre côté, le
deuxième groupe est composé des services pour lesquels un seul démon
prend en charge toute les nouvelles requêtes de connexion.
De tels services sont appelés single-threaded et inetd ne prendra plus en
charge les requêtes destinées à ce serveur tant que le serveur
sera en service. Les services de cette catégorie sont habituellement de
type datagramme.
Jusqu'à présent, la seule raison de l'existence d'un
super-serveur était de préserver les ressources système en évitant de
créer de nombreux processus dont la plupart ne seront actifs que très peu de
temps. Tout en remplissant ces fonctions, inetd tire parti de l'idée du
super-serveur pour ajouter des fonctionnalités telle que le
contrôle d'accès et le logging. De plus, inetd ne se restreint pas aux services
listés dans le fichier /etc/services. Par conséquent, tout
le monde peut utiliser inetd pour démarrer des services personnalisés.
Passwd est un fichier de texte qui contient la liste des comptes sur le système, ainsi que des informations
utiles sur ces comptes, comme l'identification de l'utilisateur, du groupe, le répertoire personnel, le shell, etc.
Actuellement, il est de plus en plus recommandé d'utiliser des systèmes de masquage des
mots de passe, comme shadow avec lequel le fichier /etc/passwd contient des ``*'' à la place des mots
de passe, et où ces derniers sont stockés sous forme cryptée dans
/etc/shadow qui n'est lisible que parle Super-utilisateur.
Il doit y avoir, dans le fichier des mots de passe, une ligne par utilisateur, avec le format suivant :
|
account:passwd:UID:GID:GECOS:directory:shell |
|
account |
Le nom que l'utilisateur utilisera pour se connecter, il ne devrait normalement pas
contenir de majuscules |
password |
La représentation encryptée (optionnelle) du mot de passe. |
UID |
L'ID numérique de l'utilisateur. |
GID |
L'ID numérique du groupe principal de l'utilisateur. |
GECOS |
Ce champ est optionnel et n'a qu'un rôle informatif. Il contient généralement le nom complet de l'utilisateur. |
directory |
Le répertoire de connexion de l'utilisateur (variable d' environnement $HOME). |
shell |
Le programme à exécuter après la phase de connexion (par défaut /bin/sh) si ce fichier n'existe pas, l'utilisateur ne pourra pas se connecter avec son login. |
/etc/shadow contient les mots de passe cryptés des utilisateurs ou plus exactement, le résultat du cryptage
d'une chaîne de longueur nulle avec le mot de passe comme clé de cryptage ainsi qu'éventuellement des informations
sur l'âge des mots de passe :
- Nom de login.
- mot de passe crypté.
- Nombre de jours écoulés depuis le 1er janvier 1970 jusqu'au dernier changement de mot de passe
- Nombre de jours durant lesquels le mot de passe est encore valide
- Nombre de jours après lesquels le mot de passe doit être changé.
- Nombre de jours avant l'expiration du mot de passe impliquant l'avertissement de l'utilisateur
- Nombre de jours après l'expiration provoquant la désactivation du compte
- Numéro du jour depuis le 1er janvier 1970 à partir duquel le compte a été désactivé
- Champs réservé
Le champs mot de passe doit être rempli. Le mot de passe crypté comprend 13 à 24 caractères
pris dans l'alphabet réduit ``a-z'', ``A-Z'', ``0-9'', ``.'' et ``/''.
Si le nombre minimum de jours requis est plus grand que le nombre
maximum de jours de validé, ce mot de passe ne peut pas être changé par l'utilisateur.
Un compte est considéré comme inactif et est désactivé si le mot de passe n'est pas changé
dans l'intervalle spécifié après l'expiration du mot de passe.
Un compte est également désactivé le jour indiqué quelque soit les autres informations d'expiration.
Cette information est prioritaire sur tous les autres champs présents dans /etc/passwd.
Ce fichier ne doit pas être accessible en lecture par les utilisateurs normaux afin de maintenir la sécurité
des mots de passe, en particulier contre les attaques aux dictionnaires.
|
|
|
Remarque : Sur les systèmes *BSD le fichier /etc/shadow est remplacé par le fichier /etc/master.passwd
|
|
|
|
/etc/group est un fichier ASCII qui définit les groupes auxquels appartient chaque utilisateur.
Il y a une ligne par groupe, et chaque ligne a le format :
|
nom_du_groupe:mot_de_passe:GID:liste_utilisateurs |
|
Les champs sont les suivants :
nom_du_group |
Le nom du groupe. |
mot_de_passe |
Le mot de passe encrypté du groupe. Si ce champ est vide (presque toujours), aucun mot de passe n'est nécessaire. |
GID |
L'ID numérique du groupe. |
liste_utilisateurs |
Tous les noms des membres du groupe, séparés par des virgules. |
/etc/fstab
Le fichier fstab contient des informations sur les différents systèmes de fichiers. fstab est uniquement lus
par les programmes, jamais écrit. C'est la responsabilité
de l'administrateur de créer et de maintenir ce fichier
correctement.
Chaque système de fichier est décrit sur une ligne indépendante. Les champs contenus sur chaque
ligne sont séparés par des espaces ou des tabulations.
L'ordre des enregistrements au sein de fstab est important
car fsck(8), mount(8), et umount(8) utilisent séquentiellement les enregistrements de fstab pour effectuer
leurs travaux.
Les lignes fstab se compose comme suit:
- Le premier champs (fs_spec), décrit le périphérique bloc ou le système de fichiers distant a monter.
- Le second champs (fs_file), indique le point de montage du système de fichier. Pour les partitions de swap ce champ
doit être spécifié comme ``none'' (aucun).
- Le troisième champs (fs_vfstype), décrit le type de système de fichiers. Le système supporte actuellement les types
suivants (et peut-être d'autres, voir /proc/filesystems):
ext2 |
système de fichiers local, noms de fichiers longs, i-noeuds détaillés, et beaucoup d'autres avantages. |
ext3 |
système de fichiers local, noms de fichiers longs, i-noeuds détaillés, système de fichiers journalisé. |
xiafs |
système de fichiers local, noms de fichiers longs, i-noeuds détaillés, et d'autres avantages. |
msdos |
système de fichiers local pour les partitions MS-DOS. |
vfat |
système de fichiers local pour les partitions FAT32. |
NTFS |
système de fichiers local pour les partitions NTFS. |
HPFS |
système de fichiers local pour les partitions HPFS. |
ISO9660 |
système de fichiers local pour les CD-ROM. |
NFS |
système de fichiers distant par réseau. |
swap |
partition de disque utilisée pour le swapping. |
- Si vfs_fstype est mentionné comme ``ignore'', l'enregistrement n'est pas traité.
Ceci permet de visualiser aisément les partitions non utilisées.
- Le quatrième champs (fs_mntops), indique des options de
montage associées au système de fichiers.
Il s'agit d'une liste d'options séparées par des virgules.
Il contient au moins le type de montage, suivi éventuellement d'options appropriées au type de système de fichiers.
async |
Toutes les entrées/sorties sur le système de fichiers seront asynchrone. |
auto |
Peut être monté par l'argument -a. |
defaults |
Utilisation des options par défaut : rw, suid, dev, exec, auto, nouser, et async. |
dev |
Interpréter les fichiers spéciaux de périphériques présents sur le système de fichiers. |
exec |
Permettre l'exécution de fichiers binaires. |
noauto |
Ne peut être monté qu'explicitement (l'invocation de mount avec l'argument -a
ne montera pas le système de fichiers). |
nodev |
Ne pas interpréter les fichiers spéciaux de périphériques présents sur le système de fichiers. |
noexec |
Ne pas permettre l'exécution de fichiers binaires sur le système de fichiers monté.
Ceci peut être utile sur un serveur qui contient des fichiers binaires pour des architectures autres
que la sienne. |
nosuid |
Ne pas tenir compte des bits Set-UID ou Set-GID. |
nouser |
Ne pas autoriser d'utilisateur ordinaire (non root) à monter le système de fichiers.
C'est le comportement par défaut. |
remount |
Remonter un système de fichiers déjà monté. Ceci est utilisé pour changer les attributs
de montage, principalement pour autoriser l'écriture sur un système en lecture seule. |
ro |
Montage du système en lecture seule. |
rw |
Montage du système en lecture/écriture. |
suid |
Prendre en compte les bits Set-UID ou Set-GID des fichiers se trouvant sur le système monté. |
sync |
Toutes les entrées/sorties sur le système de fichiers seront synchrones. |
user |
Autoriser les utilisateurs ordinaires (non root) à monter le système de fichiers.
Ceci entraîne l'utilisation des options noexec, nosuid, et nodev (à moins qu'elles ne soient
explicitement surchargées, comme dans une ligne d'option user,exec,dev,suid). |
- Le cinquième champs (fs_freq), est utilisé par la commande dump(8) pour déterminer quels sont les
systèmes de fichiers à sauvegarder. Si le cinquième champs est absent ou vaut zéro, dump supposera qu'il
ne faut pas sauvegarder ce système.
- Le sixième champs (fs_passno), est utilisé par le programme fsck(8) pour déterminer
l'ordre de vérification des systèmes de fichiers au moment du démarrage.
Le système de fichiers racine doit avoir un champs fs_passno de valeur 1,
et les autres un fs_passnode de valeur 2. Les systèmes
partageant le même contrôleur seront vérifiés séquentiellement, et ceux utilisant différents contrôleurs
seront vérifiés simultanément pour utiliser le parallélisme offert par le matériel. Si le sixième champs est
absent ou vaut zéro, fsck ne vérifiera pas ce système de fichiers.
Le service syslog sert a logger diverses informations dans des fichier.
Il est très utile pour la sécurité de votre machine car de nombreuses informations sont enregistrées
(les tentatives de connexion les services démarrer.), son fonctionnement est configurable au travers
du fichier /etc/syslog.conf. Il contient deux champs ,le sélecteur et l'action.
Le sélecteur se compose de deux champs appeler ``facility'' et ``priority''.
Les valeurs de ``facility'' identifie le sous système qui a émis le message. Les types définis
(dans /usr/include/syslog.h.) sont auth, authpriv, cron, daemon, kern, lpr, mail,
mark, news, security (pareil que auth), syslog, user, uucp et de local0 a local7.
Notons que ``security'' est obsolète et que ``mark'' est réservé a un usage interne.
L'argument ``priority'' sert a définir le niveau de détails de ce qui doit être logué.
Les valeurs possibles sont:
debug, info , notice, warning, err , crit, alert, emerg.
# Various entry
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
user.* -/var/log/user.log
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;;news.none;authpriv.none -/var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Mail logging
mail.=debug;mail.=info;mail.=notice -/var/log/mail/info
mail.=warn -/var/log/mail/warnings
mail.err -/var/log/mail/errors
# Kernel logging
kern.=debug;kern.=info;kern.=notice -/var/log/kernel/info
kern.=warn -/var/log/kernel/warnings
kern.err /var/log/kernel/errors
# Save mail and news errors of level err and higher in a
# special file.
uucp,news.crit -/var/log/spooler
# Save boot messages also to boot.log
local7.* -/var/log/boot.log
*.info;mail.none;authpriv.none /dev/tty7
authpriv.* /dev/tty7
*.warn;*.err /dev/tty7
kern.* /dev/tty7
mail.* /dev/tty8
hosts - Correspondances statiques de noms d'hôtes.
Il s'agit d'un fichier de texte simple qui associe les adresses IP avec les
noms d'hôtes, une ligne par adresse IP. Pour chaque hôte, une unique ligne doit être présente,
avec les informations suivantes :
|
Adresse_IP Nom_officiel [Alias...] |
|
Les divers champs de la ligne sont séparés par un nombre quelconque d'espaces ou de tabulations.
Le texte commençant avec un caractère "#" et s'étendant jusqu'à la fin de la ligne est considéré comme
un commentaire, et est donc ignoré. Les noms d'hôtes peuvent contenir
n'importe quel caractère imprimable autres que les délimiteurs de champs, les saut de ligne ou le caractère
de commentaire. Les alias permettent de disposer de noms différents, d'orthographe
simplifiées, de surnoms plus courts, ou de noms d'hôtes génériques
(comme localhost).
Le système Berkeley Internet Name Domain (BIND) implémente un serveur de noms Internet pour
les systèmes Unix. Il remplace le fichier
/etc/hosts ou la recherche des noms d'hôtes, et libère un hôte de la nécessité de disposer
d'un fichier /etc/hosts complet et à jour.
Dans les systèmes modernes, même si la table des hôtes a été remplacée par
DNS, ce mécanisme est encore largement employé pour :
127.0.0.1 localhost |
192.168.1.217 foo.nomomaine.org foo |
205.230.163.103 www.opensource.org |
Le fichier /etc/resolv.conf se compose de deux informations importantes que sont:
``nameserver'' qui définit la machine sur laquelle devront être transmisent les requêtes DNS
c'est à dire les machines permettant de transformer les adresses telles que www.google.fr en adresse IP.
On voit ici qu'il est possible d'usurper une adresse par une autre, il sera donc indispensable d'utiliser une machine
de confiance.
La deuxième information importante est ``search'' qui permettra de définir le(s) domaines de recherche des
adresses, ainsi lorsque l'on tapera ``ssh seb@machine'' la recherche va donc se faire de préférence avec
l'extension: ``ssh seb@machine.domain'' ``domain'' étant le champ suivant la valeur ``search''.
``/etc/services'' est un fichier de texte ASCII fournissant une correspondance entre un nom intelligible décrivant un service
Internet et l'ensemble numéro de port / protocole utilisé.
Chaque programme réseau devrait consulter ce fichier pour obtenir le numéro de port et le protocole
sous-jacent au service qu'il fournit.
Les fonctions de la bibliothèque C getservent(3), getservbyname(3), getservbyport(3), setservent(3), et endservent(3)
permettent d'interroger ce fichier depuis un programme.
Les numéros de ports sont affectés par le IANA (Internet Assigned Numbers Authority), et leur politique actuelle
consiste à assigner à la fois les protocoles TCP et UDP à chaque numéro de port.
Ainsi la plupart des services auront deux entrées, même si elles n'utilisent que le protocole TCP.
Les numéros de ports en-dessous de 1024 ne peuvent être assignés à une socket que par un programme
Super-User (voir bind(2), tcp(7), et udp(7).)
C'est ainsi que les clients se connectant sur ces ports de petits numéros peuvent être sûrs que le service correspondant
est une implémentassions standard et non pas le bricolage d'un utilisateur.
La présence d'une ligne indiquant un service dans le fichier services ne signifie pas
nécessairement que le service en question est disponible sur la machine.
Notez que tous les services réseau ne sont pas obligatoirement lancés par inetd ou xinetd, et
donc pas toujours dans xinetd.d ou inetd.conf.
En particulier les serveurs de News (NNTP) et de courrier (SMTP) sont souvent initialisés par le
système dans les scripts de démarrage.
Chaque ligne décrivant un service est de la forme
service-name port/protocole [alias ...]
voici un exemple simplifié des entrées dans /etc/services:
ftp-data 20/tcp # default ftp data port
ftp 21/tcp
ssh 22/tcp
ssh 22/udp
telnet 23/tcp
mail 25/tcp
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
pop3 110/tcp # POP version 3
pop3 110/udp
sftp 115/tcp
nntp 119/tcp readnews untp # USENET News Transfer Protocol
imap 143/tcp imap2 # Internet Message Access Proto
imap 143/udp imap2 # Internet Message Access Proto
irc 194/tcp # Internet Relay Chat
irc 194/udp
imap3 220/tcp # Interactive Mail Access
imap3 220/udp # Protocol v3
# new for imap ssl
imaps 993/tcp
pop3s 995/tcp
https 443/tcp # secure http (SSL)
nfsd 2049/udp nfs # NFS server
nfsd 2049/tcp nfs # NFS server
# Unofficial services
rsync 873/tcp # rsync server
mysql 3306/tcp # MySQL
pserver 2401/tcp
Sudo permet à un utilisateur d'exécuter une commande
en tant que super-utilisateur (ou autre), comme il l'a été spécifié
dans le fichier /etc/sudoers.
Par défaut il sera demander le mot de passe de l'utilisateur,
mais il reste possible de le désactiver comme on peut le voir dans l'exemple
suivant:
# User privilege specification |
root ALL=(ALL) ALL |
# %wheel ALL=(ALL) ALL |
# Same thing without a password |
# %wheel ALL=(ALL) NOPASSWD: ALL |
seb ALL=(ALL) NOPASSWD: ALL |
|
|
|
Remarque : sudo est un programme facilitant les commandes ``super-utilisateur''
néanmoins c'est un programme SUID dangereux. Qui a fait récemment
l'objet d'une faille de sécurité via buffer-overflow.
|
|
|
|
|