Tartalom
Bevezető
Amikor gyakran kell a sudo segítségével root-ként futtatni más parancsokat akkor felmerülhet az igény, hogy ne kelljen minden alkalommal begépelnünk a jelszót. Bár a munkamenet egy ideig "megjegyzi" a korábban megadott jelszót, így egy darabig nem kell újra begépelni, de egy idő után újra azonosítani kell magunkat. Valamint ha több felhasználóval is dolgozunk, akkor meg pláne gyakrabban lesz szükség a jelszavainkra. Ha pedig Shell scriptekben is szeretnénk használni root privilégiumokkal futtatott parancsokat, akkor végképp szükséges megkerülni a jelszavak begépelését, hogy programjaink automatizáltan működhessenek. Ebben a rövid leírásban megnézzük hogyan kerülhetjük el perzisztens módon a jelszó bekérését a sudo használatakor.
A sudo
A sudo egy hasznos kis eszköz a Unix-szerű operációs rendszerekben, ami arra szolgál, hogy futtathassunk parancsokat vagy programokat más felhasználók nevében, jellemzően root-ként. Segítségével átruházhatók olyan feladatok, mint például a teljes szerver vagy annak egyes szolgáltatásainak (pl. Apache) újraindítása a sima felhasználókra.
A sudoers fájl
A /etc/sudoers fájl tartalmazza a szabályokat, amiket a sudo parancs figyelembe vesz használatakor. A fájl jellemzően azokat a bejegyzéseket tartalmazza, hogy például ki milyen parancso(ka)t futtathat a sudo segítségével, stb.
Ezt a fájlt sose szerkesszük közvetlenül, hanem használjuk az erre a célra készített visudo parancsot:
root-ként:
visudo
Sima felhasználóként:
sudo visudo
Ha belenézünk a fájlba, akkor ezt látjuk egy "gyári" Debian 10 (Buster) rendszerben:
# # 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" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
Itt láthatunk példákat is a használatára, valamint az elején a kommentekben javasolja, hogy vegyük fontolóra, hogy ennek a fájlnak a módosítása helyett inkább hozzunk létre saját fájlokat a /etc/sudoers.d/ könyvtárban, amit láthatunk is a fájl végén, hogy beolvassa annak tartalmát, tehát végrehajtja a könyvtárban lévő saját beállítás-fájljainkat.
Sudo parancsok futtatása jelszó használatával
Alapból, ha nincs beállítva a felhasználó számára a jelszó nélküli parancsok futtathatósága, akkor természetesen bekéri a jelszót, amennyiben egyáltalán jogosultak vagyunk a sudo bármilyen jellegű használatára (pl a sudo csoport tagság, vagy a sudoers fájlban meglévő jelszavas beállítás esetén):
Első használatkor ki is írja a rövid szabályzatot, majd bekéri a felhasználó saját jelszavát.
Nincs ez másképpen a sudo esetén sem, tehát amennyiben ilyen szerverkörnyezettel dolgozunk, ilyenkor a sudo jelszó nélküli használatakor ezekkel a "párhuzamosan" létező web(x) felhasználókkal kell hivatkoznunk a sudoers fájlban az adott felhasználóra.
Más esetekben, például egy ISPConfig-on kívül, kézzel létrehozott felhasználó esetén, vagy egy egyszerűbb telepítésnél, vagy például egy LAMP szerver esetén természetesen a bejelentkezett felhasználónévvel kell hivatkozni a sudoers fájlban.
Sudo parancsok futtatása jelszó használata nélkül
Ha be szeretnénk állítani, hogy jelszó nélkül futtathassunk a sudo segítségével különböző parancsokat, akkor ehhez hozzunk létre egy saját fájlt a /etc/sudoers.d/ könyvtárban. Természetesen ehhez root jogosultság kell, így ezt futtassuk root-ként. Például:
nano /etc/sudoers.d/linuxportal
Célszerű olyan fájlnevet választani, ami utal a benne lévő beállításokra, hogy később is tudjuk, hogy mi van benne. Így például én a linuxportal felhasználóm számára hozok létre egy fájlt. Majd ebben kell elhelyezni a számunkra szükséges beállítást.
Egy vagy több meghatározott parancs beállítása
Amennyiben a felhasználónkkal csak egy vagy esetleg néhány bizonyos parancsot kell futtatnunk rendszeresen, netán szkriptekből szükséges meghívni őket root jogosultságokkal jelszó bekérése nélkül, pl. különböző adatmentések, szolgáltatások indítása, leállítása, stb, akkor tegyük a fájlba az alábbi sort:
web4 ALL = NOPASSWD: /bin/systemctl
Tehát itt én a web4 felhasználónevet használom a fentebb leírt okok miatt, így mindenki a saját megfelelő felhasználónevét használja.
Itt ügyeljünk, hogy a végén megadott parancsot a teljes elérési útjával adjuk meg, különben szintaktikai hibát fog adni a sudo hívásakor.
Mentsük le a fájlt, majd próbáljuk is ki a cél felhasználóval a sudo működését. Például lekérdezzük az Apache állapotát:
sudo systemctl status apache2.service
Amint a példában is láthatjuk, a sudo immár nem kért jelszót, hanem egyből futtatta a parancsot.
Ha több parancsot szeretnénk megadni, akkor azt vesszővel és szóközzel elválasztva tegyük, továbbra is mindegyiket a teljes útvonalával adjuk meg a gyökértől. Az alábbi példában beállítjuk még a nano szerkesztőt is, így utána már a sima felhasználóval is tudjuk módosítani a /etc/sudoerd.d/ könyvtárban a korábban még root-ként létrehozott fájlunkat:
web4 ALL = NOPASSWD: /bin/systemctl, /usr/bin/nano
Így tehát felsorolhatjuk a szükséges parancsokat, amiket sudo-val jelszó nélkül szeretnénk használni.
Mindenre kiterjedő beállítás
Ha úgy szeretnénk beállítani, hogy bármit tudjunk futtatni a sudo segítségével a jelszó megadása nélkül, akkor pedig állítsuk be a következőt:
web4 ALL = (ALL) NOPASSWD:ALL
Itt is természetesen a saját megfelelő felhasználónkat adjuk meg az itteni web4 helyett.
Konklúzió
Ezekkel a kis egyszerű beállításokkal tehát könnyebbé tehetjük a terminálban végzett rendszeres munkát, időt spórolhatunk meg a jelszavak begépelésének kihagyásával, valamint könnyedén készíthetünk különböző automatizáló scripteket, amikben root privilégiummal futtathatjuk a szükséges parancsokat.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 1772 megtekintés