Je veux dire, si deux utilisateurs ont le même nom, comment le système sait-il qu'ils sont en réalité des utilisateurs différents lorsqu'il applique des autorisations de fichier?
Ce doute m'est venu à l'esprit alors que j'envisageais de renommer ma maison /home/old-arch
avant de réinstaller le système (je l'ai /home
sur sa propre partition et je ne la formate pas), afin que je puisse alors en avoir une nouvelle, vierge /home/arch
. Je me demandais si le nouveau système me donnerait les anciennes autorisations sur mes fichiers ou s'il me reconnaîtrait comme différent arch
.
permissions
users
authentication
multiuser
Arch Stanton
la source
la source
ls -n
./home/old-arch
avant de réinstaller le système (j'ai/home
sur sa propre partition et je ne la formate pas), afin que je puisse alors en avoir une nouvelle, vierge/home/arch
. Je me demandais si je conserverais les mêmes autorisations sur mes fichiers, ou si le système me reconnaîtrait comme différentarch
.Réponses:
Sous Unix, les utilisateurs sont identifiés par leur ID (uid), qui doit être unique (dans le cadre du système local). Donc, même s'il était possible de créer 2 utilisateurs différents avec le même nom (adduser sur mon système refuse de le faire, voir cette question pour plus d'informations. Les comptes Unix séparés peuvent-ils partager un nom d'utilisateur mais avoir des mots de passe distincts? ), Ils devraient obtenir différents uids. Bien que vous puissiez être en mesure de manipuler des fichiers contenant les informations utilisateur pour correspondre à vos critères, chaque programme est basé sur l'hypothèse que les uids sont uniques sur le système, de sorte que ces utilisateurs seraient identiques.
EDIT: L'autre réponse a démontré un cas où vous avez 2 noms d'utilisateur différents pour le même uid - en ce qui concerne le système, c'est comme avoir deux noms différents pour le même utilisateur, donc les constructions comme celle-ci doivent être évitées si possible , à moins que vous ne souhaitiez spécifiquement créer un alias pour un utilisateur sur le système (voir la question sur l'alias d'utilisateur unix sur serverfault pour plus d'informations sur les détails techniques).
Le système utilise ces UID pour appliquer les autorisations de fichier. L'uid et le gid (identifiant de groupe) de l'utilisateur auquel appartient le fichier sont écrits dans les métadonnées du fichier. Si vous transportez le disque sur un autre ordinateur avec un autre utilisateur qui partage aléatoirement le même uid, le fichier appartiendra soudainement à cet utilisateur sur ce système. Sachant que les uids ne sont généralement pas plus de 16 bits sur un système Unix, cela montre que les uids ne sont pas censés être uniques au niveau mondial, mais uniquement uniques dans la portée du système local.
la source
Si vous forcez à exister plusieurs utilisateurs avec le même nom d'utilisateur, alors il y aura plusieurs entrées
/etc/{shadow,passwd}
avec le même nom:Si vous essayez de vous connecter en tant qu'utilisateur, vous vous connecterez comme première correspondance.
Il n'y aura aucun moyen de se connecter en tant que deuxième utilisateur avec le même nom.
Notez que Linux suit les utilisateurs par leur UID, pas par leur nom d'utilisateur.
Il serait cependant possible que deux noms d'utilisateur différents aient le même ID utilisateur. Considérez une version différente de
/etc/passwd
:Notez que pour les deux noms d'utilisateur
a
etb
, la troisième colonne est 1001 - c'est l'ID uid / utilisateur. Maintenant, si l'utilisateura
ou l'utilisateur seb
connecte (même avec des mots de passe différents), ils seront tous les deux "utilisateur 1001" et s'afficheront en tant qu'utilisateura
du point de vue du système d'exploitation. Ici aussi, la première entrée correspondante est celle renvoyée (dans la plupart des cas):Les deux
a
etb
sont uid1001
et auront accès aux ressources disponibles pour uid1001
.la source
useradd
va faire un ajustement si vous essayez d'ajouter un utilisateur existant, donc par `` force '' ici Andy signifie à peu près `` modifier manuellement/etc/passwd
et/etc/shadow
ce qui est très bien le territoire Don't Try This At Home.setuid
avec le deuxième UID? Ou mêmesudo -u '#<uid>' bash
?Si vous avez un système mono-utilisateur et que vous effectuez une réinstallation avec la même distribution ou une distribution similaire, il est très probable que votre compte utilisateur aura le même identifiant utilisateur et sera donc le même utilisateur du point de vue du noyau. Par exemple, l'utilisateur créé lors de l'installation a été l'UID 1000 sur les systèmes Debian pour autant que je m'en souvienne. D'autres systèmes peuvent utiliser un autre nombre, mais il est très probable qu'il s'agisse d'un entier de petite taille identique à chaque installation.
La même chose s'applique également aux autres utilisateurs (si vous en avez), car les UID sont généralement alloués séquentiellement. Le troisième utilisateur créé aura probablement le même UID que le troisième utilisateur créé sur un autre système. Vous devez prendre des mesures au préalable pour vous assurer que les UID ne sont pas réutilisés sur les deux systèmes.
Pour des raisons similaires, tout ce qui utilise NFS devra avoir une base de données utilisateur partagée.
Mais dans ce cas, comme c'est votre système personnel, vous pouvez simplement vous connecter en tant que root et exécuter
chown newuser. -R /home/olduser
même si l'UID devait être différent.(Les systèmes Windows sont différents, ils génèrent cette chaîne d'identification plus longue qui est plus aléatoire. Là, si vous déplacez un disque vers une autre machine, les fichiers seront considérés comme appartenant à un utilisateur inconnu, et vous n'y aurez pas accès sans utiliser les pouvoirs d'administrateur.
De plus, j'ai beaucoup dit "probablement" dans ce qui précède. On ne sait pas si une distribution se comporte différemment. Le Linux moderne prend également en charge les UID 32 bits, donc bien que ce ne soit pas aussi long que les SID Windows, il y a encore de l'espace à utiliser si l'on veut avoir, par exemple, des UID aléatoires. Habituellement, cela ne sert pas à grand-chose. L'administrateur système est censé savoir quels disques il connecte au système et ajuster les propriétés des fichiers en conséquence, ou rendre le point de montage inaccessible aux autres utilisateurs.)
la source
Unix est un système très ancien, une époque où les capacités de stockage étaient très petites et où tout - aussi bien les fichiers que les utilisateurs - étaient identifiés par des nombres . Les noms sont venus plus tard , après que le stockage se soit un peu développé.
Une vertu de ce système est que les noms ne sont que des étiquettes accrochées aux poignées réelles: les ID numériques. Vous pouvez donc avoir plusieurs noms pour un utilisateur (en éditant directement / etc / passwd), ainsi que plusieurs noms pour un fichier (utile pour stocker le fichier une seule fois, mais le voir à plusieurs endroits).
Les limites sont le système pour l'utilisateur et la partition pour le fichier.
Je dis cela juste pour clarifier, pour expliquer pourquoi les choses sont ce qu'elles sont .
Je dois avouer que je n'ai jamais essayé le contraire - un même nom avec des identifiants différents - j'avais toujours pensé que ce n'était pas possible. C'est ça? Pas comme un bug?
la source