Recherche de site Web

Gestion des utilisateurs et des groupes, des autorisations et des attributs de fichiers et activation de l'accès sudo sur les comptes - Partie 8


En août dernier, la Linux Foundation a lancé la certification LFCS (Linux Foundation Certified Sysadmin), un tout nouveau programme dont le but est de permettre aux individus, partout et n'importe où, de passer un examen afin de obtenez une certification en support opérationnel de base à intermédiaire pour les systèmes Linux, qui comprend la prise en charge des systèmes et services en cours d'exécution, ainsi qu'une surveillance et une analyse globales, ainsi qu'une prise de décision intelligente pour pouvoir décider quand il est nécessaire de transmettre les problèmes aux équipes de support de niveau supérieur.

Veuillez jeter un coup d'œil rapide à la vidéo suivante qui décrit une introduction au programme de certification Linux Foundation.

Cet article est la partie 8 d'une longue série de 10 didacticiels. Dans cette section, nous vous guiderons sur la façon de gérer les autorisations des utilisateurs et des groupes dans le système Linux, qui sont requises pour l'examen de certification LFCS.

Puisque Linux est un système d'exploitation multi-utilisateurs (dans le sens où il permet à plusieurs utilisateurs sur différents ordinateurs ou terminaux d'accéder à un seul système), vous devrez savoir comment gérer efficacement les utilisateurs : comment ajouter, modifier, suspendre ou supprimer comptes d'utilisateurs, tout en leur accordant les autorisations nécessaires pour effectuer les tâches qui leur sont assignées.

Ajout de comptes d'utilisateurs

Pour ajouter un nouveau compte utilisateur, vous pouvez exécuter l'une des deux commandes suivantes en tant que root.

adduser [new_account]
useradd [new_account]

Lorsqu'un nouveau compte utilisateur est ajouté au système, les opérations suivantes sont effectuées.

1. Son répertoire personnel est créé (/home/username par défaut).

2. Les fichiers cachés suivants sont copiés dans le répertoire personnel de l'utilisateur et seront utilisés pour fournir des variables d'environnement pour sa session utilisateur.

.bash_logout
.bash_profile
.bashrc

3. Un spool de courrier est créé pour l'utilisateur dans /var/spool/mail/username.

4. Un groupe est créé et reçoit le même nom que le nouveau compte utilisateur.

Comprendre /etc/passwd

Les informations complètes du compte sont stockées dans le fichier /etc/passwd. Ce fichier contient un enregistrement par compte utilisateur système et a le format suivant (les champs sont délimités par deux points).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. Les champs [nom d'utilisateur] et [Commentaire] sont explicites.
  2. Le x dans le deuxième champ indique que le compte est protégé par un mot de passe masqué (dans /etc/shadow), qui est nécessaire pour se connecter en tant que [nom d'utilisateur] .
  3. Les champs [UID] et [GID] sont des nombres entiers qui représentent respectivement l'identification de l'utilisateur et l'identification du groupe principal auquel [nom d'utilisateur] appartient. .
  4. Le [Répertoire personnel] indique le chemin absolu du répertoire personnel de [nom d'utilisateur], et
  5. Le [Shell par défaut] est le shell qui sera mis à la disposition de cet utilisateur lorsqu'il se connectera au système.
Comprendre /etc/group

Les informations sur le groupe sont stockées dans le fichier /etc/group. Chaque enregistrement a le format suivant.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Nom du groupe] est le nom du groupe.
  2. Un x dans [Mot de passe du groupe] indique que les mots de passe de groupe ne sont pas utilisés.
  3. [GID] : identique à /etc/passwd.
  4. [Membres du groupe] : une liste d'utilisateurs séparés par des virgules qui sont membres de [Nom du groupe].

Après avoir ajouté un compte, vous pouvez modifier les informations suivantes (pour n'en nommer que quelques champs) à l'aide de la commande usermod, dont la syntaxe de base de usermod est la suivante.

usermod [options] [username]
Fixer la date d'expiration d'un compte

Utilisez l'indicateur –expiredate suivi d'une date au format AAAA-MM-JJ.

usermod --expiredate 2014-10-30 tecmint
Ajout de l'utilisateur à des groupes supplémentaires

Utilisez les options combinées -aG ou –append –groups, suivies d'une liste de groupes séparés par des virgules.

usermod --append --groups root,users tecmint
Modification de l'emplacement par défaut du répertoire personnel de l'utilisateur

Utilisez les options -d ou –home, suivies du chemin absolu vers le nouveau répertoire personnel.

usermod --home /tmp tecmint
Changer le shell que l'utilisateur utilisera par défaut

Utilisez –shell, suivi du chemin d'accès au nouveau shell.

usermod --shell /bin/sh tecmint
Afficher les groupes dont un utilisateur est membre
groups tecmint
id tecmint

Exécutons maintenant toutes les commandes ci-dessus en une seule fois.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

Dans l'exemple ci-dessus, nous fixerons la date d'expiration du compte utilisateur tecmint au 30 octobre 2014. Nous ajouterons également le compte au groupe root et utilisateurs. Enfin, nous définirons sh comme shell par défaut et changerons l'emplacement du répertoire personnel en /tmp :

Lire aussi :

  1. 15 exemples de commandes useradd sous Linux
  2. 15 exemples de commandes usermod sous Linux

Pour les comptes existants, nous pouvons également procéder comme suit.

Désactiver le compte en verrouillant le mot de passe

Utilisez l'option -L (L majuscule) ou –lock pour verrouiller le mot de passe d'un utilisateur.

usermod --lock tecmint
Déverrouillage du mot de passe utilisateur

Utilisez l'option –u ou –unlock pour déverrouiller le mot de passe d'un utilisateur qui a été précédemment bloqué.

usermod --unlock tecmint

Création d'un nouveau groupe pour l'accès en lecture et en écriture aux fichiers auxquels plusieurs utilisateurs doivent accéder

Exécutez la série de commandes suivante pour atteindre l’objectif.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Supprimer un groupe

Vous pouvez supprimer un groupe avec la commande suivante.

groupdel [group_name]

S'il existe des fichiers appartenant à group_name, ils ne seront pas supprimés, mais le propriétaire du groupe sera défini sur le GID du groupe qui a été supprimé.

Autorisations de fichiers Linux

Outre les autorisations de base de lecture, d'écriture et d'exécution dont nous avons parlé dans Outils d'archivage et définition des attributs de fichier – Partie 3 de cette série, il existe d'autres paramètres d'autorisation moins utilisés (mais non moins importants), parfois appelés « spéciaux ». autorisations ».

Comme les autorisations de base évoquées précédemment, elles sont définies à l'aide d'un fichier octal ou via une lettre (notation symbolique) qui indique le type d'autorisation.

Suppression de comptes d'utilisateurs

Vous pouvez supprimer un compte (ainsi que son répertoire personnel, s'il appartient à l'utilisateur, et tous les fichiers qui y résident, ainsi que le spool de messagerie) à l'aide de la commande userdel avec la touche –remove .

userdel --remove [username]

Gestion de groupe

Chaque fois qu'un nouveau compte utilisateur est ajouté au système, un groupe portant le même nom est créé avec le nom d'utilisateur comme seul membre. D'autres utilisateurs peuvent être ajoutés au groupe ultérieurement. L'un des objectifs des groupes est de mettre en œuvre un contrôle d'accès simple aux fichiers et autres ressources système en définissant les autorisations appropriées sur ces ressources.

Par exemple, supposons que vous ayez les utilisateurs suivants.

  1. utilisateur1 (groupe principal : utilisateur1)
  2. utilisateur2 (groupe principal : utilisateur2)
  3. utilisateur3 (groupe principal : utilisateur3)

Tous ont besoin d'un accès en lecture et écriture à un fichier appelé common.txt situé quelque part sur votre système local, ou peut-être sur un partage réseau qui utilisateur1 a créé. Vous pourriez être tenté de faire quelque chose comme :

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Cependant, cela ne fournira qu'un accès en lecture et écriture au propriétaire du fichier et aux utilisateurs qui sont membres du groupe propriétaire du fichier (user1 dans ce cas). Encore une fois, vous pourriez être tenté d'ajouter user2 et user3 au groupe user1, mais cela leur donnera également accès au reste des fichiers détenus. par l'utilisateur user1 et le groupe user1.

C’est là que les groupes sont utiles, et voici ce que vous devez faire dans un cas comme celui-ci.

Comprendre Setuid

Lorsque l'autorisation setuid est appliquée à un fichier exécutable, un utilisateur exécutant le programme hérite des privilèges effectifs du propriétaire du programme. Étant donné que cette approche peut raisonnablement soulever des problèmes de sécurité, le nombre de fichiers avec une autorisation setuid doit être réduit au minimum. Vous trouverez probablement des programmes avec cette autorisation définie lorsqu'un utilisateur du système doit accéder à un fichier appartenant à root.

En résumé, non seulement l’utilisateur peut exécuter le fichier binaire, mais il peut également le faire avec les privilèges root. Par exemple, vérifions les autorisations de /bin/passwd. Ce binaire permet de changer le mot de passe d'un compte, et modifie le fichier /etc/shadow. Le superutilisateur peut modifier le mot de passe de n’importe qui, mais tous les autres utilisateurs ne devraient pouvoir modifier que le leur.

Ainsi, tout utilisateur devrait avoir l'autorisation d'exécuter /bin/passwd, mais seul root pourra spécifier un compte. Les autres utilisateurs ne peuvent modifier que leurs mots de passe correspondants.

Comprendre Setgid

Lorsque le bit setgid est défini, le GID effectif de l'utilisateur réel devient celui du propriétaire du groupe. Ainsi, tout utilisateur peut accéder à un fichier sous les privilèges accordés au groupe propriétaire de ce fichier. De plus, lorsque le bit setgid est défini sur un répertoire, les fichiers nouvellement créés héritent du même groupe que le répertoire, et les sous-répertoires nouvellement créés hériteront également du bit setgid du répertoire parent. Vous utiliserez probablement cette approche chaque fois que les membres d’un certain groupe ont besoin d’accéder à tous les fichiers d’un répertoire, quel que soit le groupe principal du propriétaire du fichier.

chmod g+s [filename]

Pour définir le setgid sous forme octale, ajoutez le chiffre 2 aux autorisations de base actuelles (ou souhaitées).

chmod 2755 [directory]
Définition du SETGID dans un répertoire

Comprendre Sticky Bit

Lorsque le « sticky bit » est activé sur les fichiers, Linux l'ignore simplement, alors que pour les répertoires, cela a pour effet d'empêcher les utilisateurs de supprimer ou même de renommer les fichiers qu'ils contiennent à moins que l'utilisateur ne soit propriétaire du répertoire, le fichier, ou est root.

chmod o+t [directory]

Pour définir le sticky bit sous forme octale, ajoutez le chiffre 1 aux autorisations de base actuelles (ou souhaitées).

chmod 1755 [directory]

Sans le bit collant, toute personne capable d'écrire dans le répertoire peut supprimer ou renommer des fichiers. Pour cette raison, le bit collant se trouve généralement dans les répertoires, tels que /tmp, qui sont accessibles en écriture partout.

Attributs de fichiers Linux spéciaux

Il existe d'autres attributs qui permettent de limiter davantage les opérations autorisées sur les fichiers. Par exemple, empêchez que le fichier soit renommé, déplacé, supprimé ou même modifié. Ils sont définis avec la commande chattr et peuvent être visualisés à l'aide de l'outil lsattr, comme suit.

chattr +i file1
chattr +a file2

Après avoir exécuté ces deux commandes, file1 sera immuable (ce qui signifie qu'il ne peut pas être déplacé, renommé, modifié ou supprimé) tandis que file2 entrera en mode ajout uniquement (ne peut être ouvrir en mode ajout pour l'écriture).

Accéder au compte root et utiliser sudo

L'un des moyens par lesquels les utilisateurs peuvent accéder au compte root consiste à taper.

su

puis en entrant le mot de passe root.

Si l'authentification réussit, vous serez connecté en tant que root avec le répertoire de travail actuel comme vous l'étiez auparavant. Si vous souhaitez plutôt être placé dans le répertoire personnel de la racine, exécutez.

su -

puis entrez le mot de passe root.

La procédure ci-dessus nécessite qu’un utilisateur normal connaisse le mot de passe root, ce qui présente un risque sérieux pour la sécurité. Pour cette raison, l'administrateur système peut configurer la commande sudo pour permettre à un utilisateur ordinaire d'exécuter des commandes en tant qu'utilisateur différent (généralement le superutilisateur) de manière très contrôlée et limitée. Ainsi, des restrictions peuvent être imposées à un utilisateur de manière à lui permettre d'exécuter une ou plusieurs commandes privilégiées spécifiques et aucune autre.

Lire aussi : Différence entre les utilisateurs su et sudo

Pour s'authentifier à l'aide de sudo, l'utilisateur utilise son propre mot de passe. Après avoir entré la commande, nous serons invités à saisir notre mot de passe (pas celui du superutilisateur) et si l'authentification réussit (et si l'utilisateur a obtenu les privilèges pour exécuter la commande), la commande spécifiée est exécutée.

Pour accorder l'accès à sudo, l'administrateur système doit modifier le fichier /etc/sudoers. Il est recommandé d'éditer ce fichier à l'aide de la commande visudo au lieu de l'ouvrir directement avec un éditeur de texte.

visudo

Cela ouvre le fichier /etc/sudoers en utilisant vim (vous pouvez suivre les instructions données dans Installer et utiliser vim comme éditeur – Partie 2 de cette série pour modifier le fichier).

Ce sont les lignes les plus pertinentes.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Regardons-les de plus près.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Cette ligne vous permet de spécifier les répertoires qui seront utilisés pour sudo et est utilisée pour empêcher l'utilisation de répertoires spécifiques à l'utilisateur, qui peuvent endommager le système.

Les lignes suivantes sont utilisées pour spécifier les autorisations.

root        ALL=(ALL) ALL
  1. Le premier mot-clé ALL indique que cette règle s'applique à tous les hôtes.
  2. Le deuxième TOUS indique que l'utilisateur de la première colonne peut exécuter des commandes avec les privilèges de n'importe quel utilisateur.
  3. Le troisième ALL signifie que n'importe quelle commande peut être exécutée.
tecmint     ALL=/bin/yum update

Si aucun utilisateur n'est spécifié après le signe =, sudo assume l'utilisateur root. Dans ce cas, l'utilisateur tecmint pourra exécuter yum update en tant que root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

La directive NOPASSWD permet à l'utilisateur gacanepa d'exécuter /bin/updatedb sans avoir besoin de saisir son mot de passe.

%admin      ALL=(ALL) ALL

Le signe % indique que cette ligne s'applique à un groupe appelé « admin ». La signification du reste de la ligne est identique à celle d’un utilisateur régulier. Cela signifie que les membres du groupe « admin » peuvent exécuter toutes les commandes en tant qu'utilisateur sur tous les hôtes.

Pour voir quels privilèges vous sont accordés par sudo, utilisez l'option « -l » pour les lister.

PAM (modules d'authentification enfichables)

Les modules d'authentification enfichables (PAM) offrent la flexibilité de définir un schéma d'authentification spécifique par application et/ou par service à l'aide de modules. Cet outil présent sur toutes les distributions Linux modernes a surmonté le problème souvent rencontré par les développeurs dans les premiers jours de Linux, lorsque chaque programme qui nécessitait une authentification devait être compilé spécialement pour savoir comment obtenir l'information nécessaire.

Par exemple, avec PAM, peu importe que votre mot de passe soit stocké dans /etc/shadow ou sur un serveur distinct au sein de votre réseau.

Par exemple, lorsque le programme de connexion doit authentifier un utilisateur, PAM fournit dynamiquement la bibliothèque qui contient les fonctions du bon schéma d'authentification. Ainsi, changer le schéma d'authentification de l'application de connexion (ou de tout autre programme utilisant PAM) est simple puisqu'il implique uniquement de modifier un fichier de configuration (très probablement, un fichier nommé d'après l'application, situé dans /etc/pam.d , et moins probable dans /etc/pam.conf).

Les fichiers dans /etc/pam.d indiquent quelles applications utilisent PAM de manière native. De plus, nous pouvons savoir si une certaine application utilise PAM en vérifiant si la bibliothèque PAM (libpam) y a été liée :


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

Dans l'image ci-dessus, nous pouvons voir que la libpam a été liée à l'application de connexion. Cela est logique puisque cette application est impliquée dans l’opération d’authentification des utilisateurs du système, contrairement à top.

Examinons le fichier de configuration PAM pour passwd – oui, l'utilitaire bien connu pour modifier les mots de passe des utilisateurs. Il se trouve à l'adresse /etc/pam.d/passwd :


cat /etc/passwd

La première colonne indique le type d'authentification à utiliser avec le module-path (troisième colonne). Lorsqu'un trait d'union apparaît avant le type, PAM n'enregistrera pas dans le journal système si le module ne peut pas être chargé car il n'a pas pu être trouvé dans le système.

Les types d'authentification suivants sont disponibles :

  1. compte : ce type de module vérifie si l'utilisateur ou le service a fourni des informations d'identification valides pour s'authentifier.
  2. auth : ce type de module vérifie que l'utilisateur est bien celui qu'il prétend être et accorde tous les privilèges nécessaires.
  3. mot de passe : ce type de module permet à l'utilisateur ou au service de mettre à jour son mot de passe.
  4. session : ce type de module indique ce qui doit être fait avant et/ou après la réussite de l'authentification.

La deuxième colonne (appelée control) indique ce qui doit se passer si l'authentification avec ce module échoue :

  1. requis : si l'authentification via ce module échoue, l'authentification globale sera immédiatement refusée.
  2. required est similaire à requisite, bien que tous les autres modules répertoriés pour ce service seront appelés avant de refuser l'authentification.
  3. suffisant : si l'authentification via ce module échoue, PAM accordera toujours l'authentification même si une précédente marquée comme requise a échoué.
  4. facultatif : si l'authentification via ce module échoue ou réussit, rien ne se passe sauf si ce module est le seul de ce type défini pour ce service.
  5. include signifie que les lignes du type donné doivent être lues à partir d'un autre fichier.
  6. substack est similaire à include mais les échecs ou succès d'authentification ne provoquent pas la sortie du module complet, mais uniquement de la sous-pile.

La quatrième colonne, si elle existe, montre les arguments à passer au module.

Les trois premières lignes de /etc/pam.d/passwd (illustré ci-dessus), chargez le module system-auth pour vérifier que l'utilisateur a fourni des informations d'identification valides (compte). . Si tel est le cas, cela lui permet de modifier le jeton d'authentification (mot de passe) en donnant l'autorisation d'utiliser passwd (auth).

Par exemple, si vous ajoutez


remember=2

à la ligne suivante


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

dans /etc/pam.d/system-auth :


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

les deux derniers mots de passe hachés de chaque utilisateur sont enregistrés dans /etc/security/opasswd afin qu'ils ne puissent pas être réutilisés :

Résumé

Des compétences efficaces en matière de gestion des utilisateurs et des fichiers sont des outils essentiels pour tout administrateur système. Dans cet article, nous avons couvert les bases et espérons que vous pourrez l’utiliser comme un bon point de départ sur lequel vous appuyer. N'hésitez pas à laisser vos commentaires ou questions ci-dessous et nous vous répondrons rapidement.