proc - pseudo-sistem de fișiere pentru informații
despre procese, informații despre sistem și sysctl
Sistemul de fișiere proc este un pseudo-sistem de
fișiere care oferă o interfață pentru
structurile de date ale nucleului. Acesta este de obicei montat la
/proc. De obicei, este montat automat de către sistem, dar
poate fi montat și manual folosind o comandă precum:
mount -t proc proc /proc
Majoritatea fișierelor din sistemul de fișiere
proc sunt numai pentru citire, dar unele fișiere sunt
inscriptibile, permițând modificarea variabilelor
nucleului.
Sistemul de fișiere proc acceptă
următoarele opțiuni de montare:
- hidepid=n
(începând cu Linux 3.3)
- Această opțiune controlează cine poate accesa
informațiile din directoarele /proc/pid. Argumentul,
n, este una dintre următoarele valori:
- 0
- Oricine poate accesa toate directoarele /proc/pid. Acesta este
comportamentul tradițional și implicit dacă
această opțiune de montare nu este specificată.
- 1
- Utilizatorii nu pot accesa fișierele și subdirectoarele din
orice directoare /proc/pid, cu excepția propriilor
directoare (directoarele /proc/pid rămân vizibile).
Fișierele sensibile precum /proc/pid/cmdline
și /proc/pid/status sunt acum protejate
împotriva altor utilizatori. Acest lucru face imposibilă
aflarea dacă un utilizator rulează un anumit program
(atât timp cât programul nu se dezvăluie altfel prin
comportamentul său).
- 2
- Ca și în cazul modului 1, dar în plus directoarele
/proc/pid aparținând altor utilizatori devin
invizibile. Aceasta înseamnă că intrările
/proc/pid nu mai pot fi utilizate pentru a descoperi PID-urile de
pe sistem. Acest lucru nu ascunde faptul că există un proces
cu o anumită valoare PID (acesta poate fi aflat prin alte mijloace,
de exemplu, prin „kill -0 $PID”), dar ascunde UID și
GID ale unui proces, care altfel ar putea fi aflat prin utilizarea
stat(2) pe un director /proc/pid. Acest lucru
complică foarte mult sarcina unui atacator de a aduna
informații despre procesele care rulează (de exemplu, de a
descoperi dacă un demon rulează cu privilegii ridicate,
dacă un alt utilizator rulează un program sensibil,
dacă alți utilizatori rulează orice program și
așa mai departe).
- gid=gid
(începând cu Linux 3.3)
- Specifică ID-ul unui grup ai cărui membri sunt
autorizați să afle informații despre proces, altfel
interzise de hidepid (de exemplu, utilizatorii din acest grup se
comportă ca și cum /proc ar fi fost montat cu
hidepid=0). Acest grup ar trebui utilizat în locul unor
abordări precum introducerea utilizatorilor nonroot în
fișierul sudoers(5).
- subset=pid
(începând cu Linux 5.8)
- Afișează numai subsetul specificat de procfs,
ascunzând toate fișierele și directoarele de nivel
superior din procfs care nu sunt relaționate cu sarcinile.
Sub /proc, există următoarele grupuri
generale de fișiere și subdirectoare:
- subdirectoare
/proc/pid
- Fiecare dintre aceste subdirectoare conține fișiere
și subdirectoare care prezintă informații despre
procesul cu ID-ul de proces corespunzător.
- Sub fiecare dintre directoarele /proc/pid, un subdirector
task conține subdirectoare de forma task/tid, care
conțin informații corespunzătoare despre fiecare
dintre firele de execuție din proces, unde tid este ID-ul
firului de execuție al nucleului.
- Subdirectoarele /proc/pid sunt vizibile la iterarea prin
/proc cu getdents(2) (și astfel sunt vizibile atunci
când se utilizează ls(1) pentru a vizualiza
conținutul /proc).
- subdirectoare
/proc/tid
- Fiecare dintre aceste subdirectoare conține fișiere
și subdirectoare care expun informații despre firul cu ID-ul
firului corespunzător. Conținutul acestor directoare este
același cu cel al directoarelor /proc/pid/task/tid
corespunzătoare.
- Subdirectoarele /proc/tid nu sunt vizibile la iterarea prin
/proc cu getdents(2) (și astfel nu sunt
vizibile atunci când se utilizează ls(1) pentru a
vizualiza conținutul /proc).
- /proc/self
- Atunci când un proces accesează această
legătură simbolică magică, aceasta se
rezolvă în directorul /proc/pid propriu
procesului.
- /proc/thread-self
- Atunci când un fir de execuție accesează
această legătură simbolică magică, se
rezolvă în directorul /proc/self/task/tid propriu
procesului.
- /proc/[a-z]*
- Diverse alte fișiere și subdirectoare de sub /proc
expun informații la nivel de sistem.
Toate cele de mai sus sunt descrise mai detaliat în pagini
de manual separate ale căror nume încep cu proc_.
Multe fișiere conțin șiruri de caractere (de
exemplu, mediul și linia de comandă) care sunt în
format intern, cu subcâmpuri terminate cu octeți nuli
(„\0”). Atunci când inspectați astfel de
fișiere, puteți constata că rezultatele sunt mai
ușor de citit dacă utilizați o comandă de forma
următoare pentru a le afișa:
$ cat fișier | tr '\000' '\n'
cat(1), dmesg(1), find(1), free(1),
htop(1), init(1), ps(1), pstree(1),
tr(1), uptime(1), chroot(2), mmap(2),
readlink(2), syslog(2), slabinfo(5), sysfs(5),
hier(7), namespaces(7), time(7), arp(8),
hdparm(8), ifconfig(8), lsmod(8), lspci(8),
mount(8), netstat(8), procinfo(8), route(8),
sysctl(8)
Fișierele sursă ale nucleului Linux:
Documentation/filesystems/proc.rst,
Documentation/admin-guide/sysctl/fs.rst,
Documentation/admin-guide/sysctl/kernel.rst,
Documentation/admin-guide/sysctl/net.rst și
Documentation/admin-guide/sysctl/vm.rst.
Traducerea în limba română a acestui manual a
fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită;
citiți
Licența
publică generală GNU Versiunea 3 sau o versiune
ulterioară cu privire la condiții privind drepturile de autor.
NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea
acestui manual, vă rugăm să trimiteți un e-mail
la
translation-team-ro@lists.sourceforge.net.