A Linux rendszerek ereje és rugalmassága nagyrészt a felhasználói jogosultságok kifinomult kezelésében rejlik. Két alapvető parancs, a su és a sudo, kulcsszerepet játszik abban, hogy egy felhasználó ideiglenesen magasabb jogosultságokra tegyen szert. Bár mindkét parancs célja hasonló – rendszergazdai (root) hozzáférés megszerzése – a működésükben és biztonsági vonatkozásaikban jelentős eltérések vannak. Ebben a cikkben részletesen feltárjuk a su és sudo közötti különbségeket, bemutatjuk a használatukat, és áttekintjük a kapcsolódó biztonsági megfontolásokat.
Mi a su parancs?
A su, vagyis „substitute user” parancs lehetővé teszi, hogy egy felhasználó egy másik felhasználó identitását vegye fel a rendszeren, alapértelmezés szerint a root felhasználóét. A parancs használatakor a felhasználónak meg kell adnia a célfelhasználó (általában a root) jelszavát. Sikeres hitelesítés után a felhasználó a célfelhasználó környezetében futtathat parancsokat.
A su parancs alapvető szintaxisa a következő:
su [felhasználónév]
Ha nem adunk meg felhasználónevet, akkor a su a root felhasználóra vált át. Például:
su
Ez a parancs bekéri a root jelszavát, majd sikeres hitelesítés után root felhasználóként dolgozhatunk. Fontos megjegyezni, hogy a su parancs megváltoztatja a felhasználói környezetet, beleértve a környezeti változókat is. A su -
(vagy su - felhasználónév
) parancs a célfelhasználó tiszta környezetét hozza létre, mintha a felhasználó bejelentkezett volna.
Mi a sudo parancs?
A sudo, vagyis „superuser do” parancs lehetővé teszi, hogy egy felhasználó egyetlen parancsot futtasson root jogosultságokkal. Ezzel szemben a su egy teljes munkamenetet indít root felhasználóként. A sudo használatához a felhasználónak szerepelnie kell a /etc/sudoers
fájlban, ami meghatározza, hogy mely felhasználók mely parancsokat futtathatják root jogosultságokkal.
A sudo parancs alapvető szintaxisa a következő:
sudo [parancs]
Például, ha egy felhasználó frissíteni szeretné a rendszert, de nincs root jogosultsága, használhatja a következő parancsot:
sudo apt update
A sudo ekkor bekéri a felhasználó jelszavát (nem a root jelszavát!), és sikeres hitelesítés után futtatja a megadott parancsot root jogosultságokkal. A sudo emlékszik a jelszóra egy rövid ideig (általában 15 percig), így többször is futtathatunk sudo-val parancsokat anélkül, hogy újra meg kellene adnunk a jelszót.
A legfontosabb különbségek
A su és sudo közötti legfontosabb különbségek a következők:
- Hitelesítés: A su a célfelhasználó (általában root) jelszavát kéri, míg a sudo a saját felhasználói jelszavunkat.
- Jogosultságok: A su egy teljes root munkamenetet hoz létre, míg a sudo csak egy adott parancsot futtat root jogosultságokkal.
- Konfiguráció: A su nem igényel külön konfigurációt (feltéve, hogy tudjuk a root jelszavát), míg a sudo használatához a felhasználónak szerepelnie kell a
/etc/sudoers
fájlban. - Naplózás: A sudo részletes naplózást biztosít, ami segíthet a biztonsági incidensek felderítésében. A su általában kevésbé részletes naplózást kínál.
- Környezet: A
su -
parancs a célfelhasználó tiszta környezetét hozza létre, míg a sudo megőrzi a felhasználó eredeti környezetének egy részét.
Biztonsági megfontolások
A sudo általában biztonságosabb megoldás, mint a su, mivel:
- Korlátozott jogosultságok: A sudo csak egyetlen parancsot futtat root jogosultságokkal, minimalizálva a támadási felületet.
- Naplózás: A sudo részletes naplózást biztosít, ami segíthet a biztonsági incidensek felderítésében.
- Finomhangolható jogosultságok: A
/etc/sudoers
fájlban pontosan meghatározhatjuk, hogy mely felhasználók mely parancsokat futtathatják root jogosultságokkal.
A su használata kevésbé biztonságos, mivel a root jelszavának ismerete gyakorlatilag korlátlan hozzáférést biztosít a rendszerhez. Ha a root jelszó kompromittálódik, az egész rendszer veszélybe kerül. Ezért javasolt a root fiók letiltása (jelszó nélküli állapotba hozása) és kizárólag a sudo használata a rendszergazdai feladatokhoz.
A /etc/sudoers fájl szerkesztése
A /etc/sudoers
fájl a sudo konfigurációs fájlja. A fájl közvetlen szerkesztése nem javasolt, mert könnyen hibákat lehet véteni, ami a sudo működésképtelenségéhez vezethet. Helyette a visudo
parancsot kell használni a fájl szerkesztéséhez. A visudo
parancs szigorú szintaktikai ellenőrzéseket végez, és megakadályozza a hibás konfigurációk mentését.
sudo visudo
A /etc/sudoers
fájlban a következőképpen adhatunk jogosultságot egy felhasználónak:
felhasználónév ALL=(ALL:ALL) ALL
Ez a sor azt jelenti, hogy a „felhasználónév” nevű felhasználó minden gépen (ALL), minden felhasználó nevében (ALL:ALL) minden parancsot (ALL) futtathat root jogosultságokkal.
Lehetőség van finomabb jogosultságok beállítására is. Például a következő sor csak a /sbin/reboot
parancs futtatását engedélyezi a felhasználónak:
felhasználónév ALL=(ALL:ALL) /sbin/reboot
Összefoglalás
A su és sudo parancsok egyaránt hasznosak a Linux rendszerekben a magasabb jogosultságok megszerzésére. A sudo azonban általában biztonságosabb és rugalmasabb megoldás, mivel korlátozott jogosultságokat biztosít, részletes naplózást kínál, és finomhangolható jogosultságok beállítását teszi lehetővé. A biztonságos rendszeradminisztráció érdekében javasolt a sudo használata a su helyett, és a root fiók letiltása.