Razlika med su in sudo in Kako konfigurirati sudo v Linuxu


Linux sistem je veliko bolj varen kot kateri koli njegov kolega. Eden od načinov za uvedbo varnosti v Linuxu je politika upravljanja uporabnikov in uporabniško dovoljenje, običajni uporabniki pa niso pooblaščeni za izvajanje nobenih sistemskih operacij.

Če mora običajni uporabnik izvesti kakršne koli sistemske spremembe, mora uporabiti ukaz 'su' ali 'sudo'.

OPOMBA - Ta članek je bolj uporaben za distribucije, ki temeljijo na Ubuntuju, vendar velja tudi za večino priljubljenih distribucij Linuxa.

"Su" vas prisili, da svoje root geslo delite z drugimi uporabniki, medtem ko "sudo" omogoča izvajanje sistemskih ukazov brez root gesla. 'Sudo' vam omogoča, da za izvajanje sistemskih ukazov uporabite lastno geslo, tj. Prenese sistemsko odgovornost brez root gesla.

„Sudo“ je korenski binarni setuid , ki izvaja korenske ukaze v imenu pooblaščenih uporabnikov, uporabniki pa morajo za izvajanje sistemskega ukaza vnesti lastno geslo, čemur sledi „sudo“.

Zaženemo lahko »/ usr/sbin/visudo«, da dodamo/odstranimo seznam uporabnikov, ki lahko izvršijo »sudo«.

$ sudo /usr/sbin/visudo

Posnetek zaslona datoteke '/ usr/sbin/visudo' je videti nekako takole:

Seznam sudo je privzeto videti kot spodnji niz:

root ALL=(ALL) ALL

Opomba: Če želite urejati datoteko/usr/sbin/visudo, morate biti root .

V mnogih primerih sistemski skrbnik, posebej nov na tem področju, poišče niz\"root ALL = (ALL) ALL" kot predlogo in drugim omogoči neomejen dostop, ki je lahko zelo škodljiv.

Urejanje datoteke ‘/ usr/sbin/visudo’ v nekaj podobnega spodnjemu vzorcu je res lahko zelo nevarno, razen če popolnoma verjamete vsem navedenim uporabnikom.

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL

Pravilno konfiguriran "sudo" je zelo prilagodljiv in število ukazov, ki jih je treba zagnati, je lahko natančno konfigurirano.

Sintaksa konfigurirane vrstice 'sudo' je:

User_name Machine_name=(Effective_user) command

Zgornjo sintakso lahko razdelimo na štiri dele:

  1. Uporabniško_ime: To je ime uporabnika "sudo".
  2. Machine_name: To je ime gostitelja, v katerem je veljaven ukaz „sudo“. Uporabno, če imate veliko gostiteljskih strojev.
  3. (Effective_user): 'Učinkoviti uporabnik', ki sme izvajati ukaze. Ta stolpec uporabnikom omogoča izvajanje sistemskih ukazov.
  4. Ukaz: ukaz ali niz ukazov, ki jih lahko izvaja uporabnik.

Nekatere situacije in ustrezna vrstica "sudo":

Q1. Imate uporabniško oznako, ki je skrbnik baze podatkov. Dostopiti naj bi mu moral samo na strežniku Database Server (beta.database_server.com) in ne na nobenem gostitelju.

V zgornjem primeru lahko vrstico "sudo" zapišemo kot:

mark beta.database_server.com=(ALL) ALL

Q2. Imate uporabnika ‘tom’, ki naj bi na istem strežniku baze podatkov zgoraj razložil sistemski ukaz kot uporabnik, ki ni root.

V zgornjem primeru lahko vrstico "sudo" zapišemo kot:

mark beta.database_server.com=(tom) ALL

Q3. Imate uporabnika sudo 'mačka', ki naj bi poganjal samo ukaz 'pes'.

Za izvedbo zgornje situacije lahko "sudo" zapišemo kot:

mark beta.database_server.com=(cat) dog

Q4. Kaj, če je treba uporabniku dodeliti več ukazov?

Če je število ukazov, ki naj bi jih uporabnik izvajal, manjše od 10, lahko postavimo vse ukaze zraven, med njimi pa presledek, kot je prikazano spodaj:

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

Če se ta seznam ukazov razlikuje glede na obseg, kjer dobesedno ni mogoče ročno vnesti vsakega ukaza, moramo uporabiti vzdevke . Vzdevki! Ja, pripomoček Linux, kjer lahko dolgotrajni ukaz ali seznam ukazov označimo kot majhno in enostavno ključno besedo.

Nekaj vzdevkov , ki jih je mogoče uporabiti namesto vnosa v konfiguracijski datoteki ‘sudo’.

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

Namesto uporabnikov je mogoče določiti sistemske skupine, ki spadajo v to skupino in samo pripono '%', kot spodaj:

%apacheadmin WEBSERVERS=(www) APACHE

Q5. Kaj pa izvršitev ukaza ‘sudo’ brez vnosa gesla?

Ukaz "sudo" lahko izvedemo brez vnosa gesla z uporabo zastavice "NOPASSWD".

adam ALL=(ALL) NOPASSWD: PROCS

Tu lahko uporabnik 'adam' izvede vse ukaze, ki so vzdevki pod\"PROCS", brez vnosa gesla.

\ "sudo" vam nudi trdno in varno okolje z veliko prilagodljivosti v primerjavi s "su". Poleg tega je konfiguracija\"sudo" enostavna. Nekatere distribucije Linuxa imajo privzeto omogočen\"sudo", medtem ko morate za večino današnjih distribucijskih sistemov to omogočiti kot varnostni ukrep.

Če želite uporabnika (bob) dodati v sudo, zaženite spodnji ukaz kot root.

adduser bob sudo

To je vse za zdaj. Spet bom tu z drugim zanimivim člankom. Do takrat ostanite z nami in povezani s Tecmintom. Ne pozabite nam poslati svojih dragocenih povratnih informacij v našem oddelku za komentarje.