Jak dodać istniejącego użytkownika do istniejącej grupy?

668

Chcę dodać użytkownika Apache ( www-data) do audiogrupy. Przeczytałem stronę podręcznika użytkownika useradd, ale nie mam szczęścia. Używam Xubuntu 11.10. Oto co robię:

$ sudo useradd -G audio www-data
useradd: user 'www-data' already exists

Jeśli pominę -Gopcję, bash, drukuje informacje pomocy dla useradd:

$ sudo useradd  audio www-data
Usage: useradd [options] LOGIN
Options: -b, --base-dir BASE_DIR       base directory for the home directory...

Ze strony podręcznika nie jest dla mnie jasne, jakich opcji powinienem użyć, aby to zadziałało.

Sparky1
źródło

Odpowiedzi:

1039

useraddKomenda spróbuje dodać nowego użytkownika. Ponieważ użytkownik już istnieje, to nie jest to, czego chcesz.

Zamiast tego: Aby zmodyfikować istniejącego użytkownika, na przykład dodając go do nowej grupy, użyj usermodpolecenia.

Spróbuj tego:

sudo usermod -a -G groupName userName

Użytkownik będzie musiał się wylogować i zalogować ponownie, aby zobaczyć nową grupę dodaną.

  • Przełącznik -a(dołącz) jest niezbędny. W przeciwnym razie użytkownik zostanie usunięty z dowolnych grup, których nie ma na liście.

  • -GWyłącznik przyjmuje przecinek (oddzielone) listy dodatkowych grup przypisać użytkownikowi.

dpendolino
źródło
71
sudo usermod -a -G [group-name] [user-name]: Tylko szybki numerek dla tych, którzy tylko czytają nagłówek
Programster
36
Myślę, że teraz preferowanym sposobem jest sudo adduser user group. Jest to prostsza i czystsza składnia. Zobacz odpowiedź @Bai.
ctbrown
3
@wilhil:: man usermod" -a, --append - Dodaj użytkownika do dodatkowych grup. Użyj tylko z opcją -G . ; -G, --groups GROUP1 [, GROUP2, ... [, GROUPN] ]] [...] Jeśli użytkownik jest obecnie członkiem grupy, której nie ma na liście, zostanie on usunięty z grupy. To zachowanie można zmienić za pomocą opcji -a, która dołącza użytkownika do bieżącej dodatkowej lista grup ”.
Adam Michalik
18
Czy istnieje sposób na obejście części „wylogowanie i powrót”? Może jakiś rodzaj polecenia update-groups?
con-f-use
14
@ con-f-use, jeśli możesz uruchomić sudo login -f YOURUSERNAME, rozpocznie nową sesję powłoki. Użyj idpolecenia, aby sprawdzić, czy nowa sesja należy do poprawnego zestawu grup. Nie jest to jednak „globalne” - nie dotyczy terminali, które są już otwarte. Tak naprawdę wylogowanie jest najlepszą opcją, jeśli to możliwe
Aaron McDaid
222

Dodawanie użytkownika do grupy:

sudo adduser user group

Usuwanie użytkownika z grupy:

sudo deluser user group
Bai
źródło
3
nie do końca to, o co pytano
Tejendra
11
Komentarz Tejendry wydaje się zakładać, że użycie useradd jest pożądane / obowiązkowe, aby odpowiedzieć na pytanie OP; Być może w tej odpowiedzi brakuje tylko słów wskazujących, że adduser / deluser jest lepszą alternatywą.
mędrzec
12
Dla mnie lepszy jest prostszy interfejs, dlatego podoba mi się ten.
Betlista
4
To jest właśnie zadawane pytanie. @knocte, tak, myślę, że jest to specyficzne dla Debiana
Auspex
3
@Auspex Mogę potwierdzić, że nie działa w Red Hat.
Stibu
54

Po dodaniu do istniejącego użytkownika:

usermod -a -G group user  

Może być konieczne wylogowanie i zalogowanie się, aby uzyskać uprawnienia grup /etc/group.

Amos Folarin
źródło
21
Pogrub część „musisz się wylogować i zalogować”.
Jin Kwon,
FYI: Myślę, że idpolecenie powinno wskazywać, że zostałeś dodany do grupy bez konieczności wychodzenia. id myuser
ficuscr
5
Wylogowanie i ponowne zalogowanie było dla mnie wymagane w systemie Ubuntu 14.10.
A.Danischewski
26

Zwykle używam

sudo gpasswd -a myuser mygroup
enzotib
źródło
3
usermod nie był dostępny w moim systemie Ubuntu 14.04. To działało świetnie!
Drew
Działa to świetnie również na Debian Stretch, gdzie usermodnie został zainstalowany.
Josh Habdas
8

Publikuję to jako odpowiedź, ponieważ nie mam wystarczającej reputacji, aby móc komentować. Jak wspomniano w @ dpendolino, aby efekty tego polecenia pozostały:

sudo usermod -a -G groupName userName

... musisz się ponownie wylogować / zalogować.

Jednakże, jeśli potrzeba skrótu, aby rozpocząć korzystanie z nowego członkostwa grupy natychmiast (i masz odpowiednie sudo przywileje) Znalazłem to obejście:

$ sudo su -
# su [userName]
$ groups

Wyjaśnienie:

  • sudo su - da ci root root
  • su [userName] zwraca cię do powłoki z użytkownikiem
  • groupspo uruchomieniu teraz pokaże grupę dodaną za pomocą usermod -aGpolecenia

W moim przypadku próbowałem dodać grupę „dokerów” do mojego użytkownika

Przed:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

Po:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
bluemorpho
źródło
5

W systemie Ubuntu, ponieważ logowanie jako rootnie jest włączone , użytkownicy w sudogrupie mogą podnieść uprawnienia do niektórych ograniczonych poleceń. Każde polecenie ograniczone musi być poprzedzone znakiem, sudoaby podnieść uprawnienia.

sudo usermod -a -G group user

doda istniejącego użytkownika userdo dodatkowej grupy o nazwie group. Grupa podstawowa użytkownika pozostanie niezmieniona.

Debra Butcher McCusker
źródło
1
sudo usermod -a -G groupName userName

będzie działać dobrze, ale musiałem całkowicie zrestartować komputer , po prostu wyloguj się i zaloguj ponownie, nie wykonałem zadania ...

alex
źródło