10 uporabnih konfiguracij Sudoers za nastavitev sudo v Linuxu


V Linuxu in drugih Unixu podobnih operacijskih sistemih lahko samo korenski uporabnik izvaja vse ukaze in izvaja nekatere kritične operacije v sistemu, kot so namestitev in posodobitev, odstranjevanje paketov, ustvarjanje uporabnikov in skupin, spreminjanje pomembnih sistemskih konfiguracijskih datotek itd.

Vendar lahko sistemski skrbnik, ki prevzame vlogo korenskega uporabnika, drugim običajnim sistemskim uporabnikom s pomočjo ukaza sudo in nekaj konfiguracij dovoli izvajanje nekaterih ukazov in izvajanje številnih vitalnih sistemskih operacij, vključno z zgoraj omenjenimi.

Lahko pa tudi sistemski skrbnik deli geslo korenskega uporabnika (kar ni priporočljiva metoda), tako da imajo običajni sistemski uporabniki dostop do korenskega uporabniškega računa prek ukaza su.

sudo dovoli uporabniku, da izvede ukaz kot root (ali drug uporabnik), kot določa varnostna politika:

  1. Bere in razčlenjuje/etc/sudoers, išče uporabnika, ki ga kliče, in njegova dovoljenja,
  2. nato uporabnika, ki prikliče, pozove k geslu (običajno uporabniško geslo, lahko pa je tudi geslo ciljnega uporabnika. lahko pa ga preskočite z oznako NOPASSWD),
  3. po tem sudo ustvari podrejeni postopek, v katerem pokliče setuid(), da preklopi na ciljnega uporabnika
  4. nato izvrši lupino ali ukaz, podan kot argumenti v zgornjem podrejenem procesu.

Spodaj je deset konfiguracij datotek/etc/sudoers za spreminjanje vedenja ukaza sudo z uporabo vnosov privzetih vrednosti.

$ 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

Za obseg tega vodnika bomo v spodnjih obrazcih postavili nič na prvo vrsto privzetih vrednosti. Parametri so lahko zastavice, celoštevilske vrednosti, nizi ali seznami.

Upoštevajte, da so zastavice implicitno logične in jih je mogoče izklopiti z operaterjem ! , seznami pa imajo dva dodatna operaterja dodelitve, + = (dodaj na seznam) in - = (odstrani s seznama).

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

1. Nastavite varno pot

To je pot, uporabljena za vsak ukaz s sudo, ima dva pomena:

  1. Uporablja se, kadar sistemski skrbnik ne zaupa uporabnikom sudo, da imajo varno spremenljivko okolja PATH
  2. Če želite ločiti\"korensko pot" in\"pot uporabnika", ta nastavitev ne vpliva samo na uporabnike, ki jih določi except_group.

Če ga želite nastaviti, dodajte vrstico:

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

2. Omogočite sudo na seji za prijavo uporabnika TTY

Če želite omogočiti, da se sudo prikliče iz pravega tty-ja, ne pa tudi z metodami, kot sta skripti cron ali cgi-bin, dodajte vrstico:

Defaults  requiretty   

3. Zaženite Sudo Command s pty

Nekajkrat lahko napadalci z zlonamernim programom zaženejo zlonamerni program (na primer virus ali zlonamerno programsko opremo), ki bi spet vzpostavil postopek v ozadju, ki ostane na uporabniški terminalski napravi, tudi ko se glavni program konča.

Če se želite izogniti takemu scenariju, lahko konfigurirate sudo tako, da zažene druge ukaze samo iz psuedo-pty s pomočjo parametra use_pty , ne glede na to, ali je vhodno/izhodno beleženje vklopljeno ali ne, kot sledi:

Defaults  use_pty

4. Ustvarite datoteko Sudo Log

Privzeto se sudo prijavi v syslog (3). Če pa želite določiti datoteko dnevnika po meri, uporabite parameter datoteke datoteke tako:

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

Če želite v datoteko dnevnika po meri zapisati ime gostitelja in štirimestno leto, uporabite parametra log_host in log_year, kot sledi:

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

Spodaj je primer datoteke dnevnika po meri sudo:

5. Vnos/izhod ukaza ukaza Sudo

Parametra log_input in log_output omogočata sudo, da zažene ukaz v psevdo-tty in dovzetno zabeleži vse uporabniške vnose in vse izhodne podatke, poslane na zaslon.

Privzeti imenik V/I dnevnika je/var/log/sudo-io in če obstaja zaporedna številka seje, je shranjen v tem imeniku. Imenik po meri lahko določite s parametrom iolog_dir.

Defaults   log_input, log_output

Podprta so nekatera ubežna zaporedja, na primer % {seq} , ki se razširi na monotono naraščajočo zaporedno številko base-36, na primer 000001, kjer se vsaki dve števki uporabita za oblikovanje novega imenika, npr. 00/00/01 kot v spodnjem primeru:

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

Preostale datoteke v tem imeniku si lahko ogledate z ukazom cat.

6. Predavanje Sudo uporabniki

Če želite uporabnikom sudo predavati o uporabi gesla v sistemu, uporabite parameter predavanja, kot je prikazano spodaj.

Ima 3 možne vrednosti:

  1. vedno - vedno predavaj uporabniku.
  2. enkrat - uporabniku preda le prvič, ko izvrši ukaz sudo (to se uporablja, ko vrednost ni določena)
  3. nikoli - nikoli predavati uporabniku.

 
Defaults  lecture="always"

Poleg tega lahko nastavite datoteko predavanja po meri s parametrom datoteke predavanja, v datoteko vnesite ustrezno sporočilo:

Defaults  lecture_file="/path/to/file"

7. Pokaži sporočilo po meri, ko vnesete napačno geslo za sudo

Ko uporabnik vnese napačno geslo, se v ukazni vrstici prikaže določeno sporočilo. Privzeto sporočilo je »oprosti, poskusi znova«, sporočilo lahko spremenite s pomočjo parametra badpass_message, kot sledi:

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

8. Povečajte sudo Password Tries Limit

Parameter passwd_tries se uporablja za določitev, kolikokrat lahko uporabnik poskusi vnesti geslo.

Privzeta vrednost je 3:

Defaults   passwd_tries=5 

Če želite nastaviti časovno omejitev gesla (privzeto je 5 minut) s parametrom passwd_timeout, dodajte spodnjo vrstico:

Defaults   passwd_timeout=2

9. Naj vas Sudo žali, ko vnesete napačno geslo

V primeru, da uporabnik vnese napačno geslo, bo sudo na terminalu prikazal žalitve s parametrom insults. To bo samodejno izklopilo parameter badpass_message.

Defaults  insults 

Preberite več: Naj vas Sudo žali, ko vnesete napačno geslo

10. Več o konfiguracijah Sudo

Poleg tega lahko izveste več konfiguracij ukazov sudo tako, da preberete: Razlika med su in sudo in Kako konfigurirati sudo v Linuxu.

To je to! Druge uporabne konfiguracije ali trike in nasvete sudo ukazov lahko delite z uporabniki Linuxa v spodnjem oddelku za komentarje.