Ci sarà sempre una coppia di UID e GID uguali?


11

Devo cambiare la proprietà del file / directory usando chmod. Conosco solo il nome utente dei proprietari ma voglio cambiare il nome del gruppo predefinito contemporaneamente. In questa fase il nome del gruppo non viene deciso, quindi sto inserendo lo stesso nome utente

chown -R username:username path_to_dir

Il comando può essere eseguito per vari sistemi / utenti, quindi la mia preoccupazione è che Linux abbia sempre una coppia username (utente): username (gruppo) O ad un certo punto questo nome_gruppo predefinito può dare errore.

Anche se ho iniziato a trovare GID dall'utente appartiene

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

Ma per conoscenza che voglio sapere. Fino ad ora l'analisi di /etc/passwd /etc/groupspochi utenti come "shutdown, halt, sync, opeartor" ha elencato anche tutti gli utenti in gruppi.

EDIT 1: id -gn username è anche una buona opzione


3
Nel secondo esempio, stavi cercando id -g username?
user1686

1
O id -gn usernameche stampa il nome anziché l'ID.
Cristian Ciupitu,

In Linux, ci sono anche molti "gruppi di dispositivi" - ad es. disco, mem, kmem, audio, video, ecc. - che non hanno l'utente corrispondente.
Baard Kopperud,

Risposte:


20

Non esiste alcuna garanzia che usernameesista il nome gruppo = .

Lo scenario più comune è che gli amministratori di sistema utilizzano su Linux: la creazione locale di un nuovo utente sul sistema è senza una specifica esplicita per il gruppo, il che significa che il gruppo verrà creato per impostazione predefinita come il nome utente e assegnerà all'utente di avere il GID predefinito deve appartenere al gruppo appena creato.

Ciò non significa che un altro amministratore di sistema seguirà questa procedura e se si gettano altri servizi di denominazione nel mix come NIS o LDAP, il gruppo assegnato come predefinito probabilmente non sarà lo stesso del nuovo GID con nome gruppo uguale al nome utente.

Quindi non dovresti fare affidamento sul fatto che username = groupname


Può anche dipendere non solo dalla politica di amministrazione locale, ma dagli strumenti inclusi in varie distribuzioni. Molti siti accetteranno solo le impostazioni predefinite utilizzate dagli strumenti forniti. Mentre la maggior parte delle distribuzioni che ho usato nel corso degli anni viene fornita con uno useraddscript che per impostazione predefinita crea un gruppo con lo stesso nome, non tutti hanno. L'ultima volta che l'ho usato (molti, molti anni fa), lo script di creazione degli utenti di slackware era impostato per default su un unico gruppo di userscui tutti gli utenti erano invece membri. docs.slackware.com/slackbook:users suggerisce che potrebbe essere ancora così.
Jules,

11

Sebbene il linguaggio del gruppo privato dell'utente sia spesso usato nei moderni sistemi Linux, * nix non richiede in realtà un gruppo primario univoco per ciascun utente ed è abbastanza possibile che diversi account utente condividano un gruppo primario comune come userso staff.

Anche nei casi in cui viene applicato il linguaggio UPG, non vi è alcun motivo particolare per cui il GID numerico di un particolare UPG dovrebbe essere uguale all'UID del proprietario, sebbene la maggior parte degli strumenti di creazione dell'account proverà ad assegnare UID e GID in ordine, se lo sono a disposizione. Gli ID possono facilmente sfuggire al passo se gli utenti e / o i gruppi devono essere resi coerenti su più sistemi (ad esempio per ospitare condivisioni NFS preesistenti).


6

Come Ramesh ha indicato per impostazione predefinita, l'UID e il GID sono uguali per gli utenti ordinari. Tuttavia, questo non è sempre il caso, quindi non devi fare un'ipotesi che potrebbe causare danni al tuo sistema. Assegnare le autorizzazioni per file / cartelle a un gruppo sbagliato è un po 'confuso, no?

Quindi, la risposta breve: no, UID non è sempre uguale a GID. Tuttavia, /etc/passwdcontiene sia l'UID che il GID del gruppo predefinito sulla stessa riga, quindi è piuttosto facile estrarli.


"per impostazione predefinita UID e GID sono uguali per gli utenti ordinari" - in realtà, questa affermazione è vera solo se si aggiunge "su alcune diffuse distribuzioni Linux". Sì, Ubuntu et al. farlo in questo modo, ma considererei un gruppo di "utenti" più simile a un valore predefinito.
jstarek,

Sì, se miriamo ad essere precisi al 100%, allora hai ragione. Probabilmente avremmo bisogno di aggiungere una dozzina di più "if" per non perdere mai una sola eccezione. Tutte le mie distribuzioni basate su Debian (LMDE, Crunchbang, Debian puro) si comportano in questo modo e ne ho anche un CentOS 6.5. Tieni presente che, poiché non è necessario che io aggiunga enormi quantità di utenti, tendo a utilizzare adduserpiuttosto che useradda /etc/adduser.confimpostare le impostazioni predefinite in USERGROUPS=yescui viene creato un gruppo per ogni nuovo utente. Questi gruppi in genere (non sempre, però) hanno lo stesso GID dell'UID dell'utente per il quale sono stati creati.
Erathiel,

2

Da questo link, vedo le informazioni di seguito.

Un ID utente (UID) è un numero intero positivo univoco assegnato da un sistema operativo simile a Unix a ciascun utente. Ogni utente viene identificato nel sistema dal suo UID e i nomi utente vengono generalmente utilizzati solo come interfaccia per l'uomo.

Gli UID sono memorizzati, insieme ai loro nomi utente corrispondenti e altre informazioni specifiche dell'utente, nel /etc/passwdfile, che può essere letto con il comando cat come segue:

cat /etc/passwd

Il terzo campo contiene l'UID e il quarto campo contiene l'ID gruppo (GID), che per impostazione predefinita è uguale all'UID per tutti gli utenti ordinari.

MODIFICARE

Tuttavia, come sottolinea @Karlson, non è vero che l'UID sarà uguale al GID per impostazione predefinita.

L'istruzione è vera solo se nessun gruppo ordinario viene aggiunto separatamente e nessun gruppo viene esplicitamente specificato su qualsiasi creazione dell'utente . Per impostazione predefinita gid per il prossimo utente aggiunto = max(gid) + 1. Non esiste alcuna correlazione tra UID e GID richiesta da qualsiasi sistema * NIX che coincidono in alcuni casi.

Più riferimenti

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


L'ultima affermazione è completamente falsa. UID = GID solo nel caso in cui il nuovo utente venga creato sul sistema locale e GID non sia esplicitamente assegnato a un gruppo esistente.
Karlson

No, non è completamente falso, poiché dice chiaramente "per impostazione predefinita". Alcuni chiarimenti sarebbero molto apprezzati qui.
Erathiel,

1
@Erathiel Per impostazione predefinita, GID è uguale a GID assegnato alla creazione dell'utente. Se l'utente viene creato localmente e senza specificare GID nel -gflag sul useraddprogramma creerà un gruppo per te e, a meno che non si sia verificato uno spostamento GID, sarà = UID. Tuttavia, se il metodo di creazione non è noto, non è possibile fare affidamento sul fatto che ciò accadrà:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson,

Su alcuni sistemi useradd crea anche un gruppo con lo stesso nome per l'account. Dipende dal sapore di Linux.
Pete,

@Karlson, non ho mai menzionato che sarà sempre uguale. Si specifica chiaramente che per impostazione predefinita è uguale all'UID per tutti gli utenti ordinari .
Ramesh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.