it-swarm-eu.dev

Jak mohu odebrat uživatele ze skupiny?

Jaký příkaz mám použít k odebrání uživatele ze skupiny v Debianu?

Když přidáváte uživatele do skupiny, lze to provést pomocí:

usermod -a -G group user

Nemohl jsem však najít podobný příkaz (přijetí skupiny a uživatele jako argumentů) pro odebrání uživatele ze skupiny. Nejblíže bych mohl získat:

usermod -G all,existing,groups,except,for,group user

Existuje příkaz jako usermod OPTION group user s OPTION možností, aby usermod (nebo podobný program) odstranil uživatele ze skupiny?

372
Lekensteyn

Můžete použít gpasswd:

# gpasswd -d user group

pak bude nová skupina konfigurována při příštím přihlášení, alespoň na Debianu. Pokud je uživatel přihlášen, účinky příkazu se okamžitě nezobrazí.

443
user13742

Balíček adduser obsahuje v Debianu program deluser, který odstraní uživatele ze skupiny, pokud předáte oba argumenty:

deluser user group

Pokud vaše distribuce nemá adduser, můžete upravit /etc/group a /etc/gshadow ručně.

vigr
vigr -s
usermod -G "" username

odstraní všechny sekundární/doplňkové skupiny z username, ponechat je jako člen pouze jejich primární skupiny. to fungovalo v systému Solaris 5.9

74
user208145

Toto je přístup „staré školy“ ...

Většina systémů * nix udržuje informace o skupině do prostého textového souboru /etc/group , kde

  • každý řádek obsahuje pole

    • skupinové jméno
    • heslo
    • GID a
    • user_list

    ohraničený znakem : znak.

  • pole user_list je seznam uživatelských jmen oddělených čárkami.

Předpokládejme, že chcete odebrat uživatele jménem thisuser ze skupiny s názvem thatgroup. Začněte zálohováním /etc/group, pak pomocí editoru vaší preference s oprávněním su upravte soubor /etc/group a odeberte odkaz thisuser z řádkové položky thatgroup, např.

původní řádek je něco podobného:

thatgroup:x:1274:someuser,thisuser,anotheruser

po úpravě by mělo zůstat takto:

thatgroup:x:1274:someuser,anotheruser

Stejně jako u všech ostatních odpovědí to neovlivní aktuální relace uživatele, pokud existují (tj. Pokud je uživatel aktuálně přihlášený). Změna se projeví při příštím přihlášení uživatele.

15
p57

Můžete použít příkaz níže na distribucích SUSE (a zjevně žádné další).

usermod -R skupinauser_name

kde group je skupina, ze které chcete uživatele odebrat, a user_name uživatel, kterého chcete ze skupiny odebrat. Například,

usermod -R root imnottheroot

Zvážit:

  • uživatelské jméno: abc2
  • skupinové jméno: newgroup11

  • Úkol: Odebrání uživatele abc2 ze skupiny newgroup11

[[email protected] ~]# groups abc2
abc2 : abc2
[[email protected] ~]# usermod -G newgroup11 abc2
[[email protected] ~]# groups abc2
abc2 : abc2 newgroup11
[[email protected] ~]# usermod -G newgroup11 abc2
[[email protected] ~]# usermod -G abc2 abc2
[[email protected] ~]# groups abc2
abc2 : abc2

** Prosím, opravte mě, pokud se mýlím. **

1
new user

Uživatele můžete ze skupiny odebrat provedením příkazu usermod whithout - a. Příklad provedením příkazu „usermod -G group1 username“ přidá uživatele do skupiny1 a odebere jej ze všech ostatních skupin, kde je. Nezapomeňte, že uživatele můžete udržovat v různých skupinách tak, že uvedete názvy skupin, oddělené čárkou.

1
Helper

Chcete-li nadále používat usermod v distro (jako Fedora), který nemá možnost odebrání, kde user = bob a group = deletethisgroup, příkaz by byl:

usermod -G `cat /etc/group |  grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob

Trubky (1) získají všechny záznamy skupiny, do kterých uživatel patří, (2) vyjme ten, který je třeba odstranit, (3) vrátí první sloupec (název skupiny), nahradí nový řádek čárkou a odstraní koncovou čárku.

To vše můžete samozřejmě vložit do bash skriptu, který jako parametr odstraní uživatele a skupinu. awk mohl být použit ke zkrácení konce, ale já jsem chtěl držet grep, cut, tr a sed.

0
Stephen

Předpokládejme, že sername = student a groupname = research, proto pro odstranění uživatele student user ze skupiny research je třeba provést následující:

gpasswd -d student research
0
ravi