GNU/Linux >> Tutoriels Linux >  >> Linux

Tout ce que vous devez savoir sur l'UID sous Linux

Qu'est-ce que l'UID sous Linux ?

UID signifie identifiant d'utilisateur. Un UID est un numéro attribué à chaque utilisateur Linux. C'est la représentation de l'utilisateur dans le noyau Linux. L'UID est utilisé pour identifier l'utilisateur au sein du système et pour déterminer les ressources système auxquelles l'utilisateur peut accéder. C'est pourquoi l'ID utilisateur doit être unique.

Vous pouvez trouver l'UID stocké dans le fichier /etc/passwd. C'est le même fichier qui peut être utilisé pour répertorier tous les utilisateurs d'un système Linux.

Utilisez une commande Linux pour afficher le fichier texte et vous verrez diverses informations sur les utilisateurs présents sur votre système.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin

Le troisième champ ici représente l'ID utilisateur ou UID.

Notez que dans la plupart des distributions Linux, les UID 1-500 sont généralement réservés aux utilisateurs du système. Dans Ubuntu et Fedora, l'UID pour les nouveaux utilisateurs commence à 1000.

Par exemple, si vous utilisez la commande adduser ou useradd pour créer un nouvel utilisateur, il obtiendra le prochain numéro disponible après 1000 comme son UID.

Sous Linux, l'UID 0 et le GID 0 sont réservés à l'utilisateur root.

Comment trouver l'UID d'un utilisateur sous Linux ?

Vous pouvez toujours vous fier au fichier /etc/passwd pour obtenir l'UID d'un utilisateur. Ce n'est pas le seul moyen d'obtenir les informations UID sous Linux.

La commande id sous Linux affichera l'UID, le GID et les groupes auxquels appartient votre utilisateur actuel :

id
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)

Vous pouvez également spécifier les noms d'utilisateur avec la commande id pour obtenir l'UID de n'importe quel utilisateur Linux :

id standard
uid=1001(standard) gid=1001(standard) groups=1001(standard)

Comment changer l'UID d'un utilisateur sous Linux ?

Supposons que vous ayez plusieurs utilisateurs sur votre système Linux. Vous avez dû supprimer un utilisateur car il a quitté l'organisation. Maintenant, vous voulez que son UID soit pris par un autre utilisateur déjà sur le système.

Vous pouvez changer l'UID en modifiant l'utilisateur à l'aide de la commande usermod comme ceci :

usermod -u 1004 user_2

Vous devez disposer du privilège de superutilisateur pour exécuter la commande ci-dessus.

Vous souvenez-vous du concept d'autorisation et de propriété des fichiers sous Linux ? La propriété d'un fichier est déterminée par l'UID de l'utilisateur propriétaire.

Lorsque vous mettez à jour l'UID d'un utilisateur, qu'advient-il des fichiers appartenant à cet utilisateur ?Bien que tous les fichiers du répertoire personnel de l'utilisateur_2 verront leur UID associé modifié, vous devrez mettre à jour manuellement l'UID associé des autres fichiers à l'extérieur le répertoire personnel.

Ce que vous pouvez faire, c'est mettre à jour manuellement la propriété des fichiers associés à l'ancien UID de l'utilisateur_2.

find / -user old_uid_of_user_2 -exec chown -h user_2 {} \;

Comment l'UID s'associe-t-il à différentes ressources système ? [pour les utilisateurs avancés]

Les UID sont uniques les uns aux autres et peuvent donc également être utilisés pour identifier la propriété de différentes ressources système telles que les fichiers et les processus.

UID et fichiers

J'espère que vous connaissez le concept d'autorisation de fichier sous Linux. Lorsque vous créez un fichier, vous êtes le propriétaire de ce fichier. Vous pouvez maintenant décider qui doit faire quoi avec ce fichier. Cela fait partie du mécanisme DAC de Linux où chaque fichier est laissé à la discrétion de son propriétaire.

Vous pouvez lire la propriété d'un fichier en utilisant la commande ls ou stat. Faisons-le avec la populaire commande ls et vérifions la propriété du binaire sleep ou passwd .

Comme vous pouvez le voir, le fichier /usr/bin/sleep appartient à root :

ls -l $(which sleep)
-rwxr-xr-x 1 root root 39048 Mar  6  2020 /usr/bin/sleep

Forçons-le à mapper la propriété avec l'UID au lieu du nom d'utilisateur :

ls -lhn $(which sleep)
-rwxr-xr-x 1 0 0 39K Mar  6  2020 /usr/bin/sleep

Voici des informations amusantes. Votre système d'exploitation ne comprend pas les "noms d'utilisateur". Chaque fois qu'un programme doit travailler avec des noms d'utilisateur ou doit les imprimer, il se réfère au /etc/passwd fichier pour extraire les informations.

Vous n'avez pas à me croire sur parole. Voyez-le vous-même avec le programme strace qui imprime tous les appels système effectués par un programme.

strace ls -lhn $(which sleep) 2>&1 | grep passwd

Ce que vous essayez de voir, c'est si ls La commande essaie de lire le /etc/passwd fichier ou non.

strace ls -lh $(which sleep) 2>&1 | grep passwd
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 6

Jusqu'ici, tout va bien.

UID et processus

Les processus ont aussi des propriétaires, tout comme les fichiers. Seul le propriétaire (ou l'utilisateur root) d'un processus peut lui envoyer des signaux de processus. C'est là que l'UID entre en jeu.

Si un utilisateur normal essaie de tuer un processus appartenant à un autre utilisateur, cela entraînera une erreur :

kill 3708
bash: kill: (3708) - Operation not permitted

Seul le propriétaire du processus ou la racine peut le faire.

Un processus doit être réglementé. Réglementé, vous devez avoir un moyen de limiter ou de savoir ce qu'un processus est autorisé à faire. Ceci est déterminé par son ou ses UID.

Il existe trois types d'UID associés à un processus.

  1. UID réel :L'UID réel est l'UID qu'un processus adopte à partir de son parent. En termes plus simples, quelle que soit la personne qui démarre un processus, l'UID de cet utilisateur est le véritable UID du processus. Ceci est utile pour identifier à qui appartient réellement un processus. Ceci est essentiel, surtout lorsque l'UID effectif n'est pas le même que l'UID réel dont je vais parler ensuite.
  2. UID efficace  :C'est ce que principalement détermine les autorisations réelles d'un processus donné. Bien qu'un utilisateur puisse démarrer le processus, il peut s'exécuter avec les autorisations disponibles d'un autre utilisateur. La commande passwd en est un exemple. Ce programme édite le fichier /etc/shadow , qui est root possédé. Par conséquent, un utilisateur normal ne devrait pas pouvoir exécuter cette commande ou modifier son mot de passe. Heureusement, le binaire s'exécute avec un UID effectif de 0 (c'est-à-dire root), ce qui lui permet d'avoir suffisamment de privilèges pour modifier le /etc/shadow dossier. Les UID réels et effectifs sont pour la plupart les mêmes, sauf dans le cas des binaires activés par le bit SUID.
  3. UID enregistré :UID disponible à la disposition d'un processus. Celui-ci n'est normalement pas utilisé, mais il est toujours là au cas où le processus sait qu'il n'effectuera aucun travail privilégié, il peut donc changer son UID effectif en quelque chose qui n'est pas privilégié. Cela réduit la surface d'un mauvais comportement involontaire.

C'est ça. J'espère que vous avez maintenant une meilleure idée de l'UID sous Linux. N'hésitez pas à poser vos questions, le cas échéant.

En tant qu'utilisateur professionnel de Linux, si vous pensez que j'ai raté un concept important sur l'UID, veuillez me le faire savoir dans la section des commentaires.


Linux
  1. Tout ce que vous devez savoir sur Ubuntu 13.04

  2. Qu'est-ce que SteamOS ? Tout ce que vous devez savoir sur cette "distribution de jeux"

  3. Répertoire Linux tmp :tout ce que vous devez savoir

  4. Compression de fichiers Linux :tout ce que vous devez savoir

  5. Autorisations de fichiers Linux :tout ce que vous devez savoir

Tout ce que vous devez savoir sur le système d'exploitation Peppermint Linux

Tout ce que vous devez savoir sur Black Lab Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur les inodes sous Linux

Tout ce que vous devez savoir sur le lien physique sous Linux

Tout ce que vous devez savoir sur le répertoire Linux /tmp