La commande setfacl dans Linux

La commande setfacl dans Linux
«Ce didacticiel explique comment utiliser la commande setfacl pour définir les autorisations ACL (Liste de contrôle d'accès).

Les listes de contrôle d'accès (ACL) nous permettent de gérer les autorisations avec des options supplémentaires que celles offertes par les autorisations POSIX (autorisation courante que nous gérons avec le chod commande).

En lisant ce tutoriel, vous apprendrez le plus important setfacl Options connexes.

Ce document est optimisé pour les deux utilisateurs à la recherche rapide setfacl Instructions à mettre en œuvre et pour les utilisateurs qui ne connaissent pas ACL, qui peuvent trouver tout le contenu théorique nécessaire nécessaire pour le comprendre après la section pratique. J'ai également ajouté un tableau résumant le setfacl Options de commande décrites ci-dessous.

Tous les exemples inclus dans cet article contiennent des captures d'écran, ce qui permet à chaque utilisateur de Linux de les comprendre facilement."

Les options de commande setfacl

Avant de commencer par le setfacl Commande, vérifions les autorisations actuelles du fichier nommé . Pour vérifier les autorisations ACL actuelles, exécutez le getfacl commande à l'aide de la syntaxe suivante:

getfacl

Dans mon cas, j'exécute la commande affichée dans la capture d'écran ci-dessous.

Fichier GetFacl1

Comme vous pouvez le voir dans la capture d'écran ci-dessus, le fichier a des autorisations POSIX standard pour le propriétaire appelé linuxhint (lecture et écriture), pour le linuxhint groupe (lecture), et pour les autres (lecture). L'utilisateur et le groupe sont linuxhint.

Ce sont les autorisations que nous appliquons en utilisant le chod Commande, qui nous permet de définir des autorisations pour le propriétaire, le groupe et autres.

Disons maintenant que nous voulons ajouter des autorisations personnalisées pour un autre utilisateur spécifique en utilisant les autorisations étendues ACL.

Dans l'exemple ci-dessous, j'accorderai des autorisations de lecture, d'écriture et d'exécution sur le même fichier à l'utilisateur linuxhint2. Ensuite, je cours getfacl encore pour vérifier les modifications.

setfacl -m u: linuxhint2: fichier rwx1

Où:

  • setfacl: Invoque le programme pour gérer les autorisations.
  • -m: Ce drapeau est utilisé pour modifier les autorisations.
  • U: LinuxHint2: RWX: Spécifie l'utilisateur linuxhint2 (U: Linuxhint2) et lui donne des autorisations de lecture, d'écriture et d'exécution (: RWX).
  • fichier1: Le fichier cible dans lequel les autorisations sont modifiées / appliquées.

NOTE: Comme vous pouvez le voir dans la capture d'écran précédente, en plus des autorisations régulières, nous pouvons voir un nouvel utilisateur (linuxhint2) avec des autorisations personnalisées a été ajoutée, et une nouvelle ligne appelée masque; Cela sera expliqué plus tard ci-dessous.

Mais maintenant, supposons que nous voulons accorder des autorisations à un autre groupe au lieu d'un autre utilisateur. La syntaxe est presque la même, à l'exception du u: option, qui doit être remplacée par g: Comme je l'ai montré dans la figure suivante, où le groupe linuxhint3 est accordé des autorisations de lecture et d'écriture. Puis je cours getfacl Pour vérifier les modifications.

setfacl -m g: linuxhint3: fichier rw1

Comme vous pouvez le voir, un nouveau groupe (linuxhint3) a été ajouté avec des autorisations de lecture et d'écriture.

Maintenant, expliquons le masque ligne qui est apparue après avoir demandé des autorisations de LCA étendues.

Le masque Permet des autorisations d'écrasement pour les utilisateurs, les groupes ou autres, à l'exception du propriétaire. Si le masque est r, Les utilisateurs, les groupes et autres (tout le monde sauf le propriétaire) avec des autorisations de rédaction ou d'exécution efficaces précédentes les perdront. La limite de masque affecte tous les utilisateurs à l'exception du propriétaire. C'est une fonction pour écraser les autorisations existantes, les limiter ou les augmenter.

Pour modifier le masque, vous n'avez pas besoin de spécifier des utilisateurs ou des groupes; Spécifiez simplement le masque suivi des autorisations en utilisant M: Comme indiqué dans l'exemple suivant.

setfacl -m m: R Fichier1

Comme vous pouvez le voir, après avoir établi un masque avec une limite de lecture, la linuxhint2 Utilisateur, qui avait auparavant des autorisations de lecture, d'écriture et d'exécution, et le groupe linuxhint3, qui ont eu des autorisations de lecture et d'écriture, maintenant seulement la lecture de l'autorisation efficace. La limite de lecture du masque a subi une autorité précédente. Seules les autorisations du propriétaire restent intactes.

Mais si le masque est défini pour lire les autorisations et que vous accordez un utilisateur, un groupe ou d'autres plus que des autorisations de lecture, le masque sera automatiquement modifié, augmentant sa limite en fonction des autorisations nouvellement accordées. Par défaut, la limite de masque ne peut pas être inférieure à une autorisation existante accordée à autre que le propriétaire (nous verrons comment empêcher cela plus tard ci-dessous).

Cela signifie que si le masque est réglé sur r (Lecture), et j'accorde à un utilisateur des autorisations d'écriture et d'exécution supplémentaires (RWX), le masque deviendra rwx.

Tout d'abord, voyons notre scénario actuel, où se trouve le masque r- (Seule autorisation de lecture).

Maintenant, voyons ce qui se passe si j'ajoute des autorisations d'exécution et d'écriture pour l'utilisateur linuxhint2, qui n'a actuellement que des autorisations de lecture efficaces (comme tout le monde sauf le propriétaire).

setfacl -m u: linuxhint2: fichier rwx1

Comme vous pouvez le voir, non seulement le linuxhint2 Les autorisations des utilisateurs ont été mises à jour, mais le masque aussi. En effet, par défaut, le masque représente une limite, et si la limite est dépassée par une nouvelle commande, elle augmente.

Vous pouvez avoir des autorisations de masque spécifiques et accorder des autorisations supplémentaires à un utilisateur, un groupe ou d'autres personnes sans obtenir le masque modifié en implémentant le drapeau -N.

Le -n Flag demande à ACL de garder le masque inchangé, même si certaines autorisations le dépassent.

Voyons le nouveau scénario, où le masque est réglé pour r-

Dans l'exemple ci-dessous, l'utilisateur linuxhint2 reçoit des autorisations d'écriture et d'exécution, mais le -n Le drapeau est mis en œuvre pour empêcher le changement de masque.

Comme vous pouvez le voir ci-dessous, le linuxhint2 L'utilisateur a reçu des droits d'écriture et d'exécution, mais le masque reste inchangé comme indiqué par le -n drapeau.

setfacl -n -m u: linuxhint2: wx file1

Le -d Le drapeau est utilisé pour définir les autorisations par défaut pour le contenu d'un répertoire. Ce drapeau n'affecte pas les autorisations du répertoire mais seulement le contenu, y compris les fichiers et les sous-répertoires.

Cet drapeau peut être utile, par exemple, pour créer des autorisations par défaut pour un utilisateur ou un groupe spécifique sur le contenu du répertoire. Lorsque de nouveaux fichiers sont créés à l'intérieur de ce répertoire, les utilisateurs ou groupes définis obtiennent leurs autorisations définies par défaut.

Dans le scénario actuel, il y a un répertoire avec les autorisations suivantes.

Dans l'exemple ci-dessous, Autre (Tous les utilisateurs qui ne sont pas propriétaires ou groupes) seront donnés comme autorisations de lecture par défaut pour le contenu du répertoire appelé «annuaire."

setfacl -d -m o: r répertoire

Comme vous pouvez le voir dans la capture d'écran ci-dessus, les autorisations par défaut pour l'utilisateur et le groupe restent, tandis que les autorisations par défaut Autre ont été changés en lecture uniquement. Maintenant, si de nouveaux fichiers et sous-répertoires sont créés dans le «annuaire,«D'autres recevront des autorisations de lecture par défaut.

Le -R Le drapeau vous permet d'appliquer les règles de LCA récursivement. Quand -R est implémenté, les autorisations définies affecteront le répertoire spécifié et tous ses fichiers et sous-répertoires. Ce drapeau est présent dans de nombreuses commandes Linux pour les tâches récursives.

La commande suivante donne Autre Autorisations de lecture et d'écriture pour répertoire1 récursivement.

setfacl -r -m o: RW Directory1

ACL vous permet de restaurer les autorisations plus tard.

Dans l'image suivante, la commande getfacl est utilisée pour faire une sauvegarde récursive du «annuaire"À un fichier nommé"aclpermissions.SMS."

répertoire getfacl -r> aclpermissions.SMS

Pour restaurer la sauvegarde, utilisez le -restaurer option suivie de =

Dans mon cas:

setfacl --restore = aclpermissions.SMS

Vous pouvez également utiliser la commande setfacl pour copier les autorisations d'un fichier à un autre.

Le scénario actuel de l'inventaire des fichiers est le suivant:

Dans l'exemple suivant, je copie les autorisations de fichier1 à un fichier nommé "inventaire."

getfacl file1 | setfacl --set-file = - inventaire

Qu'est-ce qu'un ACL (liste de contrôle d'accès)

Un ACL est un système d'autorisations natifs de Windows pour gérer l'accès à des ressources comme les fichiers, les répertoires, les partitions, etc. Ce système est basé sur des objets auxquels les autorisations sont définies pour les utilisateurs, les groupes et autres, y compris individuellement, comme indiqué ci-dessus.

Les autorisations sont jointes au fichier, un répertoire ou un système de fichiers défini définissant l'accès pour le propriétaire, les utilisateurs, les groupes ou autres.

Différence entre ACL et autorisation POSIX

Alors qu'avec des autorisations POSIX, les utilisateurs peuvent gérer les autorisations pour le propriétaire, le groupe et d'autres, ACL permet la gestion des autorisations personnalisées pour tout le monde, y compris les utilisateurs et les groupes.

De plus, ACL implémente de nouveaux types d'autorisations, comme les autorisations par défaut expliquées dans ce tutoriel.

Cela apporte une flexibilité que nous ne pouvons pas apprécier avec des autorisations POSIX régulières. Pourtant, comme vous pouvez le voir, ils travaillent tous les deux en combinaison, et leur combinaison apporte une forte structure d'autorisations.

La commande setfacl est utilisée pour définir les autorisations ACL sur les fichiers, les répertoires et les systèmes de fichiers.
Ceci est utilisé pour spécifier des fichiers, des répertoires, des utilisateurs, des groupes ou d'autres avec les autorisations souhaitées lorsqu'ils doivent rompre. Le propriétaire de la ressource et les processus avec CAP_FOWNER ont le droit de modifier les autorisations ACLS.

Le tableau ci-dessous résume certaines options de LCA

Options FONCTION
-m Modifier ACL
-X Retirez tous les ACLRemove ACL
-b Supprimer tous les ACL
-k Supprimer les autorisations par défaut
-R Applique ACL récursivement
-L Suit les liens symboliques
-P Ne suit pas les liens symboliques
M: Définir le masque
-restaurer = Restaure ACL à partir d'un fichier de sauvegarde créé avec getfacl -R
-test N'applique pas de modifications mais affiche le résultat
-n N'affecte pas le masque

Vous pouvez trouver beaucoup plus d'informations sur ACL et la commande setfacl sur https: // linux.mourir.net / man / 5 / acl et https: // linux.mourir.net / man / 1 / setfacl.

Conclusion

Comme vous pouvez le voir, ACL permet aux utilisateurs de personnaliser les autorisations sur les limites du système d'autorisations POSIX. Ceci est extrêmement utile lorsque les ressources doivent être partagées avec des types d'accès spécifiques. Comme vous pouvez le voir, ACL est facile à comprendre et à mettre en œuvre et peut être appris par n'importe quel utilisateur Linux indépendamment de son niveau de connaissance. L'ACL est une exception historique dans laquelle Linux a importé une fonctionnalité de Windows. Vous pouvez obtenir des informations supplémentaires sur ACL sur la page Man.

Merci d'avoir lu ce tutoriel expliquant comment utiliser la commande setfacl dans Linux. Continuez à suivre notre blog pour un contenu Linux plus professionnel.