Sådan lader brugerne sikkert redigere filer ved hjælp af sudoedit på Linux

Sådan lader brugerne sikkert redigere filer ved hjælp af sudoedit på Linux

Antag at du er systemadministrator i et firma, hvor teams hovedsagelig arbejder på Linux med begrænsede rettigheder. Forestil dig nu en situation, hvor medlemmer af et af teamene - som led i noget nyt arbejde - ofte skal redigere en fil, der kræver superbrugerrettigheder. Hvad ville du gøre?

En mulighed er at give dem sudo-adgangen, men det ville være som at give en fremmed adgang til dit komplette hjem, når alt de behøver, er at være i et af dine værelser - hvad jeg mener er, at standard sudo-adgang vil lad dem gøre alt, hvad der kræver root privilegier, når alt hvad der kræves, er evnen til at redigere en bestemt systemfil.

I betragtning af den slags fleksibilitets 'sudo'-tilbud er den anden mulighed du har til at tilpasse' sudo'-politikken på en måde, der kun tillader privilegiet at redigere den pågældende fil. For eksempel, noget som dette:

% newsudo ALL = vim / path / to / file

Selv om det uden tvivl er en langt bedre løsning end at give den komplette sudo adgang, er der stadig et smuthul, som nogen kunne udnytte.

For at forstå, hvad jeg taler om, overveje et scenario hvor-i ovennævnte begrænset adgang er givet til gruppen, og nogen åbner den pågældende fil for redigering ved hjælp af kommandoen 'sudo'.

Nu vil et klogt sind med god viden om vim vide, at de kan starte en ny skal fra editoren - alt de skal gøre er at køre følgende vim-kommando:

:skal

Dette vil straks placere dig i en interaktiv shell. Hvis du prøver disse trin på din maskine, skal du blot udføre kommandoen 'whoami' og du vil forstå, hvilket smuthul jeg talte om - Ja, du er i skallen som rod.

Her er et eksempel skærmbillede:

Det er overflødigt at sige, at formålet med at give redigeringstilgang til kun en enkelt fil blev besejret, og brugeren kan gøre noget nu.

Lad os se om der er nogen anden mulighed, vi har. Der findes en NOEXEC-tag, som du kan bruge i din sudoers-indtastning:

% newsudo ALL = noexec: vim / path / to / file

NOEXEC giver dig grundlæggende mulighed for at forhindre et program, der køres af sudo, fra at udføre andre programmer. Så er det den ultimative løsning? Desværre nej. Af grunde, her er hvordan sudoers manual forklarer dette tag:

noexec
Mange systemer, der understøtter delte biblioteker, har mulighed for at tilsidesætte standardbiblioteksfunktioner ved at pege på en miljøvariabel (normalt LD_PRELOAD) til et alternativt delt bibliotek. På sådanne systemer kan sudos noexec-funktionalitet bruges til at forhindre et program, der køres af sudo, fra at udføre andre programmer. Bemærk dog, at dette kun gælder for indbyggede dynamisk forbundne eksekverbare filer. Statisk forbundne eksekverbare og udenlandske eksekverbare virksomheder, der kører under binær emulering, påvirkes ikke.
Noexec-funktionen er kendt for at arbejde på SunOS, Solaris, * BSD, Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x og AIX 5.3 og over. ... ... ... Hvis du vil aktivere noexec til en kommando, skal du bruge NOEXEC-taggen som dokumenteret i afsnittet Brugerspecifikation ovenfor. Her er dette eksempel igen: aaron shanty = NOEXEC: / usr / bin / more, / usr / bin / vi Dette gør det muligt for brugeren aaron at køre / usr / bin / more og / usr / bin / vi med noexec aktiveret. Dette forhindrer de to kommandoer i at udføre andre kommandoer (f.eks. En skal). Hvis du er i tvivl om, hvorvidt dit system kan understøtte noexec, kan du altid bare prøve det og kontrollere, om shell undslipper arbejde, når noexec er aktiveret.
Bemærk, at begrænsning af shell escape er ikke et universalmiddel. Programmer, der kører som root, er stadig i stand til mange potentielt farlige operationer (som f.eks. Ændring eller overskrivning af filer), der kan føre til utilsigtet privilegium eskalering. ... ... ...

Hvis du læser omhyggeligt teksten fremhævet med fed skrift, vil du vide, at NOEXEC har sit eget sæt begrænsninger.

Så hvad er den mest pålidelige løsning da? Nå, det er det sudoedit. Selv sudoers manual anbefaler også dette værktøj:

I det specifikke tilfælde af en editor er en sikrere tilgang at give brugeren tilladelse til at køre sudoedit.

Sudoedit

Sudoedit er en indbygget kommando, der giver brugerne mulighed for sikkert at redigere filer. Ifølge sudo man-siden svarer 'sudoedit' til at udføre 'sudo' med kommandolinjen '-e'.

Hvorfor er det bedre

Med 'sudoedit' har brugerne mulighed for at bruge deres foretrukne editor - hvilket er i modsætning til den løsning, vi diskuterede i starten af ​​denne vejledning, hvor brugere er tvunget til at bruge Vim-editoren - så de kan nyde deres egne tilpasninger. Og den største årsag til alle med 'sudoedit' brugeren redigerer filen som sig selv og ikke 'root'.

Hvordan Sudoedit virker

Hvis du vil bruge sudoedit, skal posten i sudoerne f.eks. Være sådan noget:

% newsudo ALL = sudoedit / path / to / file

Og brugere, der er en del af 'newsudo'-gruppen, vil kunne redigere filen ved at køre følgende kommando:

sudoedit / path / to / file

Så hvad denne kommando vil gøre er, at den først vil oprette en midlertidig kopi af den fil, du vil redigere. Derefter vil kommandoen søge i SUDO_EDITOR, VISUAL og EDITOR miljøvariablerne (i den rækkefølge) for at bestemme hvilken editor der skal påberåbes for at åbne den midlertidige kopi, der netop er blevet oprettet. Når brugeren er færdig med modifikationsarbejdet, kopieres ændringerne tilbage til den oprindelige fil.

Her er den detaljerede forklaring fra 'sudo' kommandoen man side:

-e, --edit 
Rediger en eller flere filer i stedet for at køre en kommando. I stedet for et stinavn anvendes strengen "sudoedit", når man konsulterer sikkerhedspolitikken. Hvis brugeren er godkendt af politikken, tages følgende trin: 1. Midlertidige kopier er lavet af de filer, der skal redigeres med ejeren, der er sat til den påtalende bruger. 2. Redaktøren angivet af politikken køres for at redigere de midlertidige filer. Sudoers-politikken bruger SUDO_EDITOR, VISUAL og EDITOR miljøvariablerne (i den rækkefølge). Hvis ingen af ​​SUDO_EDITOR, VISUAL eller EDITOR er indstillet, bruges det første program, der er angivet i editor sudoers (5). 3. Hvis de er blevet ændret, kopieres de midlertidige filer tilbage til deres oprindelige placering, og de midlertidige versioner fjernes. Hvis den angivne fil ikke findes, oprettes den. Bemærk, at i modsætning til de fleste kommandoer, der køres af sudo, køres editoren med den påkaldende brugers miljø umodificeret. Hvis sudo af en eller anden grund ikke kan opdatere en fil med sin redigerede version, vil brugeren modtage en advarsel, og den redigerede kopi forbliver i en midlertidig fil.

Konklusion

Nu skal du have en grundlæggende ide om 'sudoedit', herunder når du skal bruge det, og hvorfor det er bedre end at bruge 'sudo', når alt du vil, er at redigere en fil eller nogle få filer. Selvfølgelig har sudoedit ligesom ethvert andet sikkerhedsrelateret værktøj haft sin andel af udnyttelser, men det er stadig en anbefalet løsning i mange brugssager.

Kilde

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.