Puncte:1

Cum să securizezi eficient un proces și copiii săi bifurcați folosind setuid și setgid?

drapel cn

Încerc să fac ca toate procesele Unix să fie bifurcate de un proces principal folosind identități diferite de utilizator/grup. Nu vreau ca procesele părinte sau copil să ruleze ca rădăcină deci vreau alte 2 identități foo și bar a fi folosit. foo ar trebui utilizat pentru a rula aplicația principală și are acces limitat la sistemul de fișiere și apoi bar ar trebui să fie utilizate de procesele bifurcate și să aibă acces chiar mai limitat decât foo.

Problema este când încerc să sun setuid sau setgid după ce am bifurcat procesul de copil mă întorc setuid failed: operațiunea nu este permisă Nu conteaza ce fac. Chiar am confirmat asta capsh --print arată că am CAP_SETUID capacitatea la rularea unui shell ca foo utilizator, așa că m-am gândit că acest lucru ar trebui permis.

Trebuie să înțeleg greșit capabilitățile acestei funcții și, prin urmare, folosesc aceste instrumente incorect. Care este cel mai bun mod de a crea o relație între procese și utilizatori, astfel încât nici procesele părinte, nici cele secundare să nu ruleze ca rădăcină?

drapel cn
„toate procesele Unix”. Unix != Linux. Aș presupune că creați un serviciu systemd care creează părintele ca utilizator foo și acesta generează (un script sau un al doilea serviciu systemd) copiii. Dar va exista întotdeauna un proces deținut de rădăcină deasupra părintelui. Uită-te la serviciul apache ca exemplu (părintele este totuși root, dar copiii săi sunt deținut de apache)
Matt Hintzke avatar
drapel cn
Din păcate, am încercat asta și se pare că WSL nu funcționează cu `systemd` și din moment ce folosesc docker și trebuie să dezvolt pe Windows, se pare că nu pot folosi asta ca o soluție.
drapel cn
Chiar trebuie să adăugați WSL la întrebarea :P Probabil că ceea ce doriți nu este posibil cu WSL. Nu este un substitut pentru o instalare Linux.
Matt Hintzke avatar
drapel cn
Da, îmi pare rău, adică software-ul de producție nu ar folosi WSL, așa că nu m-am gândit cu adevărat la asta. Dar să văd cum ar fi toată dezvoltarea în Windows, cred că este o cerință. Mulțumesc, dar se pare că nu vreau să pot face acest lucru eficient
NotTheDr01ds avatar
drapel vn
@MattHintzke În mod normal, nu recomand această cale, dar în cazul tău cred că ar putea justifica o excepție. Deoarece utilizați WSL doar în scopuri de dezvoltare pentru a imita sistemul de producție, este posibil să doriți să luați în considerare un script de activare Systemd precum [Genie](https://github.com/arkane-systems/genie). Din nou, nu-mi place să folosesc aceste scripturi Systemd personal, deoarece schimbă atât de mult funcționalitatea WSL, dar ar putea fi calea potrivită pentru tine. Toate aceste scripturi au același concept general în sensul că creează un container/spațiu de nume în care Systemd este PID1 și se schimbă în acel spațiu de nume.
Matt Hintzke avatar
drapel cn
@NotTheDr01ds hmm ok, o să mă uit la asta, mulțumesc!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.