We currently migrate to MediaWiki from our old installation, but not all content has been migrated yet. Take a look at the Wiki Team page for instructions how to help or browse through our new wiki at wiki.linux-vserver.org to find the information already migrated.
Les noyaux Linux récents fournissent déjà de nombreuses fonctions de sécurité qui sont utilisées par Linux-Vserver pour fonctionner, telles que le Système de Capacités Linux, les limites de ressource, les attributs de fichier et l'environnement chroot. Les sections suivantes vous donneront un court aperçu de chacune d'entre elles.
En science informatique, une capacité est un jeton utilisé par un processus pour prouver qu'il est autorisé à faire une opération sur un objet. Le Système de Capacités Linux est basé sur les "Capacités POSIX", un concept légèrement similaire, conçu pour diviser les privilèges root puissants en un ensemble de privilèges distincts.
Un processus possède trois champs de bits appelés les capacités héritables (I - "Inheritable"), permises (P), et effectives (E). Chaque capacité est implémentée dans un bit de chacun de ces champs, bit qui est soit défini soit non-défini.
Quand un processus essaie de faire une opération privilégiée, le système d'exploitation va vérifier les bits appropriés dans l'ensemble effectif des processus (au lieu de vérifier si l'uid respectif du processus est 0 comme il le fait habituellement).
Par exemple, quand un processus essaie de modifier l'horloge, le noyau Linux va vérifier que ce processus a le bit CAP_SYS_TIME (actuellement le bit 25) parmi ses capacités effectives.
L'ensemble permis d'un processus indique les capacités que celui-ci peut utiliser. Le processus peut avoir des capacités définies dans l'ensemble permis qui ne sont pas dans l'ensemble effectif.
Ceci indique que le processus a temporairement désactivé cette capacité. Un processus n'est autorisé à définir un bit dans son ensemble effectif que si ce bit est disponible dans son ensemble permis.
La distinction entre capacités effectives et permises existe pour que les processus puissent réaliser des opérations qui nécessitent des privilèges.
Les capacités héritables sont les capacités du processus courant qui peuvent être héritées par un programme exécuté par ce dernier. L'ensemble permis d'un processus est masqué contre l'ensemble héritable pendant exec().
Rien de spécial ne se produit durant fork() ou clone().
Les processus fils ou les threads obtiennent une copie exacte des capacités du processus parent.
L'implémentation dans Linux s'arrête là, alors que les capacités POSIX[U5] requièrent l'ajout d'un ensemble de capacités aux fichiers, pour remplacer le flag SUID (au moins pour les exécutables).
La liste des capacités POSIX utilisées avec Linux est longue, et les 32 bits disponibles sont presques tous utilisés. Bien que la liste détaillée de ces capacités puisse être trouvée dans /usr/include/linux/capability.h sur la plupart des systèmes Linux, une vue d'ensemble des capacités importantes est donnée ici.
Voir également les Exemples [E01],[E02], et [E03].
Vous pouvez limiter les ressources de chaque processus en spécifiant une limite pour chaque ressource. A la manière des capacités Linux, il existe deux types de limites, l'une Douce, l'autre Dure.
La limite Douce est la valeur que le noyau imposera pour cette ressource à un processus. Un utilisateur non privilégié pourra régler la limite Douce n'importe où en dessous de la valeur Dure. Seul l'utilisateur root pourra re-hausser la limite Dure.
La liste des ressources qui peuvent être limitées se trouve dans le fichier /usr/include/asm/resource.h sur la plupart des systèmes Linux.
Voir aussi les Exemples [E11], et [E12].
Auparavant, cette fonctionnalité n'était disponible qu'avec ext2, mais maintenant tous les systèmes de fichiers majeurs implémentent un ensemble d'Attributs de fichiers de base, qui permettent le paramétrage de certaines propriétés. Voici de nouveau un bref aperçu des possibilités des attributs, et leur signification.
Voir aussi les Exemples [E13] et [E14].
chroot permet de lancer une commande en changeant le répertoire racine dans lequel il va s'éxécuter. Cela signifie que tout parcours du système de fichiers à partir de la racine '/' se fera à partir de la racine substituée et non pas à partir de la racine originelle.
Bien que le chroot Linux n'est pas très sécurisé, son utilisation augmente l'isolation des processus par rapport au système de fichier, et, à condition de l'utiliser correctement, peut être utilisé pour "emprisonner" un processus, un utilisateur unique, ou un démon (service).
Voir l'Exemple [E15]