Puncte:2

Cum pot adăuga un utilizator existent la un ID de grup existent (nu numele grupului)?

drapel cn

Doresc să adaug un utilizator existent, foo, unui grup existent, docher. Problema este că aparatul meu are două grupuri cu același nume docher, unul cu id 131 iar celălalt 999. Vreau să adaug foo în grupul docker 999. Următoarea comandă adaugă doar foo în 131 docher grup:

sudo usermod -aG docker foo

Cum pot adăuga la docher grup cu id 999 în schimb?

Actualizați: după o privire în continuare, îmi dau seama că doar cel docher 131 grupul este listat sub /etc/group:

$ cat /etc/group | grep docker
docker:x:131:Steve,Mark,Emmy,user1,foo

Nu am idee de unde vine docker-ul 999, dar următorul utilizator poate rula docker fără sudo:

$ id user1
uid=260800(utilizator1) gid=5000(student) grupuri=5001(sudoaccess),999(docker),27(sudo),124(sambashare),13010(eestaff),131(docker)

in timp ce foo utilizatorul nu poate:

$ id foo
uid=305800(foo) gid=5000(student) grupuri=27(sudo),131(docker)
sudodus avatar
drapel jp
1. Cum de aveți două grupuri cu același nume de grup? 2. Puteți încerca făcând o copie de rezervă a fișierului `/etc/group`, apoi editați-l (cu acces sudo) pentru a adăuga utilizatorul la grupul dorit (după ultimele două puncte, sau dacă există deja un utilizator acolo, scrieți o virgulă și apoi adăugați utilizatorul... Ar trebui să vedeți modelul în rânduri pentru alte grupuri.
Tu Bui avatar
drapel cn
@sudodus în mod ciudat ```/etc/group``` are doar grupul Docker 131 (întrebarea actualizată).
sudodus avatar
drapel jp
De unde știi că ai un utilizator cu id-ul numeric 999? Acest ID numeric este folosit pentru utilizatorul implicit în sistemele live. Și cum ați ales acel număr pentru un ID de utilizator? Ai instalat vreun pachet de programe special? Ce versiune de Ubuntu rulați (20.04 LTS sau altă versiune)? Și este un sistem live sau un sistem instalat?
sudodus avatar
drapel jp
Poate că 999 a fost introdus în acea listă doar pentru a-l face să funcționeze pentru utilizatorul implicit în sistemele live. Care este rezultatul `grep 131 /etc/group`; Vă rugăm să editați întrebarea inițială și să redați rezultatul ca „cod”.
sudodus avatar
drapel jp
Văd editările tale. Funcționează acum (sau după deconectare/conectare sau repornire) să utilizați docker cu noul utilizator „foo”?
sudodus avatar
drapel jp
Văd într-un comentariu că rulați versiunea 16.04, lansată în aprilie 2016, sfârșitul suportului în aprilie 2021, așa că de fapt este timpul să treceți la o versiune acceptată.
Puncte:4
drapel hr

Deci, acesta se dovedește a fi un Problema XY

  1. problema asa cum s-a spus (X) „Cum să adăugați un utilizator existent la ID-ul grupului existent (nu numele grupului)?”

  2. problema reala (Y) „Ce ar trebui să fac dacă /etc/group și /etc/gshadow fișierele nu sunt de acord cu GID-ul numeric al unui grup?"


X. Cum se adaugă un utilizator existent la ID-ul grupului existent (nu numele grupului)?

Nu este explicit în pagina de manual, dar usermod va accepta un GID numeric ca argument pentru ambele -g (grupa primară) și -G opțiuni (grupuri secundare), cel puțin așa cum a fost testat pe Ubuntu 18.04.

Ex. dat

$ grupuri testuser
testuser : personalul testuser

$ getent grup ftp
ftp:x:134:

atunci

$ sudo usermod -aG 134 testuser

$ grupuri testuser
testuser : testuser staff ftp

Y. Ce ar trebui să fac dacă /etc/group și /etc/gshadow fișierele nu sunt de acord cu GID-ul numeric al unui grup?

Există un instrument de linie de comandă pentru asta, furnizat ca parte a passwd pachet:

NUME
       grpck - verifică integritatea fișierelor de grup

REZUMAT
       grpck [opțiuni] [grup [umbră]]

DESCRIERE
       Comanda grpck verifică integritatea informațiilor grupurilor. Aceasta
       verifică dacă toate intrările din /etc/group și /etc/gshadow au corect
       format și să conțină date valide. Utilizatorului i se cere să șteargă intrările
       care sunt formatate incorect sau care au alte erori necorectabile.

       Se fac verificări pentru a verifica dacă fiecare intrare are:

       · numărul corect de câmpuri

       · un nume de grup unic și valid

       · un identificator de grup valid (numai /etc/group)

       · o listă valabilă de membri și administratori

       · o intrare corespunzătoare în fișierul /etc/gshadow (respectiv
           /etc/group pentru verificările gshadow)

Pentru a verifica existența inconsecvențelor, mai întâi rulați în modul numai citire:

sudo grpck -r

(privilegii crescute sunt necesare chiar și aici deoarece /etc/gshadow poate fi citit doar de root).Apoi, odată ce ați identificat problema, rulați din nou interactiv pentru a corecta problemele:

sudo grpck

Există o utilitate analogă pwck pentru asigurarea coerenţei între /etc/passwd și /etc/shadow.

Tu Bui avatar
drapel cn
Din păcate, nu funcționează în cazul meu (Ubuntu 16.04).Cred că are ceva de-a face cu ```999``` docker nu în ```/etc/group```. Am actualizat întrebarea cu mai multe informații.
drapel hr
@TuBui Este posibil ca GID-ul pentru docker de grup să fie inconsecvent între `/etc/group` și `/etc/gshadow` - rulați `sudo pwck -r` și adăugați rezultatul la întrebarea dvs.
drapel hr
scuze, mă refeream la `sudo grpck -r` desigur
Puncte:1
drapel cn

TL;DR pentru a răspunde la întrebarea de la titlu, vă rugăm să urmați postarea @steeldriver alias. usermod funcționează și cu ID de grup. Soluția de mai jos este specifică pentru problema descrisă în corpul OP.

Se pare că problema se rezolvă prin editare /etc/group și schimbați id-ul grupului docker 131 la 999. După deconectare și reconectare, mai am un singur grup de docker - the 999 grup.

$ id foo
uid=305800(foo) gid=5000(student) grupuri=27(sudo),999(docker)

Sper foarte mult să mă schimb /etc/group nu va duce la niciun comportament ciudat. Rădăcina problemei este încă necunoscută (autentificarea la server este, de asemenea, gestionată sub un sistem LDAP, așa că poate că cele două interferează reciproc).

drapel hr
Pe viitor, aș recomanda să utilizați `grpck` pentru a face acest lucru pentru dvs., în loc să editați manual fișierul (fișierele) direct
sudodus avatar
drapel jp
+1 pentru comentariul Steeldriver și propria ta teamă: schimbarea numărului de identificare a grupului „docker” la 999 poate provoca un comportament ciudat. - Oricum, poți oricând să resetați `/etc/group`, dacă este necesar pentru o altă aplicație, așa că succes :-)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.