10 naudingų „Sudoers“ konfigūracijų, skirtų „sudo“ nustatyti „Linux“


„Linux“ ir kitose „Unix“ tipo operacinėse sistemose tik pagrindinis vartotojas gali paleisti visas komandas ir atlikti tam tikras kritines operacijas sistemoje, pvz., Įdiegti ir atnaujinti, pašalinti paketus, kurti vartotojus ir grupes, modifikuoti svarbius sistemos konfigūracijos failus ir pan.

Tačiau sistemos administratorius, prisiimantis pagrindinio vartotojo vaidmenį, gali leisti kitiems įprastiems sistemos vartotojams sudo komandos ir kelių konfigūracijų pagalba paleisti kai kurias komandas, taip pat atlikti daugybę gyvybiškai svarbių sistemos operacijų, įskaitant minėtas aukščiau.

Arba sistemos administratorius gali dalytis pagrindinio vartotojo slaptažodžiu (kuris nėra rekomenduojamas metodas), kad įprasti sistemos vartotojai turėtų prieigą prie šakninio vartotojo abonemento naudodami komandą su.

sudo leidžia leistinam vartotojui vykdyti komandą kaip root (arba kitą vartotoją), kaip nurodyta saugos politikoje:

  1. Jis skaito ir analizuoja/etc/sudoers, ieško kviečiančio vartotojo ir jo leidimų,
  2. tada ragina vartotoją įvesti slaptažodį (paprastai vartotojo slaptažodį, bet jis taip pat gali būti tikslinio vartotojo slaptažodis. Arba jį galima praleisti su NOPASSWD žyma),
  3. po to „sudo“ sukuria vaiko procesą, kurio metu jis paskambina „setuid“(), kad pereitų prie tikslinio vartotojo
  4. tada jis vykdo apvalkalą arba komandą, pateiktą kaip argumentus aukščiau pateiktame vaiko procese.

Žemiau yra dešimt failų/etc/sudoers konfigūracijų, skirtų modifikuoti sudo komandos veikimą naudojant įrašus Numatytieji.

$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output
Defaults                parameter,   parameter_list     #affect all users on any host
[email _List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Atsižvelgdami į šio vadovo taikymo sritį, žemiau nurodytose formose nulį nustatysime iki pirmojo tipo numatytųjų. Parametrai gali būti žymos, sveikųjų skaičių reikšmės, eilutės ar sąrašai.

Turėtumėte atkreipti dėmesį, kad žymos yra netiesioginės loginės reikšmės ir jas galima išjungti naudojant operatorių ! , o sąrašuose yra dar du papildomi priskyrimo operatoriai: + = (pridėti prie sąrašo) ir - = (pašalinti iš sąrašo).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Nustatykite saugų kelią

Tai kelias, naudojamas kiekvienai komandai, paleistai naudojant „sudo“, jis turi dvi svarbas:

  1. Naudojamas, kai sistemos administratorius nepasitiki sudo vartotojais turėdamas saugų PATH aplinkos kintamąjį
  2. Norint atskirti „šakninį kelią“ ir „naudotojo kelią“, šis nustatymas neturi įtakos tik tiems vartotojams, kuriuos apibrėžia „excl_group“.

Norėdami jį nustatyti, pridėkite eilutę:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Įjunkite „sudo“ TTY vartotojo prisijungimo sesijoje

Jei norite, kad sudo būtų galima iškviesti iš tikro tty, bet ne naudojant tokius metodus kaip „cron“ arba „cgi-bin“ scenarijai, pridėkite eilutę:

Defaults  requiretty   

3. Paleiskite „Sudo Command“ naudodami pty

Kelis kartus užpuolikai gali paleisti kenkėjišką programą (pvz., Virusą ar kenkėjišką programinę įrangą) naudodamiesi sudo, kuri vėl įtvirtintų foninį procesą, kuris lieka vartotojo galutiniame įrenginyje, net kai pagrindinė programa bus baigta vykdyti.

Norėdami išvengti tokio scenarijaus, galite sukonfigūruoti „sudo“ vykdyti kitas komandas tik iš „psuedo-pty“ naudodami parametrą use_pty , neatsižvelgiant į tai, ar įvesties/išvesties registravimas įjungtas, ar ne:

Defaults  use_pty

4. Sukurkite „Sudo“ žurnalo failą

Pagal numatytuosius nustatymus „sudo“ registruojasi per „syslog“ (3). Tačiau norėdami nurodyti pasirinktinį žurnalo failą, naudokite tokį parametrą:

Defaults  logfile="/var/log/sudo.log"

Norėdami registruoti pagrindinio kompiuterio pavadinimą ir keturženklius metus pasirinktiniame žurnalo faile, naudokite parametrus log_host ir log_year atitinkamai taip:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Žemiau pateikiamas pasirinktinio sudo žurnalo failo pavyzdys:

5. Prisijungti „Sudo“ komandos įvestis/išvestis

„Log_input“ ir „log_output“ parametrai leidžia „sudo“ paleisti komandą pseudo-tty ir registruoti visus vartotojo įvestis ir visas išvestis, siunčiamas į ekraną.

Numatytasis įvesties/išvesties žurnalo katalogas yra/var/log/sudo-io, o jei yra sesijos eilės numeris, jis saugomas šiame kataloge. Galite nurodyti pasirinktinį katalogą naudodami parametrą „iolog_dir“.

Defaults   log_input, log_output

Yra keletas palaikomų pabėgimo sekų, pavyzdžiui, % {seq} , kuris išsiplečia iki monotoniškai didėjančio bazės-36 eilės numerio, pavyzdžiui, 000001, kur kas du skaitmenys naudojami kuriant naują katalogą, pvz. 00/00/01, kaip parodyta toliau pateiktame pavyzdyje:

$ cd /var/log/sudo-io/
$ ls
$ cd  00/00/01
$ ls
$ cat log

Likusius to katalogo failus galite peržiūrėti naudodami „cat“ komandą.

6. Paskaitos „Sudo“ vartotojai

Norėdami skaityti „sudo“ vartotojams apie slaptažodžių naudojimą sistemoje, naudokite paskaitos parametrą, kaip nurodyta toliau.

Jis turi 3 galimas vertes:

  1. visada - visada skaitykite paskaitą vartotojui.
  2. vieną kartą - paskaitykite vartotojui tik pirmą kartą, kai jis vykdo sudo komandą (ji naudojama, kai nenurodyta vertė)
  3. niekada - niekada neskaitykite vartotojo.

 
Defaults  lecture="always"

Be to, galite nustatyti pasirinktinį paskaitos failą su parametru „lecture_file“, faile įveskite atitinkamą pranešimą:

Defaults  lecture_file="/path/to/file"

7. Rodyti pasirinktinį pranešimą, kai įvedate neteisingą sudo slaptažodį

Kai vartotojas įveda neteisingą slaptažodį, komandinėje eilutėje rodomas tam tikras pranešimas. Numatytasis pranešimas yra „atsiprašau, bandykite dar kartą“. Galite modifikuoti pranešimą naudodami parametrą „badpass_message“ taip:

Defaults  badpass_message="Password is wrong, please try again"

8. Padidinkite „Sudo Password Tries Limit“

Parametras passwd_tries naudojamas nurodyti, kiek kartų vartotojas gali bandyti įvesti slaptažodį.

Numatytoji vertė yra 3:

Defaults   passwd_tries=5 

Norėdami nustatyti slaptažodžio skirtąjį laiką (numatytasis parametras yra 5 minutės) naudodami parametrą passwd_timeout, pridėkite žemiau esančią eilutę:

Defaults   passwd_timeout=2

9. Leiskite „Sudo“ įžeisti jus, kai įvedate neteisingą slaptažodį

Jei vartotojas įveda neteisingą slaptažodį, sudo parodys įžeidimus terminale su parametru įžeidimai. Tai automatiškai išjungs parametrą „badpass_message“.

Defaults  insults 

Skaityti daugiau: Tegul „Sudo“ įžeidžia jus, kai įvedate neteisingą slaptažodį

10. Sužinokite daugiau apie „Sudo“ konfigūracijas

Be to, galite sužinoti daugiau sudo komandų konfigūracijų skaitydami: Skirtumas tarp „su“ ir „sudo“ ir „Kaip konfigūruoti„ sudo “sistemoje„ Linux “.

Viskas! Jūs galite pasidalinti kitomis naudingomis sudo komandų konfigūracijomis ar gudrybėmis ir patarimais su „Linux“ vartotojais per toliau pateiktą komentarų skyrių.