Le guide complet pour Maîtriser Sudoers.
qu’est-Ce que le Fichier Sudoers?
Le fichier Sudoers est comme n’importe quel autre fichier sur le système d’exploitation Linux., Mais il joue un rôle essentiel dans la gestion de ce qu’un « Utilisateur” ou des « utilisateurs d’un groupe” peuvent faire sur le système.
Pourquoi le nom Sudoers?
Le mot Sudo est l’abréviation du terme « Super User Do”. Comme il le suggère clairement – c’est comme dire au Noyau /OS » vous n’avez pas le choix, faites-le!”. Ainsi, les utilisateurs avec l’autorisation Sudo sont appelés en tant qu’utilisateurs Sudo. La gestion de tous ces utilisateurs sudo se fait via un fichier appelé fichier Sudoers. Ce fichier se trouve également dans le répertoire /etc, comme tout autre fichier de configuration.,
Pourquoi le fichier Sudoers?
Un utilisateur normal sous Linux aura de nombreuses restrictions dans le système. Par exemple, l’utilisateur ne pourra pas démarrer un service, modifier un fichier de configuration ou exécuter un script sur le système par défaut. Du point de vue de la sécurité, cela semble parfait.,
Mais, prenons un exemple d’ — vous en tant qu’administrateur du système à gérer les utilisateurs et leurs contrôles. Vous avez un site Web hébergé sur Apache dans l’un de vos serveurs. Vous avez déjà un administrateur Web pour le gérer. Un utilisateur doit être créé pour lui sur le serveur Web. Cet Utilisateur devrait être autorisé à faire deux choses qu’un utilisateur normal ne peut pas faire :
- Démarrer/Redémarrer le service Apache au cas où il s’arrêterait.
- Modifier le fichier de configuration d’Apache.
Vous avez deux options utilisateur par défaut:
- Utilisateur Root qui a toutes les autorisations sur le système, y compris Apache.,
- Un utilisateur normal, qui par défaut ne pourra pas démarrer un Service ou modifier des fichiers de configuration sur le système.
C’est à ce moment qu’un fichier sudoers vous sera utile. Dans le fichier Sudoers, nous pouvons définir exactement:
- L’utilisateur administrateur Web ne peut démarrer que le service Apache&
- Il ne peut éditer que le fichier de configuration Apache.
En jouant avec le fichier Sudoers
Assez de théorie, nous allons commencer à faire les choses réelles maintenant. Je vais expliquer chaque section dans le fichier Sudoers avec quelques exemples., Par défaut, un fichier Sudoers ressemble à ceci —
Principalement, nous pouvons voir cinq sections dans le fichier — les trois premières sections du fichier sont liées à ALIAS de l’hôte, Utilisateur et Cmnd., Nous parlerons d’ALIAS plus tard, parlons d’abord de la section de base :
#Spécification des privilèges utilisateur
root ALL = (ALL:ALL) ALL
Remarque: ‘#’ indique un commentaire dans le fichier, OS ignorera cette ligne lors de l’exécution.,
Syntaxe : nom d’Utilisateur: <espace> OnHost = (Runas-Utilisateur:Groupe) <espace> Commandes
Exemple: root ALL = (ALL:ALL) TOUS
Lire Utilisateur Root peut Exécuter n’Importe quelle Commande que n’Importe quel Utilisateur de n’Importe quel Groupe sur n’Importe quel Hôte.
→ Le premier est utilisé pour définir les HÔTES. Nous pouvons définir Hostname / Ip-Address au lieu de ALL. TOUS les moyens de n’importe quel hôte.
→ Deuxième TOUT: Troisième TOUT est Utilisateur: Groupe., Au lieu de TOUT, nous pouvons définir l’utilisateur ou l’utilisateur avec le groupe comme User:Group. TOUS: TOUS signifie Tous les utilisateurs et Tous les groupes.
→ Last ALL est la commande. Au lieu de TOUT, nous pouvons définir une commande ou un ensemble de commandes. TOUT signifie toutes les commandes.
Pour le dire très simplement, c’est”qui où = (as_whom) quoi ».
Remarque: La plupart des gens comprennent les HÔTES comme des HÔTES distants. C’est le NOM D’HÔTE LOCAL/ADRESSE IP., Champ HÔTES sera rarement utilisé, si vous voulez en savoir plus sur les HÔTES dans Sudoers veuillez vous référer → https://www.sudo.ws/man/1.7.10/sudoers.man.html
Fondamentalement, nous pouvons permettre à un utilisateur de faire quelque chose de deux façons seulement —
- Directement de lui donner l’autorisation d’exécuter la commande en modifiant les droits du fichier.
- lui Permettre d’exécuter la commande en tant qu’un autre utilisateur qui a déjà l’autorisation d’exécuter cette commande.
Dans le fichier Sudoers, nous allons implémenter ce dernier.,
Nous utiliserons un autre exemple pour comprendre clairement les champs de la syntaxe:
Exemple : sysadmin ALL = (root) /usr/bin/cat /etc/shadow
Lisez ceci en tant qu’utilisateur « sysadmin” peut Exécuter la commande « /usr/bin/cat /etc/shadow” en tant qu’utilisateur ROOT sur tous les HÔTES.
Ici, dans l’exemple ci-dessus, dans la section commande — j’ai ajouté quelque chose de plus qu’une commande, c’est pour montrer la flexibilité de Sudoers. La partie « / usr / bin / cat » est un exécutable binaire ou une commande utilisée pour afficher le contenu d’un fichier., La partie » / etc/shadow” est un fichier confidentiel qui stocke les mots de passe, cela signifie donc que l’utilisateur « sysadmin” ne peut exécuter « /usr/bin/cat” que sur le fichier « /etc / shadow”, si cet utilisateur essaie de voir le contenu de tout autre fichier sur lequel il n’a pas d’autorisations de lecture, il ne pourra pas.,
la Syntaxe de la commande Sudo: sudo <commande:>
Exemple: sudo cat /etc/shadow
Maintenant, si l’utilisateur « sysadmin” utilise sudo avant toute commande, OS va d’abord lui demander le Mot de passe des Utilisateurs, vérifie le mot de passe et puis s’en va à Sudoers, et vérifie si il est autorisé à émettre cette commande en tant qu’utilisateur. S’il est autorisé-succès, sinon il rapportera l’une de ces deux choses —
→ L’utilisateur n’est pas dans le fichier Sudoers. Cet incident sera signalé.,
Note : You can see this reported incident in /var/log/auth.log
→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>
Ici, l’utilisateur webadmin est uniquement autorisé à exécuter des « cat /etc/shadow”. Mais il a essayé d’exécuter la commande ‘ cat ‘ sur « / etc / gshadow », ce qui n’est pas autorisé.
Comme nous avons assez d’emprise sur les champs de la syntaxe du fichier Sudoers, avançons et comprenons les autres sections du fichier. Toutes les autres sections dépendront de la section de base dont nous avons déjà parlé.,
La section suivante est la section GROUP, qui est
#Permettre aux membres du groupe sudo d’exécuter n’importe quelle commande
%sudo ALL = (ALL:ALL) ALL
Le symbole percentile ‘%’ est utilisé pour représenter un groupe dans le fichier Sudoers. Tous les champs et leurs fonctionnalités dans cette section sont exactement les mêmes que ceux discutés dans la section précédente — la section utilisateur. Nous pouvons attribuer les mêmes Privilèges Sudo à un groupe au lieu d’un utilisateur en spécifiant le nom du groupe — %<nom du groupe>., Ainsi, tous les membres du groupe hériteront des mêmes privilèges accordés au groupe.
Par défaut, il existe un groupe SUDO défini dans le fichier Sudoers. Nous pouvons voir que ces autorisations sont exactement les mêmes que les autorisations des utilisateurs ROOT dans le fichier. Donc, si un utilisateur est membre de ce groupe SUDO, il peut exécuter toutes les commandes qu’un utilisateur ROOT peut exécuter.
Définissons un groupe personnalisé et comprenons la syntaxe plus clairement. Prenons le même ancien exemple d’administrateur système pour le faire. Assumer le pas. des employés sont plus maintenant, donc les administrateurs système sont 3 maintenant., Chacun d’entre eux ont besoin des mêmes autorisations exactes que celles que nous avions données au premier administrateur système. Une chose que nous pouvons faire pour y parvenir est d’avoir trois entrées pour les trois administrateurs système dans le fichier Sudoers. Si nous allons avec cette approche, nous insultons les capacités d’un fichier Sudoers.
La meilleure chose à faire est de regrouper les trois administrateurs système dans un groupe nommé ‘SystemAdminGroup’., Nous allons définir les autorisations requises sur ce groupe avec —
%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow
Maintenant, les trois administrateurs peuvent exécuter la commande Privileged. Nous l’avons fait en une seule fois en utilisant la définition de groupe.
Le fichier Sudoers est capable de rendre tout ce processus plus efficace en utilisant diverses fonctionnalités. Les trois premières sections — ALIAS sont utilisées pour y parvenir., Comme le mot le suggère déjà, nous utilisons un ALIAS pour quelque chose que nous pouvons utiliser dans tout le fichier, c’est comme une VARIABLE GLOBALE dans un Script. Comment cela rend-il le tout plus efficace? Nous pouvons définir un ensemble de commandes, d’hôtes et d’utilisateurs sur une seule ligne, nous attribuons cette ligne à un nom d’ALIAS, cet alias sera utilisé quand et où nécessaire sans définir toutes les commandes/hôtes/utilisateurs à nouveau.
Je veux inclure un ALIAS supplémentaire qui n’est pas répertorié dans le fichier Sudoers par défaut qui est « Run_as ALIAS”., Maintenant, nous avons quatre ALIAS —
- ALIAS d’utilisateur comme User_Alias
- Run-As ALIAS comme Runas_Alias
- ALIAS D’HÔTE comme Host_Alias
- ALIAS de commande comme Cmnd_Alias
Remarque : Le nom d’alias doit être défini en lettres majuscules et_). Le nom d’alias doit commencer par alphabet.,3e »>Nom d’ALIAS> = <nom d’utilisateur>,<nom d’utilisateur>/div>, <nom d’utilisateur> Example
Exemple: User_Alias SYSADMINS = john,tim,tom
Utilisation: SYSADMINS ALL = (root)/usr/bin /cat/etc/shadow
Si je veux définir un ensemble d’autorisations sudo pour les utilisateurs — john, tim et tom, je n’ai pas besoin de le définir trois fois, je peux plutôt définir un alias et utiliser ce nom d’alias tout en leur déléguant l’accès sudo.,
Run As ALIAS Syntax —
Runas_Alias <ALIAS Name> =<username>,<username>,<username>…
Example: Runas_Alias MGRS = root,sradmin
Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow
If i want to define the set of users a user can run a command as, i can use Runas_Alias., Ne soyez pas confus ici, rappelez — vous simplement le maître mantra-qui où = (as_whom) quoi. Nous utilisons un alias ici pour inclure no. des utilisateurs dans le champ « as_whom ».
Syntaxe d’ALIAS d’hôte —
Utilisation: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow
Si j’ai besoin de définir un ensemble de noms d’hôte, d’adresses ip ou de plages d’adresses ip sur lesquelles un utilisateur est autorisé à émettre les commandes Privileged / Sudo, je peux Encore une fois, cette partie appartient au champ « where” de la Phrase principale.