GNU/Linux >> Tutoriels Linux >  >> Linux

Autorisations Linux :SUID, SGID et sticky bit

Les autorisations Linux sont un concept auquel chaque utilisateur se familiarise intimement au début de son développement. Nous devons exécuter des scripts, modifier des fichiers et exécuter des processus afin d'administrer efficacement les systèmes, mais que se passe-t-il lorsque nous voyons Autorisation refusée ? Savez-vous pourquoi nous voyons ce message ? Si vous connaissez la cause du problème, savez-vous comment mettre en œuvre la solution ?

Je donnerai une explication rapide des différentes manières de calculer les autorisations, puis nous nous concentrerons sur les autorisations spéciales sous Linux. Si vous voulez un examen approfondi du chmod commande, consultez cet article de Sudoer Shashank Hegde, Linux permissions:An introduction to chmod.

Le TL;DR est qu'il existe deux manières principales d'attribuer des autorisations.

Méthode symbolique

La méthode symbolique utilise la syntaxe suivante :

[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory

Où :

  • Qui - représente les identités :u,g,o,a (utilisateur, groupe, autre, tous)
  • Quoi - représente les actions :+, -, =(ajouter, supprimer, définir exactement)
  • Lequel - représente les niveaux d'accès :r, w, x (lecture, écriture, exécution)

Un exemple de ceci est si je veux ajouter le lire et écrire autorisations sur un fichier nommé test.txt pour utilisateur et groupe , j'utilise la commande suivante :

[tcarrigan@server ~]$ chmod ug+rw test.txt

Divulgation complète, ce n'est pas ma méthode préférée d'attribution des autorisations, et si vous souhaitez plus d'informations sur cette méthode, je vous recommande votre moteur de recherche le plus proche.

Méthode numérique

La méthode numérique est, selon mon expérience, la meilleure façon d'apprendre et de pratiquer les autorisations. Il est basé sur la syntaxe suivante :

[tcarrigan@server ~]$ chmod ### file | directory

Ici, de gauche à droite, le caractère # représente un niveau d'accès. Il existe trois niveaux d'accès :utilisateur, groupe et autres. Pour déterminer à quoi correspond chaque chiffre, nous utilisons ce qui suit :

  • Commencer à 0
  • Si le lire l'autorisation doit être définie, ajoutez 4
  • Si le écrire l'autorisation doit être définie, ajoutez 2
  • Si le exécuter l'autorisation doit être définie, ajoutez 1

Ceci est calculé par niveau d'accès. Interprétons cet exemple d'autorisation :

-rw-r-x---

Les autorisations sont représentées par 650 . Comment suis-je arrivé à ces chiffres ?

  • Les autorisations de l'utilisateur sont :rw- ou 4+2=6
  • Les autorisations du groupe sont :r-x ou 4+1=5
  • Les autorisations des autres sont :--- ou 0

Pour mettre cela dans la syntaxe de la commande, cela ressemble à ceci :

[tcarrigan@server ~]$ chmod 650 test.txt

Maintenant que vous comprenez les bases du calcul des autorisations sous Linux, examinons les autorisations spéciales inclus dans le système d'exploitation.

[ Vous pourriez également aimer : Une introduction aux listes de contrôle d'accès (ACL) Linux ]

Autorisation spéciale expliquée

Les autorisations spéciales constituent un quatrième niveau d'accès en plus de l'utilisateur , groupe , et autre . Les autorisations spéciales permettent des privilèges supplémentaires par rapport aux ensembles d'autorisations standard (comme leur nom l'indique). Il existe une option d'autorisation spéciale pour chaque niveau d'accès évoqué précédemment. Examinons chacun d'eux individuellement, en commençant par Définir l'UID :

utilisateur + s (spécial)

Communément noté SUID , l'autorisation spéciale pour le niveau d'accès utilisateur a une seule fonction :un fichier avec SUID s'exécute toujours en tant qu'utilisateur propriétaire du fichier, quel que soit l'utilisateur qui transmet la commande. Si le propriétaire du fichier ne dispose pas des autorisations d'exécution, utilisez un S majuscule ici.

Maintenant, pour voir cela sous un jour pratique, regardons le /usr/bin/passwd commande. Cette commande, par défaut, a l'ensemble d'autorisations SUID :

[tcarrigan@server ~]$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 Dec 13  2019 /usr/bin/passwd

Notez les sx indiquerait généralement les autorisations d'exécution pour l'utilisateur.

groupe + s (spécial)

Communément noté SGID , cette autorisation spéciale a plusieurs fonctions :

  • Si défini sur un fichier, il permet au fichier d'être exécuté en tant que groupe propriétaire du fichier (similaire à SUID)
  • Si défini sur un répertoire, tous les fichiers créés dans le répertoire auront leur groupe propriété définie sur celle du propriétaire du répertoire
[tcarrigan@server article_submissions]$ ls -l 
total 0
drwxrws---. 2 tcarrigan tcarrigan  69 Apr  7 11:31 my_articles

Cet ensemble d'autorisations est indiqué par un s minuscule où le x indiquerait normalement exécuter privilèges pour le groupe . Il est également particulièrement utile pour les répertoires qui sont souvent utilisés dans les efforts de collaboration entre les membres d'un groupe. Tout membre du groupe peut accéder à n'importe quel nouveau fichier. Cela s'applique également à l'exécution des fichiers. SGID est très puissant lorsqu'il est utilisé correctement.

Comme indiqué précédemment pour SUID , si le groupe propriétaire n'a pas d'autorisations d'exécution, alors un S majuscule est utilisé.

autre + t (collant)

La dernière autorisation spéciale a été surnommée le "morceau collant". Cette autorisation n'affecte pas les fichiers individuels. Cependant, au niveau du répertoire, il limite la suppression des fichiers. Seul le propriétaire (et racine ) d'un fichier peut supprimer le fichier dans ce répertoire. Un exemple courant de ceci est le /tmp répertoire :

[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

L'ensemble d'autorisations est signalé par la lettre minuscule t , où le x indiquerait normalement le privilège d'exécution.

Définir des autorisations spéciales

Pour définir des autorisations spéciales sur un fichier ou un répertoire, vous pouvez utiliser l'une des deux méthodes décrites ci-dessus pour les autorisations standard :symbolique ou numérique.

Supposons que nous voulons définir SGID sur le répertoire community_content .

Pour ce faire en utilisant la méthode symbolique, nous procédons comme suit :

[tcarrigan@server article_submissions]$ chmod g+s community_content/

En utilisant la méthode numérique, nous devons passer un quatrième chiffre précédent dans notre chmod commande. Le chiffre utilisé est calculé de la même manière que les chiffres d'autorisation standard :

  • Commencer à 0
  • SUID =4
  • SGID =2
  • Collant =1

La syntaxe est :

[tcarrigan@server ~]$ chmod X### file | directory

est le chiffre des autorisations spéciales.

Voici la commande pour définir SGID sur community_content en utilisant la méthode numérique :

[tcarrigan@server article_submissions]$ chmod 2770 community_content/
[tcarrigan@server article_submissions]$ ls -ld community_content/
drwxrws---. 2 tcarrigan tcarrigan 113 Apr  7 11:32 community_content/

[ Téléchargement gratuit :Aide-mémoire sur les commandes avancées de Linux. ] 

Résumé

En conclusion, les autorisations sont d'une importance fondamentale pour être un administrateur Linux efficace. Il existe deux manières définies de définir des autorisations à l'aide de chmod commande :Symbolique et numérique. Nous avons examiné la syntaxe et les calculs requis pour les deux méthodes. Nous avons également considéré les autorisations spéciales et leur rôle dans le système. Maintenant que vous comprenez les autorisations et les concepts sous-jacents, vous pouvez résoudre le toujours ennuyeux Autorisation refusée erreur lorsqu'il essaie d'entraver votre travail.


Linux
  1. Comment copier les autorisations et la propriété des fichiers dans un autre fichier sous Linux

  2. Qu'est-ce que Sticky Bit, SUID et SGID sous Linux

  3. Linux - Exécuter Vs Lire Bit. Comment fonctionnent les autorisations de répertoire sous Linux ?

  4. Linux – Suid n'a aucun effet sur les répertoires avec Linux ?

  5. Linux Sticky Bit Concept expliqué avec des exemples

Un guide du débutant sur les autorisations Linux

Autorisations et propriété des fichiers Linux expliquées avec des exemples

Autorisations de fichiers spéciales sous Linux :SUID, GUID et Sticky Bit

Autorisations de base du répertoire Linux et comment les vérifier

Comprendre les autorisations de fichiers de base et la propriété sous Linux

Bit d'exécution vs de lecture. Comment fonctionnent les autorisations de répertoire sous Linux ?