Sudo - executați o comandă ca un alt utilizator

nume
sudo, sudoedit - executați o comandă ca un alt utilizator.

sintaxă
sudo -K | -L | -V | -h | -k | -l | -v
sudo [-HPSb] [-a auth_type] [clasa -c | -] [-p cere] [numele de utilizator -u | #uid]
sudoedit [-S] [-a auth_type] [-p cere] [numele de utilizator -u | #uid] fișier [. ]

descriere
sudo permite utilizatorilor autorizați să execute comenzi ca root sau un alt utilizator specificat în fișierul sudoers. Aceasta și uid eficace și TIS stabilite în funcție de utilizator folosit care este specificat în fișierul passwd și un grup vector bazat pe fișierul de grup (până când se folosește opțiunea -P). În cazul în care utilizatorul apelat - rădăcină, sau dacă utilizatorul țintă este același cu chemarea, nu este necesară nici o parolă. În alte cazuri, sudo prevede ca utilizatorii trebuie să se autentifice cu o parolă implicită (NOTĂ: În configurația implicită, este parola utilizatorului, nu parola de root). Odată ce un utilizator a fost autentificat, un marcaj de timp este actualizat, iar utilizatorul poate folosi apoi sudo fără o parolă pentru o perioadă scurtă de timp (5 minute, în cazul în care nu sa schimbat în fișierul sudoers). Se înțelege că a cauzat sudoedit, cu -e (descris mai jos) opțiune.

Dacă sudo condusă de rădăcină și set de SUDO_USER variabilă, sudo va folosi această valoare pentru a determina cine este adevăratul utilizator. Această caracteristică poate fi utilizată de către utilizator pentru a vă conecta comenzi prin sudo, chiar și atunci când numit shell rădăcină. Utilitarul sprijină, de asemenea, steagul -e, care va fi util, chiar dacă acesta este rulat prin intermediul sudo-script sau program. Rețineți că de căutare este încă în curs de desfășurare pentru rădăcină, și nu pentru un anumit utilizator în SUDO_USER.
sudo se pot conecta toate încercările reușite și nereușite (precum și erori) prin syslog (3) printr-un fișier jurnal, sau ambele. În mod implicit, busteni sudo via syslog (3), dar această opțiune poate fi schimbată în timpul configurării sau prin intermediul fișierului sudoers.

opțiuni
sudo acceptă următoarele opțiuni de linie de comandă:
-H
Opțiunea -H setează variabila de mediu HOME la directorul home al utilizatorului țintă (root implicit), astfel cum se specifică în passwd (5) fișier. În mod implicit, sudo nu modifică HOME (a se vedea set_home și always_set_home în sudoers (5))

-K
Opțiunea -K (destul de dreapta - ucide), la fel ca -k, cu excepția faptului că elimină timestamp-ul utilizatorului La fel ca -k, această opțiune nu necesită o parolă.

-L
Opțiunea -L (listă) afișează o listă de parametri care pot fi setate în conformitate cu o mică descriere valori prestabilite pentru fiecare. Acest lucru este util în conjuncție cu grep (1).
-P
opțiunea -P, cauzele sudo pentru a păstra grupul de utilizatori numit vector de neschimbat. În mod implicit, sudo va inițializa vectorul de grup din lista de grup în care se află utilizatorul. Grup real și eficient ID-ul, cu toate acestea, este încă la fel ca utilizatorul țintă.

-o
Opțiunea opțiunea -a (autentificare tip) cauze sudo pentru a utiliza un anumit tip de autentificare pe care utilizatorul este verificată după cum se specifică în /etc/login.conf. Administratorul de sistem poate specifica o listă de metode de autentificare-sudo specifice prin adăugarea de „linie auth-sudo«»în /etc/login.conf. Această opțiune este disponibilă numai pentru sistemele care acceptă autentificarea BSD și sudo este configurat cu opțiunea --with-bsdauth.

-b
Opțiunea -b (proces de fond) pentru a spune sudo pentru a efectua acest proces de fond de comando. Rețineți că, dacă utilizați opțiunea -b, nu se poate utiliza un control de locuri de muncă shell pentru controlul procesului.

-c
Opțiunea -c (clasa) face sudo anumită comandă pentru a rula restricții de resurse specificate în clasa de autentificare. Argumentul de clasă poate fi același nume de clasă după cum se specifică în /etc/login.conf sau - simbolul „“. Definirea clasă indică faptul că comanda ar trebui să fie executați cu capacități limitate de conectare pentru utilizator executarea comenzii. În cazul în care clasa de argument specifică o clasă de utilizator existent, comanda trebuie sa fie rulat ca root, sau comanda sudo trebuie să se execute dintr-o carapace, care este deținută de rădăcină. Această opțiune este disponibilă numai pe clase de conectare BSD ale sistemelor în cazul în care sudo este configurat cu opțiunea --with-logincap.

-h
Opțiunea -h (ajutor) determină opțiunea sudo pentru a afișa indicația și închide.

-eu
Opțiunea -I (conectare de simulare) shell declanșează definite la intrările în passwd (5) utilizatorul că comanda este rulată. Argumentul numele de comandă dat off la shell începe cu - care face shell pentru a rula ca un shell de login. sudo încearcă să schimbe directorul home al utilizatorului înainte de a începe shell. Doar mediu inițializat, lăsând TERM neschimbat, setarea HOME, SHELL, USER, LOGNAME, și calea, și elimină toate celelalte variabile de mediu. Vă rugăm să rețineți, acest lucru se datorează faptului că învelișul utilizează definiția înainte de fișierul sudoers va analiza, runas_default de instalare în sudoers va specifica un utilizator pentru a rula shell, dar nu spune ce fel de coajă rulează în prezent.

-k
Opțiunea -k schimbă ștampila de timp a utilizatorului, setarea timpului în acest moment. Pe termen următor, sudo va cere parola. Această opțiune nu necesită o parolă, și a adăugat la posibilitatea de retragere a autorizațiilor de utilizatori sudo .logout fișier.

-L
-L opțiunea (listă) afișează o listă a permis (și interzis) comenzi pentru utilizatorul gazdă.

-p
-p opțiunea (promptă) vă permite să suprascrie caseta de introducere a parolei implicite și de a folosi propria. Un procent ( „%“) și următoarele secvențe:

% Extensie U la numele de conectare, utilizatorul apelat.

% Extensie U pentru numele de login al utilizatorului a cărui comandă va fi rulat.

(Root implicit)

expansiune H% la numele gazdei locale, fără numele domeniului.

extensie H% la numele gazdei locale, inclusiv numele de domeniu (în cazul în care sunt incluse într-un nume de mașină gazdă, sau o opțiune de sudoers complet FQDN este instalat).

%% %% două caractere transforma într-un singur%

-s
-s opțiune (shell) începe shell definit în cochiliile variabile. în cazul în care este setat, sau shell definite în fișierul passwd (5)

-u
Opțiunea opțiunea -u (utilizator) face sudo pentru a executa comanda specificată ca un utilizator non-root. Pentru a determina uid în locul numelui de utilizator, utilizați #uid. Rețineți că, dacă targetpw opțiune este instalat (a se vedea. Sudoers) nu se poate executa comanda cu uid, care nu se află în lista de parole de baze de date.

-v
Dacă opțiunea -v, sudo va actualiza timestamp-ul de utilizator, fapt care ia determinat pentru parola utilizatorului, dacă este necesar. Opțiunea extinde timeout sudo pentru următoarele 5 minute (sau în momentul în care este stabilit în sudoers), dar nu a alerga afară.

-- Flag indică faptul că sudo ar trebui să oprească procesarea argumente în linia de comandă. Utile în conjuncție cu steagul -s.

După lansarea cu succes a programului, sudo valoarea de retur se va returna valoarea programului este rulat. În caz contrar, sudo se închide cu o valoare de 1 în cazul în care există o eroare în drepturi sau de acces kofiguratsii / sudo nu se poate executa comanda. Linia cu eroarea este trimis la stderr. Dacă sudo nu se poate determina starea (2), una sau mai multe înregistrări în calea folosită de utilizator, o eroare va fi afișat în stderr. În condiții normale, acest lucru nu ar trebui să se întâmple. Un motiv comun pentru returnarea stat (2) „permisiune refuzată“ când executați automounter și unul dintre directoarele din contul dvs. PATH, pe masina, care este disponibilă în prezent.

sudo încearcă să fie atenți atunci când rulează comenzi externe. Variabilele care controlează atunci când încărcarea dinamică și este completat de legare așa cum va fi utilizat pentru programul care încarcă sudo obstacole. Pentru a depăși acest lucru, variabilele okurzheniya LD_, _RLD_, SHLIB_PATH (numai HP-UX), și LIBPATH (numai AIX) sunt eliminate din mediul înconjurător, care trece toată echipa de rulare. sudo, elimină doar variabilele IFS, CDPATH, ENV, BASH_ENV, KRB_CONF, KRBCONFDIR, KRBTKFILE, KRB5_CONFIG, LOCALDOMAIN, RES_OPTIONS, HOSTALIASES, NLSPATH, PATH_LOCALE, terminfo, TERMINFO_DIRS și TERMPATH, deoarece acestea pot constitui, de asemenea, o amenințare. În cazul în care termcap variabilă și numele traseului sunt setate, ele sunt, de asemenea ignorate. În plus, în cazul în care variabilele LC_ sau conține un limbaj / sau caractere%, acestea sunt ignorate. Variabilele de mediu cu o valoare de pornire cu () sunt eliminate, deoarece acestea pot fi interpretate ca o funcție bash. Dacă sudo a fost compilat cu suport SecurID, VAR_ACE variabilă, USR_ACE și DLC_ACE, de asemenea, eliminate. Lista variabilelor de mediu care sudo Golește conținut în producția de -V sudo atunci când executați ca root.

Pentru a preveni comenzi spoofing, sudo verifică ultima ``. „“ Și `` „“ (ambele resetează directorul curent), atunci când caută o comandă în utilizator PATH (în cazul în care una sau ambele în PATH). Rețineți, deoarece reală variabila de mediu PATH nu este modificat, acesta trece neschimbat la programul care ruleaza sudo.

Din motive de securitate, sistemul de operare suportă bibliotecile partajate și nu dezactivează biblioteca în calea de căutare pe care utilizatorul a definit pentru programele setuid (cele mai multe dintre ele), trebuie să utilizați o opțiune de linker care dezactivează această posibilitate de a lega sau de a lega sudo static.

sudo va verifica dreptul de proprietate și directorul de marcaje temporale (/ var / run / sudo implicit) și va ignora conținutul directorului în cazul în care nu aparține de rădăcină și poate fi scris doar de root nu. În sistemele care nu suporta contul de root pentru ca utilizatorii să se întoarcă fișiere prin intermediul chown (2) în cazul în care directorul timestamp-ul este situat într-un director inscriptibil de toate (de exemplu / tmp), iar utilizatorul poate crea un director de marcaj de timp înainte de a începe sudo. Prin urmare, sudo verifică starea proprietarului și directorul și conținutul său, din cauza căreia prejudiciul care pot fi cauzate este „ascunde“ fișiere prin mutarea lor într-un director cu o ștampilă de timp. Acest lucru poate fi de dorit, pentru că, o dată stabilită într-un director cu o ștampilă de timp, deținut de rădăcină și inaccesibile altor utilizatori. Utilizator, până la fișierele nu pot fi în măsură să le aducă înapoi. Pentru a evita acest lucru, puteți utiliza un director care nu este disponibil pe înregistrare, „lumea“ pentru ștampila de timp (/ var / adm / sudo, de exemplu), sau pentru a crea / var / run / sudo cu devenind proprietarul (root) și permisiunile (0700), în fișiere de sistem de boot.

sudo nu va onora instalarea marcajele de timp în viitor. o ștampilă de timp cu data mai mare decât CURRENT_TIME + 2 * TIMEOUT va ignorirovatsya, și sudo va înregistra și se plâng de situația. Acest lucru se face în scopul de a păstra utilizatorului să creeze propriile lor marcaje temporale cu data falsa pe sistemele care permit utilizatorilor să dea departe fișiere.

HOME
În -s sau modul -H (sau dacă sudo a fost configurată cu opțiunea --enable-shell-seturi-home) stabilește directorul home al utilizatorului țintă.

PATH
instalate în valoarea normală în cazul în care sudo a fost configurată cu opțiunea --with-securizat-cale.

SHELL
operdelenie utilizat pentru shell pentru a rula cu opțiunea -s

SUDO_PROMPT
intrare promptă a folosit parola implicită.

SUDO_COMMAND
Setează comanda se execută sudo

SUDO_USER
Seturi de conectare de utilizator, care a cauzat sudo.

SUDO_UID
Setează uid utilizator care a cauzat sudo.

SUDO_GID
Gid Setează utilizatorul care a cauzat sudo

SUDO_PS1
dacă este determinat, PS1 va fi setat în propriul sens.

USER
setează utilizatorul țintă (rădăcină până când este specificat -u opțiunea).

/ Etc / sudoers - lista de oricine care poate rula
/ Var / run / sudo - un director care conține o ștampilă de timp

Notă: Exemplele de mai jos presupunem sudoers tunate (5)
Pentru o listă de fișiere din directorul imposibil de citit:
$ Sudo ls / usr / local / protejate
Pentru o listă de yazza directorul home al utilizatorului pe mașină în cazul în care sistemul de fișiere păstrează

yazza nu este transmis de rădăcină:
$ Sudo -u ls yazza

yazza
Pentru a edita fișierul index.html ca utilizator www:
$ Sudo -u vi www

Pentru a opri computerul:
închidere $ Sudo -r 15 „repornire rapidă“

Folosit pentru a face o listă de directoare sub / home.
Notă: Echipele de management sunt în sub-un shell pentru a fi capabil de a lucra CD-uri și redirecționarea fișier.
$ Sudo sh -c "cd / home; du -s * | sortare -rn> UTILIZARE"

A se vedea, de asemenea,
grep (1), su (1), stat (2), login_cap (3), sudoers (5), passwd (5), visudo (8)

Nu este necesar pentru a rula comanda cd direct prin sudo, și anume:

$ Sudo cd / usr / local / protejate

din momentul în care comanda este procesul părinte completat (shell) va fi la fel. Pentru mai multe informații, consultați EXAMPELS.

În cazul în care utilizatorul poate sudo, nimic nu se va opri să-l creeze propriul program, care îi conferă o coajă de rădăcină, indiferent de orice „!“ specificațiile clientului.

Rularea script-uri shell prin intermediul sudo poate detecta probleme de kernel similare, care fac scripturi shell setuid sunt periculoase pe unele sisteme de operare (în cazul în care sistemul de operare conține / dev / fd / director, scripturi shell setuid sunt, în general, în condiții de siguranță).

articole similare