GNU/Linux >> Znalost Linux >  >> Linux

Přidal jsem uživatele do skupiny, ale skupinová oprávnění k souborům stále nemají žádný vliv?

Změnil jsem oprávnění souboru (chmod g+w testfile ) a spuštění ls -l testfile dává:

-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile

Poté jsem do této skupiny přidal uživatele („/etc/group ” má user1:x:1000:user2 line), ale nedaří se mi upravit tento soubor jako uživatel2. Proč tomu tak je?

Přijatá odpověď:

user2 se musí odhlásit a znovu přihlásit. Oprávnění skupiny fungují takto:

  • Když se přihlásíte, vaše procesy získají členství ve vaší hlavní skupině uvedené v /etc/passwd , plus všechny skupiny, kde je váš uživatel zmíněn v /etc/group . (Přesněji pw_gid pole v getpw(your_uid) , plus všechny skupiny, kterých je váš uživatel explicitním členem. Kromě /etc/passwd a /etc/group , informace mohou pocházet z jiných druhů uživatelských databází, jako je NIS nebo LDAP.) Hlavní skupina se stane efektivním ID skupiny procesu a ostatní skupiny se stanou jeho doplňkovými ID skupiny.
  • Když proces provádí operaci, která vyžaduje členství v určité skupině, jako je například přístup k souboru, tato skupina musí být buď skutečným ID skupiny, nebo jedním z doplňkových skupinových ID procesu.

Jak vidíte, vaše změna členství ve skupině uživatele se projeví, až když se uživatel přihlásí. Pro běžící procesy je už pozdě. Uživatel se tedy musí odhlásit a znovu přihlásit. Pokud je s tím příliš velký problém, může se uživatel přihlásit do samostatné relace (např. na jiné konzoli nebo pomocí ssh localhost ).

Pod pokličkou může proces vždy jen prohrát oprávnění (ID uživatele, ID skupiny, schopnosti). Jádro spustí init proces (první proces po spuštění) běžící jako root a každý proces je nakonec odvozen od tohoto procesu¹. login proces (nebo sshd , nebo část vašeho správce plochy, která vás přihlašuje) stále běží jako root. Součástí jeho práce je zrušit práva roota a přepnout na správného uživatele a skupiny.

Existuje jedna jediná výjimka:spuštění programu setuid nebo setgid. Tento program získává další oprávnění:může se rozhodnout, že bude jednat pod různými podmnožinami členství nadřazeného procesu plus další členství v uživateli nebo skupině, která vlastní spustitelný soubor setxid. Konkrétně kořenový program setuid má oprávnění root, takže může dělat vše²; takto fungují programy jako su a sudo mohou dělat svou práci.

Související:Jak vypnout funkci „vložení prostředního tlačítka myši“ ve všech programech?

¹ Občas se vyskytnou procesy, které nejsou odvozeny z init (initrd, udev), ale princip je stejný:začněte jako root a časem ztratíte oprávnění.
² Bez víceúrovňových bezpečnostních rámců, jako je SELinux.


Linux
  1. Priorita uživatele a vlastníka skupiny v oprávněních k souboru?

  2. Dáváte skupinová oprávnění souborům jiných uživatelů?

  3. Pokud změním oprávnění u souboru Tar, bude se to vztahovat i na soubory v něm?

  1. Jak spravovat oprávnění/vlastnictví souborů a adresářů v Linuxu

  2. Linux, proč nemohu psát, i když mám skupinová oprávnění?

  3. Přidat uživatele do skupiny, ale neprojeví se při spuštění id

  1. mazání souborů, ale místo na disku je stále plné

  2. Pod jakým uživatelem by měl Apache a PHP běžet? Jaká oprávnění by měly mít soubory /var/www?

  3. Jak udělit uživateli bez oprávnění root k souborům zařízení