it-swarm-eu.dev

Jak aplikovat změny nově přidaných skupin uživatelů bez nutnosti restartování?

Předpokládejme, že jsem přihlášený s uživatelem takpar:

[email protected]:/$

Jako root jsem přidal takpar jako člena skupiny webdev pomocí:

# usermod -a -G webdev takpar

Zdá se však, že to nebylo použito, protože se například nemůžu dostat do adresáře webdev, který má oprávnění ke čtení pro skupinu:

400169 drwxr-x--- 3 webdev webdev 4.0K 2011-08-15 22:34 public_html

[email protected]:/home/webdev/$ cd public_html/
bash: cd: public_html/: Permission denied

Ale po restartu mám přístup, jak očekávám. Vzhledem k tomu, že tento druh skupinových změn je v mé rutině, existuje nějaký způsob, jak aplikovat změny, aniž byste museli restartovat počítač?

Odpověď Zdá se, že neexistuje způsob, jak aktuální relaci poznat novou skupinu, například správce souborů nebude pracovat s novými změnami. Úlohu však provede opětovné přihlášení. Příkaz su je také vhodný pro dočasné příkazy v relaci urrent.

41
Alexar

Lokální řešení: použijte su yourself pro opětovné přihlášení. V nové relaci budete považováni za člena skupiny.


Manuální stránky pro newgrp a sg mohou být také zajímavé pro změnu vašeho současného ID skupiny (a přihlášení do nové skupiny):

  • Chcete-li použít ID skupiny webdev (a oprávnění) ve vašem aktuálním prostředí Shell, použijte:

     newgrp webdev
    
  • Chcete-li spustit příkaz s nějakým ID skupiny (a zachovat aktuální oprávnění v prostředí Shell), použijte:

     sg webdev -c "command"
    

    (sg je jako su, ale pro skupiny a mělo by to fungovat bez hesla skupiny, pokud jste v datech systému uvedeni jako člen skupiny)

59

Restartovací systém je zbytečný, ani odhlášení a přihlášení není nutné, pokud používáte gpasswd.

takpar můžete přidat do skupiny webdev pomocí:

$ gpasswd -a takpar webdev

Členství ve skupině můžete zkontrolovat pomocí getent group {name} příkaz:

$ getent group webdev
webdev:x:1008:webdev,takpar

což by mělo být stejné jako cat /etc/group | grep webdev. Pro úplnost zde je výstup id z relace takpar Shell:

$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
3
Tombart
id webdev

zdá se, že se zde mýlí - chcete vědět o svých vlastních id, takpar, nikoli webdev.

Pokud porovnáte výstupy id a id takpar, všimnete si, že první z nich zatím neukazuje změnu, zatímco druhá ukazuje. Proč? Je to proto, že id zobrazuje skupiny aktuálního procesu. Pokud se odhlásíte a znovu přihlásíte nebo dokonce otevřete pouze nové okno terminálu, měli byste již vidět změnu bez restartu.

1
glglgl