A sudo hozzáférés vezérlése Linuxon

A sudo parancs lehetővé teszi, hogy parancsokat futtasson Linuxon, mintha valaki más lennél, például root. A sudo azt is lehetővé teszi, hogy részletesen szabályozza, ki férhet hozzá a root képességeihez. Adjon a felhasználóknak teljes hozzáférést, vagy engedje meg nekik a parancsok egy kis részhalmazát. Megmutatjuk, hogyan.

sudo és Root engedélyek

Mindannyian hallottuk (a túlzott leegyszerűsítés), hogy a Linuxban minden fájl. Valójában az operációs rendszerben gyakorlatilag minden, a folyamatoktól, fájloktól, könyvtáraktól, socketektől és csövektől a kernellel egy fájlleírón keresztül beszél. Tehát bár minden nem fájl, a legtöbb operációs rendszer objektumot úgy kezeli, mintha az lenne. Ahol lehetséges, a Linux és a Unix-szerű operációs rendszerek tervezése ezt az elvet követi.

A „minden egy fájl” koncepciója messzemenően terjed a Linuxban. Könnyen belátható tehát, hogy a Linux fájlengedélyei hogyan váltak a felhasználói jogosultságok és jogok egyik alappillére. Ha van egy fájl vagy könyvtár (egy speciális fajta fájl), akkor azt csinálhat vele, amit szeretne, beleértve a szerkesztést, átnevezést, áthelyezést és törlést. A fájl engedélyeit úgy is beállíthatja, hogy más felhasználók vagy felhasználói csoportok elolvashassák, módosíthassák vagy végrehajthassák a fájlt. Mindenkire ezek az engedélyek vonatkoznak.

Mindenki, aki a szuperfelhasználón kívül root néven ismert. A root fiók egy speciálisan kiváltságos fiók. Nem kötik az operációs rendszer egyetlen objektumának engedélyei sem. A root felhasználó bármit megtehet, és nagyjából bármikor.

Természetesen bárki, aki hozzáfér a root jelszavához, megteheti ugyanezt. Rosszindulatból vagy véletlenül pusztítást végezhetnek. Valójában a root felhasználó is pusztítást okozhat, ha hibát követ el. Senki sem tévedhetetlen. Veszélyes cucc.

Ez az oka annak, hogy ma már az a bevált gyakorlat, hogy egyáltalán ne jelentkezzen be rootként. Jelentkezzen be egy normál felhasználói fiókkal, és használja a sudo-t rövid időre emelje ki jogosultságait szükséged van rájuk. Ez gyakran csak egyetlen parancs kiadása.

A sudoers listája

A sudo már telepítve volt a cikk kutatásához használt Ubuntu 18.04.3, Manjaro 18.1.0 és Fedora 31 számítógépekre. Ez nem meglepetés. A sudo az 1980-as évek eleje óta létezik, és szinte minden disztribúcióban a szuperfelhasználói működés szabványos eszközévé vált.

Egy modern disztribúció telepítésekor a telepítés során létrehozott felhasználó hozzáadódik a sudoers nevű felhasználók listájához. Ezek azok a felhasználók, akik használhatják a sudo parancsot. Mivel rendelkezik sudo képességekkel, ezek segítségével további felhasználókat is hozzáadhat a sudoerek listájához.

Természetesen meggondolatlanság akarva-akaratlanul kiosztani a teljes superuser státuszt, vagy bárkinek, akinek csak részleges vagy konkrét igénye van. A sudoers lista lehetővé teszi annak megadását, hogy a különböző felhasználók mely parancsokkal használhatják a sudo-t. Így nem adod át nekik a királyság kulcsait, de továbbra is teljesíthetik, amit kell.

  A Breaking Bad inspirálta üdvözletét Aaron Paul új alkalmazásával cserélje

Parancs futtatása másik felhasználóként

Eredetileg „superuser do”-nak hívták, mert szuperfelhasználóként csinálhattál dolgokat. A hatóköre most kibővült, és a sudo segítségével úgy hajthatja végre a parancsokat, mintha bármelyik felhasználó lennénk. Ezt az új funkciót tükrözve átnevezték. Ezt ma „helyettesítő felhasználó csinálja”.

A sudo használatához egy parancs másik felhasználóként való futtatásához a -u (user) opciót kell használnunk. Itt fogjuk futtatni a Ki vagyok én parancsot mária felhasználóként. Ha a sudo parancsot a -u kapcsoló nélkül használja, akkor a parancsot rootként fogja futtatni.

És természetesen, mivel sudo-t használ, a rendszer kérni fogja a jelszavát.

sudo -u mary whoami

A whoami válasza azt mondja, hogy a parancsot futtató felhasználói fiók mary.

A sudo paranccsal bejelentkezhet másik felhasználóként a jelszavának ismerete nélkül. A rendszer kérni fogja a saját jelszavát. A -i (bejelentkezés) opciót kell használnunk.

sudo -i -u mary
pwd
whoami
ls -hl
exit

Mária néven vagy bejelentkezve. A mary felhasználói fiókhoz tartozó „.bashrc”, „.bash_aliases” és „.profile” fájlok feldolgozása pontosan úgy történik, mintha a mary felhasználói fiók tulajdonosa maga jelentkezett volna be.

A parancssor megváltozik, és ez tükrözi a mary felhasználói fiók munkamenetét.
A pwdparancs azt mondja, hogy most már a Mary’s-ben vagy kezdőkönyvtár.
whoami azt mondja, hogy mary felhasználói fiókot használ.
A könyvtárban található fájlok a mary felhasználói fiókhoz tartoznak.
Az exit parancs visszatér ide a normál felhasználói fiók munkamenetét.

A sudoers fájl szerkesztése

Ahhoz, hogy felhasználókat adjon a sudo használatára jogosult személyek listájához, szerkesztenie kell a sudoers fájlt. Nagyon fontos, hogy ezt mindig csak a visudo paranccsal tegye. A visudo parancs megakadályozza, hogy több ember egyszerre próbálja meg szerkeszteni a sudoers fájlt. Az is szintaktikai ellenőrzést és elemzést végez mentésekor a fájl tartalmára.

Ha a szerkesztések nem felelnek meg a teszteken, a fájl nem menti vakon. Kapsz lehetőségeket. Törölheti és visszavonhatja a módosításokat, visszatérhet és újra szerkesztheti a változtatásokat, vagy kényszerítheti a hibás módosítások mentését. Az utolsó lehetőség nagyon rossz ötlet. Ne essen erre a kísértés. Olyan helyzetbe kerülhet, hogy véletlenül mindenki ki van zárva a sudo használatából.

Bár a szerkesztési folyamatot a visudo paranccsal indítja el, a visudo nem szerkesztő. Meghívja az egyik meglévő szerkesztőt a fájl szerkesztéséhez. Manjaro és Ubuntu rendszeren a visudo parancs elindult az egyszerű szerkesztő nano. A Fedorán a visudo elindította a képességesebbetde kevésbé intuitív– vim.

Ha szívesebben szeretné használni a nano-t a Fedorán, akkor ezt egyszerűen megteheti. Először telepítse a nano-t:

sudo dnf install nano

Ezután a visudo-t ezzel a paranccsal kellett meghívni:

sudo EDITOR=nano visudo

Ez jó jelöltnek tűnik álnévre. Megnyílik a nano szerkesztő a benne betöltött sudoers fájllal.

Felhasználók hozzáadása a sudo csoporthoz

A visudo használatával nyissa meg a sudoers fájlt. Használja ezt a parancsot vagy a fent leírt parancsot a választott szerkesztő megadásához:

sudo visudo

Görgessen végig a sudoers fájlban, amíg meg nem látja a %sudo bejegyzés definícióját.

A százalékjel azt jelzi, hogy ez egy csoportdefiníció, nem pedig egy felhasználói definíció. Egyes disztribúciókban a %sudo sor elején egy # hash található. Ez megjegyzéssé teszi a sort. Ha ez a helyzet, távolítsa el a hash-t, és mentse a fájlt.

  Hogyan importálhatunk adatokat egy másik Google-lapról

A %sudo sor a következőképpen bomlik fel:

%sudo: A csoport neve.
ALL=: Ez a szabály a hálózat összes gazdagépére vonatkozik.
(ALL:ALL): ennek a csoportnak a tagjai minden felhasználóként és csoportként futtathatnak parancsokat.
Mind: a csoport tagjai az összes parancsot futtathatják.

Hogy ezt kissé átfogalmazzuk, a csoport tagjai bármely felhasználóként vagy csoportként bármilyen parancsot futtathatnak ezen a számítógépen vagy a hálózat bármely más gazdagépén. Tehát egy egyszerű módja annak, hogy valakit root jogosultságokkal és a sudo használatának lehetőségével adjunk, ha hozzáadjuk a sudo csoporthoz.

Két felhasználónk van, Tom és Mary, akiknek tom és mary felhasználói fiókjai vannak. A tom felhasználói fiókot hozzáadjuk a sudo csoporthoz a usermod paranccsal. A -G (groups) opció azt a csoportot határozza meg, amelyhez a tom-fiókot hozzáadjuk. Az -a (hozzáfűzés) opció hozzáadja ezt a csoportot azoknak a csoportoknak a listájához, amelyekben a tom felhasználói fiók már szerepel. E beállítás nélkül a tom felhasználói fiók bekerülne az új csoportba, de eltávolításra kerülne a többi csoportból.

sudo usermod -a -G sudo tom

Nézzük meg, hogy Mary mely csoportokba tartozik:

groups

A mary felhasználói fiók csak a mary csoportban található.

Nézzük meg Tommal:

groups

A tom felhasználói fiók – és így Tom – a tom és sudo csoportban található.

Próbáljuk rávenni Maryt, hogy olyan dolgot tegyen, amihez sudo jogosultság szükséges.

sudo less /etc/shadow

Mary nem nézhet bele a korlátozott „/etc/shadow” fájlba. Enyhe kijelentést kap, amiért engedély nélkül próbált sudo-t használni. Nézzük, hogyan boldogul Tom:

sudo less /etc/shadow

Amint Tom beírja a jelszavát, megjelenik neki az /etc/shadow fájl.

Csak azzal, hogy hozzáadta a sudo csoporthoz, felkerült a sudo-t használni tudók elit soraiba. Teljesen korlátlan.

Korlátozott sudo-jogok biztosítása a felhasználóknak

Tom teljes sudo jogot kapott. Bármit megtehet, amire a root – vagy bárki más a sudo csoportból – képes. Ez több hatalmat biztosíthat neki, mint amennyit szívesen átad. Néha a felhasználónak olyan funkciót kell végrehajtania, amely root jogosultságot igényel, de nincs indokolt eset, hogy teljes sudo hozzáféréssel rendelkezzenek. Ezt az egyensúlyt úgy érheti el, ha hozzáadja őket a sudoers fájlhoz, és felsorolja a használható parancsokat.

Találkozzunk Harryvel, a Harry felhasználói fiók tulajdonosával. Nem tagja a sudo csoportnak, és nincsenek sudo jogosultságai.

groups

Harry számára hasznos, ha tud szoftvert telepíteni, de nem akarjuk, hogy teljes sudo jogosultsággal rendelkezzen. Ok nincs probléma. indítsuk el a visudot:

sudo visudo

Görgessen le a fájlban, amíg el nem éri a csoportdefiníciókat. Majd írunk egy sort Harryért. Mivel ez egy felhasználói és nem egy csoportdefiníció, nem kell százalékjellel kezdenünk a sort.

A Harry felhasználói fiók bejegyzése a következő:

harry    ALL=/usr/bin/apt-get

Vegye figyelembe, hogy van egy tabulátor a „harry” és az „ALL=” között.

Ez azt jelenti, hogy a harry felhasználói fiók használhatja a felsorolt ​​parancsokat a hálózathoz kapcsolódó összes gazdagépen. A listán egy parancs található, ez a „/usr/bin/apt-get”. Több parancshoz is hozzáférést biztosíthatunk Harrynek, ha hozzáadjuk azokat a parancslistához, vesszővel elválasztva.

  Egyéni szín használata táblázatszegélyekhez a Microsoft Word programban

Adja hozzá a sort a sudoers fájlhoz, és mentse el a fájlt. Ha még egyszer ellenőrizni szeretné, hogy a sor szintaktikailag helyes-e, megkérhetjük a Visudo-t, hogy vizsgálja meg a fájlt, és ellenőrizze helyettünk a szintaxist a -c (csak ellenőrzés) kapcsolóval:

sudo visudo -c

Az ellenőrzések megtörténnek, és a visudo jelentése szerint minden rendben van. Harrynek most már képesnek kell lennie az apt-get használatára szoftver telepítéséhez de vissza kell utasítani, ha más, sudo-t igénylő parancsot próbál használni.

sudo apt-get install finger

Harry megkapta a megfelelő sudo jogokat, és képes lesz telepíteni a szoftvert.

Mi történik, ha Harry egy másik parancsot próbál használni, amelyhez sudo szükséges?

sudo shutdown now

Harryt megakadályozzák a parancs végrehajtásában. Sikeresen biztosítottunk neki specifikus, korlátozott hozzáférést. Használhatja a kijelölt parancsot, és semmi mást.

A sudoers felhasználói álnevek használata

Ha Marynek ugyanazokat a jogosultságokat akarjuk adni, akkor a mary felhasználói fiók sudoers fájljába pontosan ugyanúgy hozzáadhatunk egy sort, mint Harry esetében. Egy másik, ügyesebb módja ugyanennek a User_Alias ​​használatával.

a sudoers fájlban a User_Alias ​​a felhasználói fióknevek listáját tartalmazza. A User_Alias ​​neve ezután felhasználható egy definícióban az összes felhasználói fiók reprezentálására. Ha módosítani szeretné az adott felhasználói fiókok jogosultságait, csak egy sort kell szerkesztenie.

Hozzunk létre egy User_Alias-t, és használjuk a sudoers fájlunkban.

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.


Adja hozzá a User_Alias-t a következő beírásával:

User_Alias INSTALLERS = harry, mary

Az egyes elemeket szóköz választja el, nem tabulátor. A logika így bomlik:

User_Alias: Ez jelzi a visudo-nak, hogy ez User_Alias ​​lesz.
TELEPÍTŐK: Ez egy tetszőleges név ennek az álnévnek.
= harry, mary: Azon felhasználók listája, akiket fel kell venni ebben az aliasban.

Most szerkesztjük azt a sort, amelyet korábban hozzáadtunk a harry felhasználói fiókhoz:

harry    ALL=/usr/bin/apt-get

Módosítsa úgy, hogy a következő legyen:

INSTALLERS    ALL=/usr/bin/apt-get

Ez azt mondja, hogy az „TELEPÍTŐK” definíciójában szereplő összes felhasználói fiók, a User_Alias ​​futtathatja az apt-get parancsot. Ezt tesztelhetjük Maryvel, akinek most már képesnek kell lennie a szoftverek telepítésére.

sudo apt-get install colordiff

Mary azért tudja telepíteni a szoftvert, mert a „TELEPÍTŐK” User_Alias ​​része, és ez a User_Alias ​​megkapta ezeket a jogokat.

Három gyors sudo trükk

Ha elfelejtette hozzáadni a sudo-t egy parancshoz, írja be

sudo !!

És az utolsó parancs megismétlődik a sor elejéhez hozzáadott sudo-val.

Miután használta a sudo-t és hitelesítette a jelszavát, 15 percig nem kell további sudo parancsokkal használnia a jelszavát. Ha azonnal el szeretné felejteni a hitelesítést, használja a következőket:

sudo -k

Gondolkozott már azon, hol láthatja a sikertelen sudo parancskísérleteket? A „/var/log/auth.log” fájlba lépnek. Megtekintheti:

less /var/log/auth.log

Láthatjuk a mary felhasználói fiók bejegyzését, aki a TTY pts/1-en volt bejelentkezve, amikor „root” felhasználóként próbálta futtatni a shutdown parancsot.

Nagy Erővel…

…az a képesség, hogy ennek egy részét másokra ruházzuk át. Most már tudja, hogyan lehet más felhasználókat szelektíven felhatalmazni.