Portál AbcLinuxu, 31. července 2025 15:24


Dotaz: ako spustit proces s obmedzenými právami?

4.2.2017 22:02 rastos | skóre: 63 | blog: rastos
ako spustit proces s obmedzenými právami?
Přečteno: 449×
Odpovědět | Admin
Mám užívateľa U, ktorý je členom skupín A, B a C:
$ id
uid=1001(U) gid=2000(A) groups=3000(B),3001(C)
Ako taký užívateľ spustí program P tak, aby ten bežiaci program nemal prístup skupiny B? To znamená, že dostane permission denied pri prístupe k súboru s právami
$ stat /tmp/subor1
...
Access: (0040/----r-----)  Uid: (  1002/  U2)   Gid: (  3000/   B)
...
ale bude mať prístup skupiny C a teda úspešne otvorí súbor
$ stat /tmp/subor2
...
Access: (0040/----r-----)  Uid: (  1002/  U2)   Gid: (  3001/   C)
...
?

Ak tomu dobre rozumiem, tak skupiny B a C sa nazývajú "supplementary groups" a program sa sám môže vzdať niektorých skupín volaním setgroups(2). Mňa ale zaujíma, či to môžem programu nanútiť zvonku?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.2.2017 23:43 Pat1 | skóre: 15
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Melo by to jit spravnym pouzitim SetUID a SetGID na binarce.
5.2.2017 17:43 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
E-e. Tým sa zmení len effective user/group id. Zoznam supplementary groups zostane nezmenený.
5.2.2017 20:27 Sten
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skupiny se dědí z volajícího procesu (nastavuje je PAM auth při přihlášení), takže pokud volající proces změní skupiny, bude je mít takové i volaný proces.

Za běhu by to mohlo jít změnit pomocí /proc/$PID/gid_map (man user_namespaces) namapováním jen těch skupin, které procesu chcete povolit, ale nezkoušel jsem.
6.2.2017 10:36 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
No to je taká šalamúnska odpoveď. Ja som skôr čakal, že exituje nejaký nástroj buď ako samostatný program, alebo ako bash built-in, ktorý to vie upraviť. Možno niečo na spôsob sudo, chroot, nice a podobne. Zdá sa, že si budem musieť napísať sám.
6.2.2017 12:01 Sten
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
Nevím, že by na to existoval hotový nástroj. Asi ho nikdo nepsal, aby to nevyvolávalo falešný pocit zabezpečení, když si ty skupiny ten proces pak může přidat.
7.2.2017 08:37 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
Tím, že to neumí sudo, jste si jistý?

V systemd se to dá nastavit pomocí SupplementaryGroups.
7.2.2017 18:02 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?
Tím, že to neumí sudo, jste si jistý?
Nie som. Ale, ak dobre rozumiem manuálovej stránke, sudo dovoľuje stanoviť effective GID parametrom "-g" (čo ale nie je riešením), alebo dovoľuje použiť parameter "-P", ktorý ovplyvňuje suppl. groups, ale len prepína či použiť suppl. groups spúšťajúceho užívateľa, alebo substituovaného užívateľa.

Ak systém nerobí kontrolu, že povolí setgroups() len na podmnožinu toho, čo vráti getgroups() (teda, že zoznam sa dá len okresávať, nie rozširovať), tak má Sten pravdu a ten môj nápad nie je užitočný.
7.2.2017 20:12 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: ako spustit proces s obmedzenými právami?

HAFRTFM?

setgroups() sets the supplementary group IDs for the calling process. Appropriate privileges (Linux: the CAP_SETGID capability) are required.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.