Vissza a bloghoz

A Linux Sudoers fájl konfigurálása

A Linux Sudoers fájl konfigurálása

Bevezetés

Gondolkozott már azon, miért kell beírnia a “sudo” parancsot, amikor bizonyos parancsokat próbál végrehajtani egy Linux vagy Unix operációs rendszer környezetben? A sudo valójában egy rövidítés, a jelentése “super-user do”. Amikor a sudo parancsot használja, programokat futtathat és parancsokat hajthat végre egy másik felhasználó biztonsági jogosultságaival.

Alapértelmezés szerint a sudo parancs lehetővé teszi a rendszerfelhasználók számára, hogy a parancsokat a super-user jogosultságaival hajtsák végre. Egy Linux/Unix operációs rendszer új telepítése létrehoz egy root fiókot, amely szuperfelhasználói jogosultságokkal rendelkezik. Egy Linux/Unix rendszer kezdeti szerverbeállításakor a rendszergazdák a root fiókkal lépnek be, és kiosztják a rendszerjogosultságokat a többi rendszerfelhasználónak. Ezek a beállítások egy sudoers nevű fájlban tárolódnak. Egy root jogosultságú fiók szerkesztheti a sudoers fájlt, és módosíthatja a többi felhasználó jogosultságait.

Ebben az útmutatóban bemutatjuk, hogyan szerezhet root jogosultságokat, és hogyan végezhet módosításokat a sudoers fájlban.

Előfeltételek

Ez egy gyakorlati útmutató, és a parancsokat ki kell próbálnia az útmutató teljes megértéséhez. Ebben az útmutatóban Ubuntu 20.04 szervert fogunk használni, azonban a lépéseket akkor is követheti, ha a modern Linux disztribúciók bármelyikével rendelkezik, mint például a Debian és CentOS. Követheti ezt a linket, hogy saját Ubuntu felhőszervert hozzon létre a CloudSigma-n.

Root Jogosultságok Megszerzése

A root jogosultságokat háromféleképpen szerezheti meg, amelyeket alább ismertetünk:

Bejelentkezés root-ként

A legegyszerűbb módszer, amelyet a legtöbben a root jogosultságok megszerzésére használnak, a rendszerbe való bejelentkezés a root felhasználói adatokkal. Ha a helyi gépéhez fér hozzá, egyszerűen megadhatja a felhasználónevet, és a rendszer kérni fogja a jelszót.

Egy másik módszer, amellyel root-ként jelentkezhet be, az SSH használata – ez egy parancssori eszköz a szerverre való bejelentkezéshez és feladatok elvégzéséhez. Ehhez a szerver felhasználónevére és IP-címére van szükség. A root-ként való bejelentkezés szintaxisa a következő, helyettesítse be a szervere IP-címét:

Amikor beírja a fenti parancsot a terminálba, a rendszer vagy a jelszó megadását kéri, ha még nem állította be az SSH-kulcsokat, vagy az SSH-kulcs jelmondatának megadását kéri, ha már beállította azokat. Miután megadta a helyes adatokat, bejelentkezik. Kövesse ezt az útmutatót a lépésről lépésre történő utasításokért arról, hogyan használhatja az SSH-t egy távoli szerverhez való csatlakozáshoz Ubuntuban.

Az su használata root-tá váláshoz

Bejelentkezhet egy Linux rendszerbe bármilyen más, nem root fiókkal is, ami általában a javasolt módszer a nem adminisztratív feladatok elvégzésekor. Amikor root jogosultságokat szeretne szerezni, egyszerűen beírhatja az su parancsot a terminálba:

A rendszer kéri a root jelszót, ami után hozzáférést kap egy root shell munkamenethez. Ebben a shell munkamenetben minden adminisztratív feladatot elvégezhet, és amikor vissza szeretne térni a normál shellhez, egyszerűen nyomja meg a Ctrl + D billentyűkombinációt. Opcionálisan beírhatja az exit parancsot a terminálon, és nyomja meg az entert.

A sudo használata root jogosultságú parancsok futtatásához

A sudo parancs, amelyet az útmutató elején röviden bemutattunk, lehetővé teszi egysoros parancsok végrehajtását anélkül, hogy root jogosultságú shellre lenne szükség. Egyszerűen írja be a sudo parancsot, majd a végrehajtandó parancsot:

Például a rendszer frissítéséhez a következőt írhatja be:

Ez jelszót fog kérni. A különbség az su és a sudo parancs között az, hogy az su a root jelszót kéri, míg a sudo a jelenlegi felhasználó jelszavát. A sudo hozzáférés alapértelmezés szerint nincs megadva a felhasználóknak, mert komoly biztonsági következményekkel jár a rendszerre nézve. Erről bővebben a következő szakaszokban lesz szó.

A Visudo használata a sudoers fájl szerkesztéséhez

A sudo jogosultságok a sudoers fájlban vannak konfigurálva, amely itt található: /etc/sudoers. Ezek a jogosultságok szükségesek ahhoz, hogy bármely felhasználó hozzáférjen a Linux rendszerhez. Bármilyen szintaktikai hiba megakadályozza a felhasználókat a rendszerbe való bejelentkezésben, így a rendszer működésképtelenné válik.

Visudo parancs egy speciális szerkesztővel nyitja meg a fájlt, amely mentéskor ellenőrzi a fájl szintaxisát. Ezért fontos, hogy kizárólag a visudo parancsot használja a fájl megnyitásához, hogy elkerülje a szerverrendszer használhatatlanná tételét. Alapértelmezés szerint a visudo úgy volt beállítva, hogy a szövegszerkesztőt a (vi) vim programmal nyissa meg. Az Ubuntu azonban úgy konfigurálta a visudo-t, hogy a nano szövegszerkesztőt használja. Debian vagy Ubuntu rendszeren a következő parancs beírásával válthat át egy másik szerkesztőre:

Ez megjeleníti a szerkesztők listáját, amelyből kiválaszthatja az alapértelmezett szerkesztőt, amint az a képernyőképen látható. Válassza ki a kívánt szerkesztő melletti számot:

displays a list of editors

Egy CentOS Linux disztribúción szerkessze az /etc/sudoers fájlt, és adja hozzá az alábbi sorokat:

Írja be a következő parancsot. Ne felejtse el kicserélni a your_editor_of_choice részt a választott szerkesztő nevére:

A parancs hozzáadja a sort a ~/.bashrc fájlhoz. A változtatások érvénybe léptetéséhez írja be a következőt a terminálba:

Most, hogy a visudo konfigurálva van, megnyithatja a fájlt a(z) /etc/sudoers helyen a következő parancs beírásával:

A Sudoers fájl szerkesztése

Az előző parancs futtatásakor a fájl megnyílik a beállított elsődleges szerkesztőben. Alább látható a fájl tartalma:

A megjegyzések meglehetősen beszédesek, de az alábbiakban megbeszéljük, mit jelentenek a sorok.

Alapértelmezett sorok
  • Defaults env_reset – Visszaállítja a terminál környezeti változóit a felhasználói változók eltávolításához. Ezáltal törli a potenciálisan káros változókat a sudo munkamenetből.
  • Defaults mail_badpass – Utasítja a rendszert, hogy küldjön e-mail értesítést a sikertelen sudo jelszókísérletekről a beállított mailto felhasználónak, általában a root fióknak.
  • Defaults secure_path – Tartalmazza azokat a fájlrendszerbeli útvonalakat, amelyeken a sudo művelet keresni fogja a végrehajtandó alkalmazásokat, megakadályozva ezzel a rendszerre veszélyes egyéb, felhasználó által meghatározott útvonalak használatát.
Felhasználói jogosultságokat meghatározó sorok
Ez a sor különbözik a többitől, és a root felhasználó jogosultságait határozza meg. Íme, mit jelentenek a sorban lévő egyes címkék:

  1. root ALL=(ALL:ALL) ALL – Az első mező azt a felhasználónevet határozza meg, amelyre a szabály vonatkozik. Ebben az esetben ez a root felhasználó.
  2. root ALL=(ALL:ALL) ALL – Az első ALL azt határozza meg, hogy a szabály minden gazdagépre vonatkozik.
  3. root ALL=(ALL:ALL) ALL – A második ALL azt határozza meg, hogy a felhasználó, akire ez a szabály vonatkozik (azaz a root) bármely felhasználó nevében futtathat parancsokat.
  4. root ALL=(ALL:ALL) ALL – A harmadik ALL azt határozza meg, hogy a felhasználó, akire ez a szabály vonatkozik (azaz a root) bármely csoport nevében futtathat parancsokat.
  5. root ALL=(ALL:ALL) ALL – Az utolsó ALL azt határozza meg, hogy ezek a szabályok minden parancsra vonatkoznak.

E szabály alapján a root felhasználó bármilyen parancsot futtathat a sudo használatával, miután megadta a helyes jelszót.

Csoportos jogosultságokat meghatározó sorok

Ezek a sorok a csoportokra vonatkozó sudo jogosultsági szabályokat határozzák meg. A mezők ugyanazokat a műveleteket jelölik, mint a felhasználói jogosultságok sorai, egy kis különbséggel: % jellel kezdődnek a csoportnevek jelölésére.

Amint látható, az admin csoport bármely parancsot végrehajthat bármely felhasználóként bármely gazdagépen. A sudo csoport ugyanezzel a jogosultsággal rendelkezik, azzal a kiegészítő jogosultsággal, hogy bármely csoport nevében végrehajthat parancsokat.

Az /etc/sudoers.d beágyazási sor

A #includedir /etc/sudoers.d sor a sor elején lévő # karakter miatt megjegyzésnek tűnhet. Ez azonban egy beágyazási (include) direktíva, amely azt jelzi, hogy az /etc/sudoers.d könyvtárban található fájlokat be kell olvasni és a sudoers fájl részeként kell használni. Az ebben a könyvtárban lévő fájlok ugyanazokat a szabályokat követik, mint a sudoers fájl.

A könyvtárban lévő minden olyan fájl, amely nem tartalmaz pontot (.) karaktert, és nem végződik ~ karakterre, beolvasásra és hozzáfűzésre kerül a sudoers fájl konfigurációjához. A könyvtár lehetővé teszi az alkalmazások számára, hogy telepítéskor módosítsák a sudo jogosultságokat azáltal, hogy az összes kapcsolódó szabályukat egyetlen dedikált fájlba helyezik a /etc/sudoers.d könyvtárban, anélkül, hogy módosítanák az alapértelmezett sudoers fájlt. Sőt, ha ellenőrizni vagy visszavonni szeretné egy alkalmazás jogosultságait, könnyen ellenőrizheti vagy módosíthatja a fájlokat a /etc/sudoers.d könyvtárban, anélkül, hogy közvetlenül módosítaná a /etc/sudoers fájlt.

Ökölszabályként az /etc/sudoers.d könyvtárban lévő összes fájlt mindig a visudo paranccsal kell szerkeszteni. Alább látható a szintaxis, ne felejtse el kicserélni a szerkeszteni kívánt fájl nevét a parancsban:

Sudo jogosultságok hozzárendelése egy felhasználóhoz

Amikor egy új felhasználónak általános sudo hozzáférést ad, az azt jelenti, hogy a felhasználói fióknak teljes adminisztrátori hozzáférést biztosított a rendszerhez. Ez egy gyakori feladat, amelyet a rendszergazdák végeznek, amikor más, nem root felhasználókat hoznak létre sudo jogosultságokkal.

Az olyan rendszerekben, mint az Ubuntu 20.04, amelyek már rendelkeznek az általános célú adminisztrációs csoporttal, könnyen hozzárendelhetünk sudo jogosultságokat egy felhasználóhoz, ha hozzáadjuk a felhasználót ehhez a csoporthoz. A sudo csoport, amint az az /etc/sudoers fájlban látható, teljes adminisztrátori jogosultságokkal rendelkezik, és a következő parancs beírásával adhatunk hozzá egy felhasználónevet a csoporthoz:

Opcionálisan használhatja a gpasswd parancsot is ugyanezen cél elérésére:

A CentOS rendszeren a sudo jogosultságokkal rendelkező alapértelmezett csoport neve wheel, így a jogosultságokat a következő paranccsal rendelheti hozzá:

Opcionálisan a gpasswd parancsot használva ugyanezt a következő paranccsal érheti el:

Bizonyos esetekben a wheel csoport a CentOS-en ki lehet kommentelve az /etc/sudoers fájlban. Az engedélyezéséhez nyissa meg a fájlt a visudo paranccsal, és vegye ki a kommentet a csoport nevét tartalmazó sor elől. Ezt a sor elején lévő # karakter eltávolításával teheti meg: %wheel ALL=(ALL) ALL.

Egyedi szabályok létrehozása

A sudoers általános szintaxisának eddig megszerzett ismeretében itt az ideje, hogy beállítson néhány szabályt.

Álnevek (Alias-ok) létrehozása

Az álnevek lehetővé teszik a sudoers fájl rendszerezését az elemek különböző „álnevek” alá történő csoportosításával. Ebben a szakaszban három direktívát fogunk tárgyalni: User_Alias felhasználói/csoport-álnevek létrehozásához, Cmnd_Alias parancsálnevek létrehozásához, valamint Runas_Alias annak engedélyezéséhez, hogy egy felhasználó egy másik felhasználó nevében futtasson parancsokat.

Például a User_Alias használatával a /etc/sudoers fájlban a következő részlet hozzáadásával három különböző felhasználói csoportot hozhat létre. Egyes felhasználók több csoporthoz is tartozhatnak:

Vegye figyelembe, hogy minden csoportnév nagybetűvel kezdődik. A fenti csoportálnevek /etc/sudoers fájlhoz való hozzáadásával hozzárendelheti az apt adatbázis frissítésének jogosultságát a GROUPTWO csoporthoz a következő szabály hozzáadásával az /etc/sudoers fájlban:

Vegye figyelembe, hogy a futtató felhasználó/csoport megadása nélkül a sudo parancs alapértelmezés szerint mindig a root felhasználót használja.

Íme egy példa a Cmnd_Alias használatára, ahol egy parancsálnevet hozunk létre a rendszer leállítására és újraindítására. A szabály ezután hozzárendelésre kerül a GROUPTHREE csoporthoz. Ezt a következő sorok hozzáadásával érheti el az /etc/sudoers fájlban:

A fenti részletben az első sor létrehoz egy POWER nevű parancsálnevet, amely magában foglalja a leállítási és újraindítási parancsokat. A második sor lehetővé teszi a GROUPTHREE tagjai számára a parancs futtatását.

Íme egy példa a Runas_Alias használatára, ahol egy olyan álnevet hozunk létre, amely lehetővé teszi egy felhasználói csoport számára, hogy egy másik felhasználó nevében futtasson parancsokat:

A fenti részletben az első sor létrehoz egy WEB nevű álnevet, megadva, hogy az álnév az apache vagy a www-data felhasználóként fog futni. A második sor hozzárendeli az álnevet a GROUPONE csoporthoz. Így az egyes csoport tagjai futtathatnak parancsokat akár az apache vagy www-data felhasználó nevében.

Lock Down Rules

Ebben a szakaszban megismerheti azokat a különböző módokat, amelyekkel szabályozhatja, hogyan reagáljon a sudo egy hívásra. Egyes parancsok viszonylag ártalmatlanok az egyfelhasználós rendszereken. Ilyen esetekben engedélyezheti a felhasználóknak, hogy root jogosultságokkal futtassák őket anélkül, hogy be kellene gépelniük a root jelszót. Például létrehozhat egy szabályt, amely lehetővé teszi a GROUPONE tagjai számára az updatedb parancs jelszó nélküli futtatását, ha a következőt adja hozzá az /etc/sudoers fájlhoz:

A NOPASSWD címke azt jelenti, hogy nem lesz jelszó bekérve. A NOPASSWD címke párja a PASSWD, ami az alapértelmezett viselkedés. Ez azt jelenti, hogy meg kell adni a jelszót a felszólításra.

Egy címke érvényes a szabályra, hacsak a párja felül nem bírálja azt, például:

Ebben a szabályban a GROUPTWO tagjai futtathatják az updatedb parancsot jelszó megadása nélkül. Azonban meg kell adniuk a jelszót a kill parancs végrehajtása előtt.

Bizonyos esetekben előfordulhat, hogy korlátozni szeretné a felhasználókat bizonyos parancsok végrehajtásában, hogy megakadályozza a veszélyes műveleteket. Itt lép életbe a NOEXEC címke. Egyes programok képesek más parancsokat is futtatni a saját felületükről. Ilyen program például a less . Ha a következő szintaxisú parancsot írja be a less felületen, az le fog futni, ami váratlan viselkedést okozhat.

Az ilyen viselkedés megelőzése érdekében a következő szabályt adhatja hozzá az /etc/sudoers fájlhoz, hogy korlátozza az adott, username:

További információk

Ebben a szakaszban néhány további információt, irányelvet és parancsot mutatunk be, amelyekre szükség lehet a sudo használata során.

Ha a konfigurációban a Runas_Alias-t használta, meghatározva, hogy egy felhasználó vagy csoport futtathat-e parancsokat egy másik felhasználóként, akkor ezeket a parancsokat az adott felhasználóként a -u kapcsolóval, csoportként pedig a -g kapcsolóval hajthatja végre. Íme a szintaxis:

Mindegyik parancs kérni fogja a kapcsolódó jelszó megadását. A kényelem érdekében a sudo egy ideig menti a jelszót, így nem kell azt minden alkalommal megadnia, amikor sudo-val futtat egy parancsot. Előfordulhat, hogy törölni szeretné ezt az időtartamot, miután végzett a sudo jogosultságú parancsokkal, a következő parancs beírásával:

Abban az esetben, ha több feladatot kell elvégeznie sudo jogosultságokkal, és meg szeretné hosszabbítani a jelszókérés előtti időt, vagy el szeretné kerülni, hogy a sudo parancs később jelszót kérjen, megújíthatja az időt a következő parancs beírásával:

A parancs elkéri a jelszót, és gyorsítótárazza azt a későbbi sudo használathoz.

A saját nevére meghatározott sudo jogosultságok listázásához a következő parancsot adhatja meg:

A parancs kilistázza az /etc/sudoers fájlban konfigurált összes olyan szabályt, amely az Ön felhasználónevére vonatkozik. A szabályok alapján képet kaphat arról, hogy a felhasználóneve milyen feladatokat hajthat végre a rendszeren. Íme egy példa képernyőkép:

screenshot

Bizonyos esetekben előfordulhat, hogy végrehajt parancsokat, és azok meghiúsulnak, mert elfelejtette eléjük tenni a sudo-t. Ilyen esetekben előfordulhat, hogy újra be kell gépelnie a parancsot a sudo-val kezdve. Hogy elkerülje a parancs újbóli begépelését, használhatja a bash „utolsó parancs megismétlése” funkcióját. A szintaxis két felkiáltójel. A terminálon legutóbb futtatott parancsot a következő beírásával hajthatja végre:

Végezetül fontos tudni, hogy a sudo egyszerűen megemeli a végrehajtandó parancsot sudo jogosultságokkal. További információért kövesse az utasításokat ezen a linken, hogy szórakozzon egy kicsit a felhasználóival.

Összegzés

Ha több felhasználóval dolgozik, a sudo parancs és a sudoers fájl alapos ismerete kulcsfontosságú. Ebben az útmutatóban bemutattuk a sudoers fájl olvasásának és módosításának alapjait, valamint a root jogosultságok megszerzésének különböző módszereit.

Mindig tartsa szem előtt, hogy a jogosultságok elkülönítése teszi biztonságossá a Linux rendszereket. Ezért a szuperfelhasználói jogosultságokat nem szabad megadni a normál felhasználóknak. Csak azokat a jogosultságokat rendelje hozzá, amelyek feltétlenül szükségesek egy adott felhasználó számára a rendszerben végzett konkrét feladatai ellátásához, és ne az összes jogosultságot.

Kellemes számítógép-használatot!

author

Manpreet Singh

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.