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.
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)
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)
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.