Puncte:0

Poate un non-root să modifice variabilele de mediu?

drapel pk

Poate un non-root (fără permisiuni sudo) să ruleze următoarea comandă:

export PATH=/tml:$PATH

Dacă da, cum funcționează?

am crezut variabile de mediu sunt numai în citire pentru utilizatorii non-root, în timp ce variabile shell pot fi modificate liber.

muru avatar
drapel us
„Am crezut că variabilele de mediu sunt doar pentru citire,” De ce ai crezut asta?
Trigosin Darom avatar
drapel pk
@muru pentru utilizatorii non-root
muru avatar
drapel us
Întrebarea rămâne. Ce ai citit sau văzut care te face să crezi așa?
Trigosin Darom avatar
drapel pk
După înțelegerea mea, variabilele de mediu (spre deosebire de variabilele shell) sunt globale. Ceea ce înseamnă că se aplică fiecărui proces. Acest lucru este foarte periculos dacă orice utilizator poate modifica valorile acolo.
muru avatar
drapel us
Fiecare proces are o *copie* a variabilelor de mediu moștenite de la părintele său și își poate modifica propriul set de variabile de mediu și, de asemenea, setul de variabile de mediu transmise proceselor copil la creare.
Trigosin Darom avatar
drapel pk
Motivul pentru care întreb este pentru că am încercat să rezolv o provocare ctf în care a existat un utilizator slab cu permisiunea sudo de a rula „date --date 'yesterday'” ca root. Soluția a fost crearea unui executabil numit „data” și modificarea variabilei PATH env, astfel încât să ajungă la executabilul „date” modificat. Încă nu sunt sigur cum funcționează, deoarece variabila PATH a root-ului nu ar trebui să fie afectată.
muru avatar
drapel us
Asta încă nu ar fi trebuit să funcționeze așa cum am spus. Pentru sudo, dacă se acordă permisiunea pentru o anumită comandă, trebuie specificată calea completă către acea comandă. Dacă a funcționat pentru tine, configurația sudo a fost ceva foarte nesigur.
Puncte:1
drapel jp

Ieșirea următoarelor comenzi ar trebui să vă convingă că vă puteți modifica variabilele de mediu.

$ grep PATH ~/.profile 
# setați PATH astfel încât să includă coșul privat al utilizatorului, dacă acesta există
    PATH=~/bin: „${PATH}”
PATH="$PATH:/usr/jocuri"

$ ls -l ~/.profil
-rw-r--r-- 1 sudodus sudodus 632 dec 10 2010 /home/sudodus/.profile

Cu alte cuvinte, nu puteți doar să modificați temporar aceste variabile, ci și să le faceți să persistă modificând fișierul de configurare ~/.profil. Tu, ca utilizator obișnuit, poți să o faci.


Următoarea linie de comandă arată fișierele de sistem, unde PATH este setat sau modificat

sudo grep -r 'PATH=' /etc/*

Poate doriți să obțineți mai multe detalii. Vezi, de exemplu, următorul link,

Unix și Linux: Vedere completă a locului în care este setată variabila PATH în bash - în special răspunsul lui Gilles.

Trigosin Darom avatar
drapel pk
Deci orice utilizator poate schimba variabilele de mediu GLOBAL? Și se va aplica și pe rădăcină? Se pare că îmi lipsește ceva aici.
sudodus avatar
drapel jp
Puteți schimba variabilele de mediu ***voastră***, dar nu pentru alți utilizatori decât dacă aveți permisiuni de superutilizator (puteți folosi `sudo`).

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.