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:
- Bere in razčlenjuje/etc/sudoers, išče uporabnika, ki ga kliče, in njegova dovoljenja,
- 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),
- po tem sudo ustvari podrejeni postopek, v katerem pokliče setuid(), da preklopi na ciljnega uporabnika
- 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:
- Uporablja se, kadar sistemski skrbnik ne zaupa uporabnikom sudo, da imajo varno spremenljivko okolja PATH
- Č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:
- vedno - vedno predavaj uporabniku.
- enkrat - uporabniku preda le prvič, ko izvrši ukaz sudo (to se uporablja, ko vrednost ni določena)
- 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.