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 s où x 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
Où X 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.