48 votes

Pourquoi puis-je créer des utilisateurs avec le même UID ?

Si j'ai bien compris, l'UID est un nombre entier positif unique attribué par un système d'exploitation de type Unix à chaque utilisateur. Chaque utilisateur est identifié au système par son UID, et les noms d'utilisateurs ne sont généralement utilisés que comme interface pour les humains.

Comment deux utilisateurs peuvent-ils avoir le même UID, n'est-ce pas un conflit pour mon système et mes paquets ?

root@kdc:~# id test12
uid=1005(test10) gid=1000(server) groups=1005(test10)
root@kdc:~# id test13
uid=1005(test10) gid=1000(server) groups=1005(test10)
root@kdc:~#

J'ai ajouté deux utilisateurs avec les mêmes UID et GID : test12 y test13

La sortie de /etc/passwd :

client@kdc:~$ cat /etc/passwd | grep test12
test12:x:1005:1000::/home/test12:/bin/sh
client@kdc:~$ cat /etc/passwd | grep test13
test13:x:1005:1000::/home/test13:/bin/sh

J'ai ajouté les utilisateurs en useradd -ou 1005 -g1000 username.

Je ne comprends pas bien à quoi cela sert, et est-ce que cela peut affecter les permissions et les logs des utilisateurs, etc. Donc maintenant si un utilisateur est ajouté avec uid=0 y gid=0 aura des privilèges similaires à ceux d'un compte root ?

52voto

Stewart Points 1385

Il y a des raisons valables à cela. Par exemple, j'ai travaillé dans un laboratoire où nous avions chacun notre propre ordinateur, mais notre $HOME se trouvait dans un lecteur partagé exporté par un serveur. Ainsi, mon $HOME était

/users/terdon

Depuis l'entrée en vigueur de la /users n'était en fait pas sur ma machine locale mais exporté via NFS. Pour toute analyse nécessitant de nombreuses entrées/sorties, j'utilisais les données stockées sur mes disques durs locaux afin de ne pas encombrer le réseau du laboratoire. À cette fin, j'avais, comme tout le monde, deux utilisateurs : l'un pour l'ensemble du système et l'autre pour la machine en question. Le domicile de l'utilisateur local était

/home/localuser

Cependant, j'avais besoin d'avoir un accès complet à mes fichiers, que je sois connecté en tant que terdon ou comme localuser et la façon dont notre administrateur système l'a mis en œuvre a été en donnant à la fois à l'administration centrale et à l'administration locale des informations sur la situation de l'entreprise. localuser y terdon le même UID. De cette manière, je pouvais manipuler librement mes fichiers locaux, quel que soit l'utilisateur sous lequel j'étais connecté.

42voto

Digital Chris Points 653

La réponse est que Linux ne vous protège pas de vous-même.

Si vous voulez vraiment su root et d'aller dans les fichiers /etc et de donner à tous les utilisateurs le même UID, vous pouvez. Il s'agit simplement d'un fichier texte.

Mais il ne faut pas le faire et cela aura des conséquences inattendues.

13voto

andybalholm Points 231

Il est en fait assez courant d'avoir deux utilisateurs avec le même identifiant. Sous FreeBSD, il y a généralement deux utilisateurs avec l'UID 0 : root et toor. Root utilise le Shell intégré /bin/sh, et toor utilise un Shell différent, habituellement bash.

12voto

psusi Points 35613

Deux utilisateurs peuvent avoir le même UID, car il s'agit simplement d'un nombre dans un fichier texte. Vous pouvez donc lui donner la valeur que vous voulez, y compris une valeur déjà utilisée. Comme vous l'avez vu, ce n'est pas une bonne idée.

12voto

slm Points 2598

Les systèmes Unix et Linux ne font généralement rien pour interdire les doublons dans la base de données. /etc/passwd fichier. L'objectif de ce fichier est d'associer un UID à un nom physique qui peut être affiché par des outils de ligne de commande tels que ls lorsque les utilisateurs énumèrent des fichiers.

$ ls -n | head -5
total 986000
drwxrwxr-x.   3 1000 1000      4096 Feb 13 19:51 1_archive_sansa
-rw-rw-r--.   1 1000 1000    760868 Dec 16 08:21 2.18.x Database Scheme.jpg
-rw-rw-r--.   1 1000 1000       972 Oct  6 20:26 abcdefg
drwxrwxr-x.   2 1000 1000      4096 Feb 11 03:34 advanced_linux_programming

L'autre objectif de ce fichier est de spécifier le Shell qu'un utilisateur obtiendra lorsqu'il se connectera.

$ getent passwd saml
saml:x:1000:1000:saml:/home/saml:/bin/bash

Un vecteur d'attaque courant sur les systèmes de type Unix consiste à ajouter des lignes de ce type au fichier /etc/passwd fichier :

$ getent passwd r00t
r00t:x:0:0:root:/root:/bin/bash

$ getent passwd toor
toor:x:0:0:root:/root:/bin/bash

Le rôle de la /etc/passwd est PAS destiné à suivre uniquement les comptes d'utilisateurs. Le suivi des noms d'utilisateur et des mots de passe relève de la responsabilité du /etc/shadow dossier. Les fichiers tels que /etc/passwd y /etc/group ont pour but de fournir un nom lisible par l'homme lorsque votre système répertorie des fichiers à partir de disques.

N'oubliez pas que vos fichiers sont écrits sur le disque en utilisant des UID/GID et non des noms réels.

$ stat afile 
  File: ‘afile’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd02h/64770d    Inode: 6560621     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    saml)   Gid: ( 1000/    saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2014-02-27 15:54:21.852697029 -0500
Modify: 2014-02-27 15:54:21.852697029 -0500
Change: 2014-02-27 15:54:21.852697029 -0500
 Birth: -

Notez que les Uid: y Gid: Les chiffres correspondent à ce qui est réellement écrit sur le disque !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X