CGroups
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Linux Beheer Groepe, of cgroups, is ân kenmerk van die Linux-kern wat die toewysing, beperking en prioritisering van stelselhulpbronne soos CPU, geheue en skyf I/O onder prosesgroepe moontlik maak. Hulle bied ân mekanisme vir die bestuur en isolasie van hulpbronverbruik van prosesversamelings, wat voordelig is vir doeleindes soos hulpbronbeperking, werkladingisolasie, en hulpbronprioritisering onder verskillende prosesgroepe.
Daar is twee weergawes van cgroups: weergawe 1 en weergawe 2. Albei kan gelyktydig op ân stelsel gebruik word. Die primĂȘre onderskeid is dat cgroups weergawe 2 ân hiĂ«rargiese, boomagtige struktuur bekendstel, wat meer genuanseerde en gedetailleerde hulpbronverdeling onder prosesgroepe moontlik maak. Boonop bring weergawe 2 verskeie verbeterings, insluitend:
Benewens die nuwe hiërargiese organisasie, het cgroups weergawe 2 ook verskeie ander veranderinge en verbeterings bekendgestel, soos ondersteuning vir nuwe hulpbronbeheerders, beter ondersteuning vir ouer toepassings, en verbeterde prestasie.
Algeheel bied cgroups weergawe 2 meer kenmerke en beter prestasie as weergawe 1, maar laasgenoemde kan steeds in sekere scenarioâs gebruik word waar kompatibiliteit met ouer stelsels ân bekommernis is.
Jy kan die v1 en v2 cgroups vir enige proses lys deur na sy cgroup-lĂȘer in /proc/<pid> te kyk. Jy kan begin deur na jou skulp se cgroups te kyk met hierdie opdrag:
$ cat /proc/self/cgroup
12:rdma:/
11:net_cls,net_prio:/
10:perf_event:/
9:cpuset:/
8:cpu,cpuacct:/user.slice
7:blkio:/user.slice
6:memory:/user.slice 5:pids:/user.slice/user-1000.slice/session-2.scope 4:devices:/user.slice
3:freezer:/
2:hugetlb:/testcgroup
1:name=systemd:/user.slice/user-1000.slice/session-2.scope
0::/user.slice/user-1000.slice/session-2.scope
Die uitvoerstruktuur is soos volg:
- Nommer 2â12: cgroups v1, met elke lyn wat ân ander cgroup verteenwoordig. Beheerders hiervoor word langs die nommer gespesifiseer.
- Nommer 1: Ook cgroups v1, maar slegs vir bestuursdoeleindes (gestel deur, bv., systemd), en het nie ân beheerder nie.
- Nommer 0: Verteenwoordig cgroups v2. Geen beheerders word gelys nie, en hierdie lyn is eksklusief op stelsels wat slegs cgroups v2 draai.
- Die name is hiĂ«rargies, wat soos lĂȘerpaaie lyk, wat die struktuur en verhouding tussen verskillende cgroups aandui.
- Name soos /user.slice of /system.slice spesifiseer die kategorisering van cgroups, met user.slice tipies vir aanmeldsessies wat deur systemd bestuur word en system.slice vir stelseldienste.
Beskou cgroups
Die lĂȘerstelsel word tipies gebruik om toegang te verkry tot cgroups, wat afwyk van die Unix-sisteemoproepinterface wat tradisioneel vir kerninteraksies gebruik word. Om ân skulp se cgroup-konfigurasie te ondersoek, moet ân mens die /proc/self/cgroup lĂȘer nagaan, wat die skulp se cgroup onthul. Dan, deur na die /sys/fs/cgroup (of /sys/fs/cgroup/unified) gids te navigeer en ân gids te vind wat die cgroup se naam deel, kan ân mens verskeie instellings en hulpbronverbruikinligting wat relevant is tot die cgroup, waarneem.
.png)
Die sleutelinterface-lĂȘers vir cgroups is met cgroup voorafgegaan. Die cgroup.procs lĂȘer, wat met standaardopdragte soos cat beskou kan word, lys die prosesse binne die cgroup. ân Ander lĂȘer, cgroup.threads, sluit draad-inligting in.
.png)
Cgroups wat skulpens bestuur, sluit tipies twee beheerders in wat geheuegebruik en prosesgetal reguleer. Om met ân beheerder te kommunikeer, moet lĂȘers met die beheerder se voorvoegsel geraadpleeg word. Byvoorbeeld, pids.current sou geraadpleeg word om die aantal drade in die cgroup te bepaal.
.png)
Die aanduiding van max in ân waarde dui op die afwesigheid van ân spesifieke limiet vir die cgroup. egter, weens die hiĂ«rargiese aard van cgroups, mag limiete opgelĂȘ word deur ân cgroup op ân laer vlak in die gids hiĂ«rargie.
Manipuleer en Skep cgroups
Prosesse word aan cgroups toegeken deur hulle Proses ID (PID) na die cgroup.procs lĂȘer te skryf. Dit vereis wortelprivileges. Byvoorbeeld, om ân proses by te voeg:
echo [pid] > cgroup.procs
Net soos, om cgroup-attribuut te wysig, soos om ân PID-limiet in te stel, word dit gedoen deur die verlangde waarde na die relevante lĂȘer te skryf. Om ân maksimum van 3,000 PIDs vir ân cgroup in te stel:
echo 3000 > pids.max
Die skep van nuwe cgroups behels die maak van ân nuwe subgids binne die cgroup hiĂ«rargie, wat die kern aanmoedig om outomaties die nodige koppelvlaklĂȘers te genereer. Alhoewel cgroups sonder aktiewe prosesse met rmdir verwyder kan word, wees bewus van sekere beperkings:
- Prosesse kan slegs in blaar cgroups geplaas word (d.w.s. die mees geneste in ân hiĂ«rargie).
- ân cgroup kan nie ân kontroleerder hĂȘ wat nie in sy ouer is nie.
- Kontroleerders vir kind cgroups moet eksplisiet verklaar word in die
cgroup.subtree_controllĂȘer. Byvoorbeeld, om CPU en PID kontroleerders in ân kind cgroup in te skakel:
echo "+cpu +pids" > cgroup.subtree_control
Die root cgroup is ân uitsondering op hierdie reĂ«ls, wat direkte prosesplasing toelaat. Dit kan gebruik word om prosesse uit systemd bestuur te verwyder.
Monitering van CPU-gebruik binne ân cgroup is moontlik deur die cpu.stat lĂȘer, wat die totale CPU-tyd wat verbruik is, vertoon, nuttig vir die opsporing van gebruik oor ân diens se subprosesse:
.png)
CPU-gebruik statistieke soos getoon in die cpu.stat lĂȘer
Verwysings
- Boek: Hoe Linux Werk, 3de Uitgawe: Wat Elke Supergebruiker Moet Weet Deur Brian Ward
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

