Comment définir les listes de contrôle d'accès (ACL) et les quotas de disque pour les utilisateurs et les groupes

Comment définir les listes de contrôle d'accès (ACL) et les quotas de disque pour les utilisateurs et les groupes

Les listes de contrôle d'accès (également appelées ACL) sont une caractéristique du noyau Linux qui permet de définir des droits d'accès plus fins pour les fichiers et les répertoires que ceux spécifiés par régulier UGO / RWX autorisation.

Par exemple, la norme UGO / RWX Les autorisations ne permettent pas de définir différentes autorisations pour différents utilisateurs ou groupes individuels. Avec ACLS, c'est relativement facile à faire, comme nous le verrons dans cet article.

Vérification de la compatibilité du système de fichiers avec ACLS

Pour vous assurer que vos systèmes de fichiers prennent actuellement en charge les ACL, vous devez vérifier qu'ils ont été montés à l'aide de l'option ACL. Pour ce faire, nous utiliserons Tune2fs pour les systèmes de fichiers ext2 / 3/4 comme indiqué ci-dessous. Remplacer / dev / sda1 avec l'appareil ou le système de fichiers que vous souhaitez vérifier:

# Tune2fs -l / dev / sda1 | Grep "Options de montage par défaut:" 

Note: Avec XFS, Les listes de contrôle d'accès sont prises en charge de la boîte.

Dans ce qui suit ext4 Système de fichiers, nous pouvons voir que les ACL ont été activés pour / dev / xvda2:

# Tune2fs -l / dev / xvda2 | Grep "Options de montage par défaut:" 
Vérifier ACL activé sur le système de fichiers Linux

Si la commande ci-dessus n'indique pas que le système de fichiers a été monté avec la prise en charge des ACL, il est très probablement dû au noaCl L'option étant présente dans / etc / fstab.

Dans ce cas, supprimez-le, déshabillez le système de fichiers, puis montez à nouveau, ou redémarrez simplement votre système après avoir enregistré les modifications à / etc / fstab.

Présentation des ACL dans Linux

Pour illustrer le fonctionnement des ACL, nous utiliserons un groupe nommé développeurs et ajouter des utilisateurs Walter White et Saulgoodman (Oui, je suis un fan de Breaking Bad!) à lui.:

# GroupAdd Developers # UserAdd Walterwhite # UserAdd Saulgoodman # Usermod -a -g Développeurs Walterwhite # Usermod -a -g Développeurs Saulgoodman 

Avant de continuer, vérifions que les deux utilisateurs ont été ajoutés au groupe de développeurs:

# id walterwhite # id Saulgoodman 
Trouver l'ID utilisateur dans Linux

Créons maintenant un répertoire appelé test dans / mnt, et un fichier nommé ACL.SMS à l'intérieur (/ mnt / test / ACL.SMS).

Ensuite, nous définirons le propriétaire du groupe sur développeurs et changer son défaut UGO / RWX autorisation récursive pour 770 (Afforçant ainsi lire, écrire et exécuter les autorisations accordées à la fois au propriétaire et au propriétaire du groupe du dossier):

# mkdir / mnt / test # touch / mnt / test / ACL.TXT # CHGRP -R Développeurs / Mnt / Test # Chmod -R 770 / Mnt / Test 

Comme prévu, vous pouvez écrire à / mnt / test / ACL.SMS comme Walter White ou Saulgoodman:

# su - Walterwhite # echo "Mon nom est Walter White"> / mnt / test / ACL.txt # exit # su - Saulgoodman # echo "Mon nom est Saul Goodman" >> / mnt / test / ACL.TXT # Exit 
Vérifiez les règles ACL sur les utilisateurs

Jusqu'ici, tout va bien. Cependant, nous verrons bientôt un problème lorsque nous aurons besoin d'accorder un accès à l'écriture à / mnt / test / ACL.SMS pour un autre utilisateur qui n'est pas dans le groupe de développeurs.

Standard UGO / RWX Les autorisations exigeraient que le nouvel utilisateur soit ajouté au groupe des développeurs, mais cela lui donnerait les mêmes autorisations sur tous les objets appartenant au groupe. C'est précisément là que les ACL sont utiles.

Définition des ACL dans Linux

Il existe deux types d'ACL: accéder aux ACL sont (qui sont appliqués à un fichier ou à un répertoire), et ACLS par défaut (facultatif), qui ne peut être appliqué qu'à un répertoire.

Si les fichiers dans un répertoire où un ACL par défaut a été défini n'a pas de LCA propre, ils héritent de l'ACL par défaut de leur répertoire parent.

Donnons à l'utilisateur gacanepa lire et écrire un accès à / mnt / test / ACL.SMS. Avant de le faire, jetons un coup d'œil aux paramètres actuels de la LCA dans ce répertoire avec:

# getfacl / mnt / test / ACL.SMS 

Modifiez ensuite les ACL sur le fichier, utilisez u: suivi du nom d'utilisateur et : RW Pour indiquer les autorisations de lecture / écriture:

# setfacl -m u: gacanepa: rw / mnt / test / ACL.SMS 

Et courir getfacl sur le fichier à nouveau pour comparer. L'image suivante montre le "Avant" et "Après":

# getfacl / mnt / test / ACL.SMS 
Définir ACL sur les utilisateurs de Linux

Ensuite, nous devrons donner à d'autres autorisations d'exécution aux autres sur le / mnt / test annuaire:

# chmod + x / mnt / test 

Gardez à l'esprit que pour accéder au contenu d'un répertoire, un utilisateur régulier a besoin d'exécuter des autorisations sur ce répertoire.

Utilisateur gacanepa devrait maintenant pouvoir écrire dans le fichier. Passez à ce compte utilisateur et exécutez la commande suivante pour confirmer:

# echo "Mon nom est Gabriel Cánepa" >> / mnt / test / ACL.SMS 

Pour définir un ACL par défaut sur un répertoire (que son contenu héritera à moins que d'éclairer autrement), ajouter d: Avant la règle et spécifiez un répertoire au lieu d'un nom de fichier:

# setfacl -m d: o: r / mnt / test # getfacl / mnt / test / 

L'ACL ci-dessus permettra aux utilisateurs non dans le groupe de propriétaires d'avoir lu l'accès au contenu futur du / mnt / test annuaire. Notez la différence de sortie de getfacl / mnt / test avant et après le changement:

Définir ACL par défaut sur le répertoire Linux

Pour supprimer un ACL spécifique, remplacez -m dans les commandes ci-dessus avec -X. Par exemple,

# setfacl -x d: o / mnt / test 

Alternativement, vous pouvez également utiliser le -b Option pour supprimer tous les ACL en une seule étape:

# setfacl -b / mnt / test 

Pour plus d'informations et d'exemples sur l'utilisation des ACL, veuillez vous référer à chapitre 10, section 2, du guide de sécurité OpenSuse (également disponible en téléchargement sans frais au format PDF).

Définissez les quotas de disque Linux sur les utilisateurs et les systèmes de fichiers

L'espace de stockage est une autre ressource qui doit être soigneusement utilisée et surveillée. Pour ce faire, les quotas peuvent être définis sur une base système de fichiers, soit pour les utilisateurs individuels, soit pour les groupes.

Ainsi, une limite est fixée à l'utilisation du disque autorisée pour un utilisateur donné ou un groupe spécifique, et vous pouvez être assuré que vos disques ne seront pas remplis de capacité par un utilisateur insouciant (ou malhentisé).

La première chose que vous devez faire pour activer les quotas sur un système de fichiers est de le monter avec les options USRQUOTA ou Grpquota (pour l'utilisateur et de groupe, respectivement) dans / etc / fstab.

Par exemple, activons les quotas utilisateur sur / dev / vg00 / vol_backups et quotas en groupe sur / dev / vg00 / vol_projects.

Notez que le Uuid est utilisé pour identifier chaque système de fichiers.

UUID = F6D1EBA2-9AED-40EA-99AC-75F4BE05C05A / HATER 

Démouter et remonter les deux systèmes de fichiers:

# umount / home / projets # Umount / Home / Backups # Mount -o Remount / Home / Projets # Mount -O Remount / Home / Backups 

Vérifiez ensuite que les options USRQUOTA et Grpquota sont présentes dans la sortie du mont (voir en surbrillance ci-dessous):

# Mount | grep vg00 
Vérifiez le quota utilisateur Linux et le quota de groupe

Enfin, exécutez les commandes suivantes pour initialiser et activer les quotas:

# quotacheck -avugc # quotaon -vu / home / backups # quotaon -vg / home / projets 

Cela dit, attribuons maintenant des quotas au nom d'utilisateur et au groupe que nous avons mentionné plus tôt. Vous pouvez plus tard désactiver les quotas avec quotaoff.

Définition des quotas de disque Linux

Commençons par définir un ACL sur / Home / Backups pour l'utilisateur gacanepa, qui lui donnera lire, écrire et exécuter des autorisations sur ce répertoire:

# setfacl -m u: gacanepa: rwx / home / backups / 

Alors avec,

# Edquota -u gacanepa 

Nous ferons le doux limite = 900 Et le dur limite = 1000 blocs (1024 octets / bloc * 1000 blocs = 1024000 octets = 1 Mo) d'utilisation de l'espace disque.

Nous pouvons également placer une limite de 20 et 25 En tant que limites douces et dures sur le nombre de fichiers que cet utilisateur peut créer.

La commande ci-dessus lancera l'éditeur de texte ($ Éditeur) avec un fichier temporaire où nous pouvons définir les limites mentionnées précédemment:

Quota de disque Linux pour l'utilisateur

Ces paramètres entraîneront un avertissement à l'utilisateur gacanepa Quand il a atteint le 900 blocs ou 20 inode Limites pour une période de grâce par défaut de 7 jours.

Si la au-delà des quotas La situation n'a pas été éliminée d'ici là (par exemple, en supprimant les fichiers), la limite souple deviendra la limite dure et cet utilisateur ne sera pas empêché d'utiliser plus d'espace de stockage ou de créer plus de fichiers.

Pour tester, demandez à l'utilisateur gacanepa essayez de créer un vide 2 Mb dossier nommé test1 à l'intérieur / Home / Backups:

# dd if = / dev / zero of = / home / backups / test1 bs = 2m count = 1 # ls -lh / home / backups / test1 
Vérifiez le quota utilisateur Linux sur le disque

Comme vous pouvez le voir, le fichier d'opération d'écriture échoue en raison du fait que le quota de disque a été dépassé. Depuis seulement le premier 1000 Ko sont écrits sur disque, le résultat dans ce cas sera très probablement un fichier corrompu.

De même, vous pouvez créer un LCA pour les groupes de développeurs afin de donner aux membres de ce groupe RWX un accès à / Home / Projets:

# setfacl -m g: développeurs: rwx / home / projets / 

Et définir les limites du quota avec:

# Edquota -g développeurs 

Tout comme nous l'avons fait avec l'utilisateur gacanepa plus tôt.

La période de grâce peut être spécifiée pendant un certain nombre de secondes, minutes, heures, jours, semaines ou mois en exécutant.

# Edquota -T 

et mettre à jour les valeurs sous Bloquer la période de grâce et la période inode Grace.

Contrairement à l'utilisation de blocs ou d'Inode (qui sont définis sur un utilisateur ou un groupe de groupe), la période de grâce est à l'échelle du système.

Pour signaler des quotas, vous pouvez utiliser un quota -u [utilisateur] ou quota -g [groupe] pour une liste rapide ou repquota -v [/ path / to / filesystem] pour un rapport plus détaillé (verbeux) et bien formaté.

Bien sûr, vous voudrez remplacer [utilisateur], [groupe], et [/ path / vers / Système de fichiers] avec des noms utilisateur / groupe et un système de fichiers spécifiques que vous souhaitez vérifier.

Résumé

Dans cet article, nous avons expliqué comment définir Listes de contrôle d'accès et quotas de disque pour les utilisateurs et les groupes. En utilisant les deux, vous pourrez gérer plus efficacement les autorisations et l'utilisation du disque.

Si vous souhaitez en savoir plus sur les quotas, vous pouvez vous référer au Mini-Howto du quota dans le projet de documentation Linux.

Inutile de dire que vous pouvez également compter sur nous pour répondre aux questions. Soumettez-les simplement en utilisant le formulaire de commentaire ci-dessous et nous serons plus que heureux de jeter un œil.

Devenir un administrateur système certifié Linux