Instalarea și configurarea lui sudo în debian 7 - ajutor debian

acasă # 149; Articole # 149; Instalarea și configurarea programului sudo în Debian 7

Lista secțiunilor

Sudo este un program care permite administratorilor să dea drepturi radicale limitate utilizatorilor și să păstreze un jurnal de activitate rădăcină. Filosofia de bază este să oferim cât mai puține drepturi, dar în același timp să permitem oamenilor să-și îndeplinească sarcinile în mod normal. Diferența de la comanda su este că utilizatorul introduce parola din contul său, nu parola de root.







Sudo în Debian are un timp de așteptare de 15 minute (poate fi anulat) după ce a introdus parola. Aceasta înseamnă că, atunci când ați introdus pentru prima dată parola de root, aveți 15 minute în care puteți rula următoarea comandă fără a introduce o parolă. Timpul de expirare poate fi resetat imediat utilizând comanda sudo -k.

Instalarea lui sudo în Debian 7

În timpul instalării, fișierul de configurare / etc / sudoers și directorul /etc/sudoers.d sunt create. despre care vom vorbi mai târziu.

Parametrii comenzii sudo

Aici puteți găsi majoritatea opțiunilor disponibile, dar nu toate. Pentru a vizualiza lista completă, utilizați comanda om sudo.

Configurarea sudo în Debian 7

Se recomandă ca toate setările utilizatorului să fie specificate în fișierele din directorul /etc/sudoers.d. și nu în fișierul principal / etc / sudoers. Asta este, puteți crea un fișier cu orice nume în directorul /etc/sudoers.d și deja în el lista setările necesare.

Sincronizarea fișierului sudoers

În general, utilitarul sudo este local, nu are mecanisme integrate pentru distribuirea setărilor unice la mai multe servere dintr-un centru. Pentru sincronizare, puteți utiliza, de exemplu, NFS. rsync sau LDAP.

Exemplu de conținut al fișierului sudoers

Când citiți tutorialul despre cum să configurați sudo în Debian, este greu să înțelegeți ceva, dar cu exemplul, totul intră în vigoare. Deci, mai întâi, să aruncăm o privire la un exemplu de om sudor:

# Aliasuri care conțin nume de utilizator
User_Alias ​​FULLTIMERS = millert, mikef, dowdy
User_Alias ​​PARTTIMERS = bostley, jwfox, crawl
User_Alias ​​WEBMASTERS = va, wendy, wim

# Aliasuri Runas care conțin numele utilizatorilor sau grupurilor din care vor rula comenzile
Runas_Alias ​​OP = root, operator
Runas_Alias ​​DB = oracol, sybase
Runas_Alias ​​ADMINGRP = adm, oper

# Alias ​​pentru seturi gazdă
Host_Alias ​​SPARC = maretime, eclipsa, moet, ancora: \
SGI = grolsch, păpădie, negru: \
ALPHA = widget, talamus, foobar: \
HPPA = boa, nag, python
Host_Alias ​​CUNETS = 128.138.0.0/255.255.0.0
Host_Alias ​​CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
Host_Alias ​​SERVERS = master, mail, www, ns
Host_Alias ​​CDROM = orion, perseus, hercule

# Aliasuri pentru seturi de comenzi
Cmnd_Alias ​​gunoiști = / usr / bin / mt, / usr / sbin / benă, / usr / sbin / rdump, \
/ usr / sbin / restore, / usr / sbin / rrestore
Cmnd_Alias ​​KILL = / usr / bin / kill
Cmnd_Alias ​​PRINTING = / usr / sbin / lpc, / usr / bin / lprm
Cmnd_Alias ​​SHUTDOWN = / usr / sbin / shutdown
Cmnd_Alias ​​HALT = / usr / sbin / halt
Cmnd_Alias ​​REBOOT = / usr / sbin / reboot
Cmnd_Alias ​​SHELLS = / usr / bin / sh, / usr / bin / csh, / usr / bin / ksh,
/ usr / local / bin / tshsh, / usr / bin / rsh, \
/ usr / local / bin / zsh
Cmnd_Alias ​​SU = / usr / bin / su
Cmnd_Alias ​​PAGERS = / usr / bin / mai mult, / usr / bin / pg, / usr / bin / mai puțin

Apoi, depășim câteva valori implicite la compilare. Vrem ca sudo să se logheze prin syslog folosind auth în toate cazurile. Vrem să-mi angajații care lucrează cu normă întreagă, a primit un avertisment de la sudo, The millert utilizatorul nu trebuie să introduceți o parolă, iar noi nu dorim să resetați comanda variabile de mediu LOGNAME, USER sau USERNAME este executat ca root. În plus, mașinile din Host_Alias ​​SERVERE vom păstra un fișier jurnal suplimentar local și asigurați-vă că vor fi înregistrate în fiecare an în linie ca jurnalele vor fi stocate timp de mai mulți ani. În cele din urmă, din motive de securitate pentru echipele din lista PAGERS, dezactivăm capacitatea de a rula alte comenzi.

# Depășiți setările prestabilite
Setările implicite syslog = auth
Implicit> root! Set_logname
Valori prestabilite: FULLTIMERS!
Valori prestabilite: millert!
[protejat prin e-mail] log_year, logfile = / var / log / sudo.log
PAGERS noexec

Următoarea este partea în care stabiliți cine poate rula.

rădăcină ALL = (ALL) ALL
% roată ALL = (ALL) ALL

Permitem root și tuturor utilizatorilor din grupul de roți să execute comenzi pe orice gazdă în numele oricărui utilizator.

FULLTIMERS ALL = NOPASSWD: TOATE

Angajații care lucrează cu normă întreagă (millert, mikef și dowdy) pot executa comenzi pe orice gazdă fără a introduce o parolă.

PARTTIMERS ALL = ALL

Angajații care lucrează o parte din zi (bostley, jwfox și crawl) pot executa orice comenzi pe orice gazdă, dar trebuie să treacă mai întâi procedura de autentificare.

jack CSNETS = ALL

Mufa de utilizator poate executa orice comenzi pe mașini din lista CSNETS.

operator ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING, \
sudoedit / etc / printcap, / usr / oper / bin /

Operatorul poate executa comenzi limitate de suport simplu de sistem. Aceste comenzi se referă la crearea de copii de siguranță, procese de ucidere, sistem de tipărire, oprirea sistemului și comenzi din directorul / usr / oper / bin /.

joe ALL = / usr / bin / su operator

Utilizatorul joe poate folosi doar pentru a deveni operator.

pete HPPA = / usr / bin / passwd [A-Za-z] *. / usr / bin / passwd rădăcină

% opers ALL = (: ADMINGRP) / usr / sbin /

Membrii grupului din IRCopii pot executa comenzi de la / usr / sbin /, în numele său în legătură cu orice grup de Runas_Alias ​​ADMINGRP (grup și Oper adm).

Utilizatorul pete poate schimba parola oricarui utilizator, cu exceptia root-ului pe orice aparat din lista HPPA. În acest caz, nu veți putea specifica mai mult de un nume de utilizator pe linia de comandă.

bob SPARC = (OP) ALL. SGI = (OP) ALL

Utilizatorul bob poate executa orice comenzi pe mașini din grupurile SPARC și SGI în numele utilizatorilor din Runas_Alias ​​OP (root și operator).

jim + biglab = TOATE

Utilizatorul jim poate rula orice comenzi din grupul de rețea biglab. Sudo înțelege că biglab este un grup de rețea datorită prefixului "+".

fred ALL = (DB) NOPASSWD: TOATE

john ALPHA = / usr / bin / su [! -] *. / usr / bin / su * rădăcină *







Pe mașinile din lista ALPHA, utilizatorul john poate folosi su pentru a deveni orice alt utilizator decât root. Cu toate acestea, nu poate folosi parametrii comenzii su.

doar ALL. SERVERE = TOATE

Utilizatorul poate rula orice comenzi pe orice mașină, cu excepția celor incluse în lista SERVERS.

jill SERVERS = / usr / bin /. SU. COJI

Pe orice mașină din lista SERVERS, jill poate rula orice comenzi, cu excepția celor din listele SU și SHELLS.

steve CSNETS = (operator) / usr / local / op_commands /

Utilizatorul Steve poate rula orice comenzi din directorul / usr / local / op_commands / pe mașinile din rețeaua CSNETS, dar numai ca operator.

matt valkyrie = KILL

Pe stația sa personală, utilizatorul mat trebuie să omoare procesele.

WEBMASTERS www = (www) ALL, (rădăcină) / usr / bin / su www

Pe www gazdă, orice utilizator din lista WEBMASTERS (voință, și WIM Wendy), poate executa orice comanda de la utilizator www (care deține fișierele site-ului) sau doar obtinerea utilizator www folosind comanda su.

TOATE CDROM = NOPASSWD: / sbin / umount / CDROM, \
/ sbin / mount -o nosuid \, nodev / dev / cd0a / CDROM

Orice utilizator poate monta sau demonta CD-ROM-uri pe mașinile din lista CDROM fără a introduce o parolă.

Apoi, vom examina mai îndeaproape diferitele elemente ale fișierului / etc / sudoers.

Sudoers format de fișier

Fișierul sudoers conține două tipuri de înregistrări: aliasuri (variabile regulate) și specificații ale utilizatorilor (indicați cine, ce și unde pot rula).

Când există mai multe specificații pentru un utilizator, acestea sunt aplicate în ordine, adică ultima este utilizată.

Ca urmare, formularul de specificații are următoarea formă:

cine = unde (în numele căruia)

În formă mai completă:

cine unde = (în numele căruia) ce, (în numele căruia) ce. unde = (în numele cui) ce, (în numele cui), ce

De asemenea, puteți specifica din ce grup puteți rula comanda:

cine = unde (în numele căror grup)

Sau chiar și o versiune mai complicată:

cine = unde (în numele căruia, în numele căruia, din care grup, din care grup), ce, ce

Parantezele indică utilizatorul sau grupul de la care puteți rula comenzi. Utilizatorii și grupurile sunt separate între ele prin virgule. Utilizatorii din grupuri sunt separați de colonii.

Dacă doriți să specificați setări diferite pentru un utilizator pe diferite host-uri, atunci și colonii sunt utilizați pentru separare.

user1 host1 = (op. opgr) / bin / ls

această regulă indică faptul că utilizatorul1 poate executa comanda / bin / ls după cum urmează:

Alias ​​Records Formular

Alias_name Name = element 1, punctul 2. Nume = element 3, element 4

Numele de alias poate consta din litere latine ale ambelor registre, cifre si subliniere. Numele trebuie să înceapă cu o literă cu majuscule.

Tipuri de pseudonime

User_Alias

Acesta poate conține unul sau mai mulți utilizatori nume, utilizatori id (prefix cu #), numele grupurilor de utilizatori și id lor (prefixată% și% #, respectiv), netgroups (prefixat cu +), non-yunikosovye nume de grup și ID (cu prefixe%: și%: #, respectiv), precum și aliasuri de utilizatori (User_Aliases). Fiecare element poate fi precedat de un simbol al punctului de exclamare ("!").

Elementele pot fi închise în ghilimele duble pentru a evita folosirea caracterelor speciale. Atunci când se utilizează ghilimele duble, prefixele trebuie incluse în text între ghilimele.

Runas_Alias

Acest alias poate conține aceleași elemente ca și User_Alias. Rețineți că numele și grupurile sunt comparate ca șiruri de caractere. Cu alte cuvinte, doi utilizatori (grupuri) cu nume diferite, dar cu același uid (gid) sunt considerate diferite. Dacă doriți să specificați toate numele utilizatorilor cu același uid (de exemplu, root și toor), puteți utiliza uid (# 0 în exemplul nostru).

Host_Alias

Cmnd_Alias

Lista poate include una sau mai multe comenzi, directoare sau alte pseudonime. O comandă este un nume de fișier complet definit (care conține o cale către un fișier) care poate conține metacaractere. Un nume de fișier simplu permite utilizatorului să execute o comandă cu argumente. Cu toate acestea, puteți specifica și argumentele liniei de comandă (inclusiv caractere cu repere). Pe de altă parte, puteți specifica "" pentru a împiedica utilizarea oricăror argumente cu această comandă. Un director este o cale definită în întregime într-un caracter "/". Când Cmnd_Alias ​​specifică un director, utilizatorul poate rula orice fișiere din acest director (dar nu în subdirectoarele sale).

Valori prestabilite

Unele opțiuni pot fi schimbate în timpul funcționării de către unul sau mai multe înregistrări valori prestabilite, care pot afecta toți utilizatorii de pe orice gazdă, toți utilizatorii de pe o gazdă specifică pe un anumit utilizator, o anumită comandă sau comenzi executate de către un anumit utilizator. Merită să ne amintim că intrările pentru comenzi individuale nu pot include argumente. Dacă trebuie să specificați argumente, setați Cmnd_Alias ​​și utilizați-l.

Când scrieți Setări prestabilite pentru aliasuri diferite, pentru a indica tipul de alias sunt folosite diferite caractere:

'Defaults' '@' Host_List
'Defaults' ':' User_List
'Defaults' '!' Cmnd_List
'Defaults' '>' Runas_List

Parametrii pot fi drapele, valori întregi, șiruri de caractere și liste. Steagurile sunt booleene și pot fi dezactivate utilizând operatorul "!". Valorile pot fi închise în ghilimele duble dacă conțin mai multe cuvinte. Caracterele speciale pot fi scoase cu un backslash (\).

Listele au doi operatori de atribuire + = și - =. Acești operatori sunt utilizați pentru adăugarea și eliminarea din listă.

Înregistrările "Defaults" sunt procesate în următoarea ordine: în primul rând, de bază, pentru gazde și utilizatori, apoi runas, și în cele din urmă pentru comenzi.

Cuvinte cheie

Un cuvânt cheie cu zero sau mai mult poate fi folosit cu comanda. Există opt cuvinte-cheie: NOPASSWD, passwd, noexec, EXEC, setenv, NOSETENV, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT și NOLOG_OUTPUT.

NOPASSWD și PASSWD

user1 gazdă1 = NOPASSWD: / bin / ls, / bin / ln, PASSWD: / bin / kill

NOEXEC și EXEC

NOEXEC poate fi utilizat pentru a preveni lansarea de fișiere executabile legate dinamic folosind comenzi executabile. exemplu:

user1 host1 = NOEXEC: / usr / bin / mai mult

metacaractere

sudo vă permite să utilizați metacaractere (precum și caractere meta sau globale) în nume de gazde, căi și argumente de linie de comandă în fișierul sudoers. Merită să ne amintim că acestea nu sunt expresii regulate.

* - înlocuiește zero sau mai multe caractere.
? - înlocuiește un singur caracter.
[. ] - înlocuiește orice caracter din intervalul specificat.
[. ] - înlocuiește orice caracter care nu intră în intervalul specificat.
\ este caracterele de evacuare, astfel încât caracterele speciale pot fi folosite în nume.

De asemenea, puteți utiliza clasele de caractere. Cu toate acestea, deoarece "(") este un caracter special, trebuie scapat:

aceasta va denota orice fișier care începe cu o literă.

În plus, slash-ul din față nu este înlocuit cu metacaractere. De exemplu:

se potrivește / usr / bin / care, dar nu se potrivește / usr / bin / X11 / xterm.

Pentru a dezactiva utilizarea argumentelor liniei de comandă, puteți utiliza ghilimele duble - "".

Includerea conținutului altor fișiere în sudori

Includerea ("Include de la") a conținutului altor fișiere este posibilă cu directivele #include și #includedir.

Acest lucru poate fi folosit într-o situație în care aveți directive pentru sudo comune tuturor serverelor și speciale pe fiecare server. În acest caz, puteți crea două fișiere, de exemplu sudoers și sudoers.local. Apoi, al doilea este inclus în primul, cu ajutorul directivei (împreună cu pictograma grilă):

De asemenea, puteți crea fișiere cu părți diferite după punctul corespunzător denumirilor serverelor și includeți-le după cum urmează:

unde în loc de% h numele de gazdă este înlocuit.

În ceea ce privește directiva nr. puteți crea un director separat în care puteți adăuga fișiere și acestea vor fi incluse automat în fișierul sudoers. De exemplu, în Debian, după instalarea lui sudo, directorul /etc/sudoers.d/ este creat. și în dosarul / etc / sudoers a fost adăugată o directivă:

Trebuie remarcat faptul că fișierele sunt procesate și sortate lexical, nu prin numere. Aceasta este, de exemplu, fișierul /etc/sudoers.d/01_first vor fi procesate înainte de /etc/sudoers.d/10_second, dar fișierul numit /etc/sudoers.d/1_whoops vor fi prelucrate după /etc/sudoers.d/10_second , deoarece la începutul titlului nu există zero.

Caractere speciale suplimentare

ALL este un cuvânt rezervat care indică toate valorile posibile. Poate fi folosit în loc de pseudonime și valori în câmpurile "cine", "unde", "de la cine", "ce". Nu încercați să creați aliasuri cu numele ALL.

Marcajul exclamării ("!") Este folosit ca operator de negare logică (nu) și permite excluderea anumitor valori. De exemplu, puteți permite efectuarea oricăror operațiuni, cu excepția câtorva care utilizează ALL și "! “.

Corzile lungi pot fi împărțite în substring folosind caracterul invers ("\") la sfârșitul fiecărui subrevers, cu excepția ultimului.

Spațiile dintre elementele '=', ':', '(', ')' sunt opționale. Adică, le puteți folosi sau nu le puteți folosi.

Următoarele caractere trebuie scoase cu un caracter din spate ('\'):







Articole similare

Trimiteți-le prietenilor: