Y aura-t-il toujours une paire de mêmes UID et GID?

11

Je dois changer la propriété du fichier / répertoire en utilisant. chmodJe ne connais que le nom d'utilisateur des propriétaires mais je veux changer le nom de groupe par défaut simultanément. À ce stade, le nom du groupe n'est pas décidé, je mets donc le même que le nom d'utilisateur

chown -R username:username path_to_dir

La commande peut s'exécuter pour divers systèmes / utilisateurs, donc ma préoccupation est que linux aura toujours une paire nom d'utilisateur (utilisateur): nom d'utilisateur (groupe) OU à un moment donné, ce nom de groupe par défaut peut donner une erreur.

Bien que j'ai commencé à trouver le GID de l'utilisateur appartient

id username | tr '(=)' ':' | awk -F: '{print $3}

Mais pour la connaissance, je veux savoir. Jusqu'à présent, l'analyse de /etc/passwd /etc/groupsquelques utilisateurs comme «arrêt, arrêt, synchronisation, opeartor», tous les utilisateurs ont également répertorié dans les groupes.

EDIT 1: le nom d'utilisateur id -gn est également une bonne option

Akaks
la source
3
Dans le deuxième exemple, recherchiez-vous id -g username?
user1686
1
Ou id -gn usernamequi imprime le nom au lieu de l'ID.
Cristian Ciupitu
Sous Linux, il existe également de nombreux "groupes de périphériques" - par exemple. disque, mem, kmem, audio, vidéo, etc. - qui n'ont pas d'utilisateur correspondant.
Baard Kopperud

Réponses:

20

Il n'y a aucune garantie que le nom de groupe = usernameexistera.

Le scénario le plus courant est que les administrateurs système utilisent sous Linux pour créer un nouvel utilisateur localement sur le système sans spécification explicite pour le groupe, ce qui signifie que le groupe sera créé par défaut comme le nom d'utilisateur et affectera l'utilisateur à avoir le GID par défaut doit être du groupe nouvellement créé.

Cela ne signifie pas qu'un autre administrateur système suivra cette procédure et si vous lancez d'autres services de nommage dans le mélange comme NIS ou LDAP, le groupe attribué par défaut ne sera probablement pas le même que le nouveau GID avec le nom de groupe identique au nom d'utilisateur.

Donc, vous ne devriez pas vous fier au fait que username = groupname

Karlson
la source
Cela peut également dépendre non seulement de la politique d'administration locale, mais aussi des outils inclus avec diverses distributions. De nombreux sites acceptent simplement les valeurs par défaut utilisées par les outils fournis. Bien que la plupart des distributions que j'ai utilisées au fil des ans useraddsoient livrées avec un script qui crée par défaut un groupe du même nom, toutes ne l'ont pas. La dernière fois que je l'ai utilisé (il y a de nombreuses années), le script de création d'utilisateurs de slackware était par défaut d'avoir un seul groupe usersdont tous les utilisateurs étaient devenus membres à la place. docs.slackware.com/slackbook:users suggère que cela peut toujours être le cas.
Jules
11

Bien que l' idiome de groupe privé d'utilisateurs soit souvent utilisé dans les systèmes Linux modernes, * nix ne nécessite pas réellement de groupe principal unique pour chaque utilisateur, et il est tout à fait possible que plusieurs comptes d'utilisateurs partagent un groupe principal commun tel que usersou staff.

Même dans les cas où l'idiome UPG est appliqué, il n'y a aucune raison particulière que le GID numérique d'un UPG particulier soit égal à l'UID du propriétaire, bien que la plupart des outils de création de compte essaient d'attribuer les UID et GID dans l'ordre, s'ils le sont disponible. Les ID peuvent facilement être décalés si les utilisateurs et / ou les groupes doivent être rendus cohérents sur plusieurs systèmes (par exemple pour prendre en charge les partages NFS préexistants).

tournevis
la source
6

Comme Ramesh l'a indiqué par défaut, l'UID et le GID sont égaux pour les utilisateurs ordinaires. Cependant, ce n'est pas toujours le cas , vous ne devez donc pas faire une telle hypothèse car cela pourrait faire des ravages dans votre système. Attribuer des autorisations de fichier / dossier à un mauvais groupe est quelque peu compliqué, n'est-ce pas?

Donc, la réponse courte: non, UID n'est pas toujours égal à GID. Pourtant, /etc/passwdcontient à la fois l'UID et le GID du groupe par défaut sur la même ligne, il est donc assez facile de les extraire.

Erathiel
la source
"par défaut, l'UID et le GID sont égaux pour les utilisateurs ordinaires" - en fait, cette déclaration n'est vraie que si vous ajoutez "sur certaines distributions Linux populaires". Oui, Ubuntu et al. faites-le de cette façon, mais je considérerais un groupe "d'utilisateurs" plus comme un groupe par défaut.
jstarek
Oui, si nous voulons être précis à 100%, vous avez raison. Nous aurions probablement besoin d'ajouter une douzaine d'autres «si» pour ne jamais manquer une seule exception. Toutes mes distributions basées sur Debian (LMDE, Crunchbang, Debian pure) se comportent de cette façon et un CentOS 6.5 que j'ai également. Rappelez-vous que comme il n'est pas nécessaire pour moi d'ajouter d'énormes quantités d'utilisateurs, j'ai tendance à utiliser adduserplutôt que useraddet les valeurs par défaut /etc/adduser.confsont définies pour USERGROUPS=yescréer un groupe pour chaque nouvel utilisateur. Ces groupes ont généralement (pas toujours, cependant) le même GID que l'UID de l'utilisateur pour lequel ils ont été créés.
Erathiel
2

De ce lien, je vois les informations ci-dessous.

Un ID utilisateur (UID) est un entier positif unique attribué par un système d'exploitation de type Unix à chaque utilisateur. Chaque utilisateur est identifié dans le système par son UID, et les noms d'utilisateur ne sont généralement utilisés que comme interface pour les humains.

Les UID sont stockés, avec leurs noms d'utilisateur correspondants et d'autres informations spécifiques à l'utilisateur, dans le /etc/passwdfichier, qui peut être lu avec la commande cat comme suit:

cat /etc/passwd

Le troisième champ contient l'UID et le quatrième champ contient l'ID de groupe (GID), qui par défaut est égal à l'UID pour tous les utilisateurs ordinaires.

ÉDITER

Cependant, comme le souligne @Karlson, il n'est pas vrai que l'UID sera égal à GID par défaut.

L'instruction n'est vraie que si aucun groupe ordinaire n'est ajouté séparément et qu'aucun groupe n'est explicitement spécifié lors d'une création d'utilisateur . Par défaut gid pour le prochain utilisateur ajouté = max(gid) + 1. Il n'y a pas de corrélation entre l'UID et le GID requis par un système * NIX, il se trouve qu'ils coïncident dans certains cas.

Plus de références

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users

Ramesh
la source
La dernière affirmation est complètement fausse. UID = GID uniquement dans le cas où le nouvel utilisateur est créé sur le système local et GID n'est pas explicitement affecté à un groupe existant.
Karlson
Non, ce n'est pas complètement faux, car cela dit clairement "par défaut". Des éclaircissements seraient très appréciés ici.
Erathiel
1
@Erathiel Par défaut, le GID est égal au GID attribué lors de la création de l'utilisateur. Si l'utilisateur est créé localement et sans spécifier GID dans -gflag sur useraddle programme, un groupe sera créé pour vous et à moins qu'un décalage GID ne se soit produit, il sera = UID. Cependant, si la méthode de création n'est pas connue, vous ne pouvez pas compter sur le fait que ce sera le cas:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson
Sur certains systèmes, useradd crée également un groupe du même nom pour le compte. Dépend de la saveur de Linux.
Pete
@Karlson, je n'ai jamais mentionné que ce sera toujours égal. Il est clairement spécifié que par défaut, il est égal à l'UID pour tous les utilisateurs ordinaires .
Ramesh