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:
|
1 |
ssh root@your_server_ip_or_domain_name |
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:
|
1 |
su |
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:
|
1 |
sudo execute_this_command |
Például a rendszer frissítéséhez a következőt írhatja be:
|
1 |
sudo apt-get update |
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:
|
1 |
sudo update-alternatives --config editor |
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:

Egy CentOS Linux disztribúción szerkessze az /etc/sudoers fájlt, és adja hozzá az alábbi sorokat:
|
1 2 |
Defaults editor = /usr/bin/vim:/usr/bin/vi:/usr/bin/nano Defaults env_keep += "EDITOR" |
Írja be a következő parancsot. Ne felejtse el kicserélni a your_editor_of_choice részt a választott szerkesztő nevére:
|
1 |
export EDITOR=`which your_editor_of_choice` |
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:
|
1 |
. ~/.bashrc |
Most, hogy a visudo konfigurálva van, megnyithatja a fájlt a(z) /etc/sudoers helyen a következő parancs beírásával:
|
1 |
sudo visudo |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# # Ezt a fájlt rootként KELL szerkeszteni a 'visudo' paranccsal. # # Kérjük, fontolja meg a helyi tartalom hozzáadását az /etc/sudoers.d/ könyvtárban a # fájl közvetlen módosítása helyett. # # A sudoers fájl írásának részleteit lásd a man oldalon. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specifikáció # Felhasználói alias specifikáció # Cmnd alias specifikáció # Felhasználói jogosultság specifikáció root ALL=(ALL:ALL) ALL # Az admin csoport tagjai root jogosultságokat szerezhetnek %admin ALL=(ALL) NOPASSWD:ALL # A sudo csoport tagjainak engedélyezése bármely parancs végrehajtására %sudo ALL=(ALL) NOPASSWD:ALL # Lásd a sudoers(5) oldalt a "#include" direktívákkal kapcsolatos további információkért: #includedir /etc/sudoers.d |
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
|
1 |
root ALL=(ALL:ALL) ALL |
- 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ó.
- root ALL=(ALL:ALL) ALL – Az első ALL azt határozza meg, hogy a szabály minden gazdagépre vonatkozik.
- 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.
- 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.
- 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:
|
1 |
sudo visudo -f /etc/sudoers.d/file_name_to_edit |
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:
|
1 |
sudo usermod -aG sudo username |
Opcionálisan használhatja a gpasswd parancsot is ugyanezen cél elérésére:
|
1 |
sudo gpasswd -a username sudo |
A CentOS rendszeren a sudo jogosultságokkal rendelkező alapértelmezett csoport neve wheel, így a jogosultságokat a következő paranccsal rendelheti hozzá:
|
1 |
sudo usermod -aG wheel username |
Opcionálisan a gpasswd parancsot használva ugyanezt a következő paranccsal érheti el:
|
1 |
sudo gpasswd -a username wheel |
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:
|
1 2 3 |
User_Alias GROUPONE = adelle, nikita, ellie User_Alias GROUPTWO = nikita, brenden, natalia User_Alias GROUPTHREE = brenden, walter, james |
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:
|
1 |
GROUPTWO ALL = /usr/bin/apt-get update |
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:
|
1 2 |
Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart GROUPTHREE ALL = POWER |
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:
|
1 2 |
Runas_Alias WEB = www-data, apache GROUPONE ALL = (WEB) ALL |
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:
|
1 |
GROUPONE ALL = NOPASSWD: /usr/bin/updatedb |
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:
|
1 |
GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill |
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.
|
1 |
!name_of_command_to_run |
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:
|
1 |
username ALL = NOEXEC: /usr/bin/less |
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:
|
1 2 |
sudo -u run_as_user command sudo -g run_as_group command |
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:
|
1 |
sudo -k |
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:
|
1 |
sudo -v |
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:
|
1 |
sudo -l |
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:

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:
|
1 |
sudo !! |
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!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.