Jelszó nélküli parancs futtatása Linuxon

Hblock védelem

A Linux egy biztonságos rendszer, amit nehéz tönkretenni. Ennek egyik pillére a jogok kezelése. A rendszergazdai jog és a felhasználói jog elválik, és szabályozott, hogy ki, mit és hogyan futtathat. Így egy sima felhasználó alapesetben nem férhet olyan programhoz, ami a rendszer egészét érinti, azaz jó esetben nem csinálhat túl nagy galibát. Ha pedig mégis elbénáz valamit, akkor az jó esetben csak a saját dolgait érinti. Ez alapvető egy többfelhasználós rendszerben. Ez szép és nagyon szuper, de van, amikor jó lenne egy sima usernek jogot adni olyan program futtatására, amihez rendszergazdai jog kell. Ezt sokszor, főleg otthoni gépen a sudo-val (wikipédia:sudo) oldják meg. Ismert, hogy sudo és a parancs, majd a jelszó beírása után azt az egy parancsot futtathatja emelt joggal. Ebben nincs semmi meglepő.

Emelt jog problémái

  • A sudo jó, de akkor a jelszót ismerni kell, és nem csak azt az egy, hanem minden parancsot futtathatja az átlaguser. Ami nem biztos, hogy túl jó.
  • Ha pedig Te vagy a rendszergazda, és sima userként akarsz írsz egy scriptet, és abban van olyan parancs, ami elvárja az emelt jogot, akkor meg kell adni a jelszót. Esetleg egy hosszabb ideig futó scriptnél ki kell várni, hogy bekérje valamikor. Ez kikerülhető, ha sudo-val indítod a scriptet, de akkor meg azok a parancsok jajgatnak, amik nem szeretik, ha emelt joggal futnak…
  • Ha egy hosszabb rendszer-adminisztrációt végzel, és nem akarsz el és visszaváltani az user és a root közt. Ilyenkor, pld. programok telepítésekor egy idő után a sudo ideje lejár, majd újra bekéri a jelszót. Ami kényelmetlen, idegesítő, és unalmas.

Bár vannak megoldások mindenre, hiszen a sudo lejárati idejét tudjuk szabályozni, erről volt szó, de ez nem mindenre jó, plusz én alapból leveszem igen rövidre.

A scriptekben is ki tudjuk kerülni a jelszó kézi megadását, hiszen a sudo képes erre:

echo jelszó | sudo -S parancsok

szerkezettel a scriptben bárhol megadhatjuk, hogy emelt joggal végezze el a munkát. Ami nem túl szép, hiszen a script egy sima szöveg fájl, amiben ott van az admin jelszó…

A jobb megoldás a jelszó nélküliségre

A tényleges megoldás a sudo egyik lehetőségét kihasználni. Adhatunk jogot egy felhasználónak/csoportnak arra, hogy valamely emelt jogot kívánó programot a saját jogán futtasson. Így nem kell ismerni a root jelszót, úgy fut le a program, mintha a rendszergazda futtatná.

  • A megoldás előnye, hogy így a felhasználónak nem kell ismerni a root jelszót, azaz más programot nem fog tudni futtatni csak amit engedtünk neki.
  • Így azt is beállíthatjuk, hogy az adott scriptben lévő emelt jogot kívánó programot is futtathassa az átlag user.
  • Így beállíthatjuk, hogy azok a programok, amiket sokszor használunk, és nem tekintjük különösebben veszélyesnek, ha a saját gépeden azok nem kérnek jelszót.

Itt ki kell emelnem: értelmes emberként érdemes átgondolni, hogy melyek ezek a programot. Ha te magad használod a gépet, nagyon jó eséllyel senki nem fog azzal dolgozni, akkor is más a helyzet. Ha ha ez bárki hozzáférhet, és kellemetlenkedni is szoktak, akkor érdemesebb egy szigorúbb beállítást tenni. Az én példám egy eléggé egyszerű lesz, és egy programot fogok engedélyezni a laci csoportnak, a pacman futtatását, hogy a telepítés, eltávolítás, frissítés a tárolókból jelszó nélkül lefusson.

Ezt rendszergazdaként teszem meg:
su és a jelszó megadása.
export EDITOR="/usr/bin/nano” azaz megadom a szerkesztőt, amivel dolgozni akarok
visudo azaz elindítom a speciális sudo szerkesztő környezetet. Csak így tedd meg, mert ha valamit elrontottál, mentés előtt rákérdez, hogy valóban…

Majd a

%laci ALL=(ALL) NOPASSWD: /usr/bin/pacman

sort beillesztem oda, ahol hasonló, de kikommentelt sorok vannak. Fontos, hogy ez legyen az utolsó ilyen bejegyzés, mert ha nem, és utána hasonló, de szigorúbb szabályt talál, akkor az felülírja a bejegyzést! Értelemszerűen a saját csoportodat kell megadni, amit az id felhasználói neveddel szerzel meg a leggyorsabban. De nagy a valószínűsége, hogy megegyezik a felhasználóneveddel.

Mentés, és kész is. Egy terminált nyitok, és kipróbálom: pacman -Syu és ha jelszó bekérés nélkül lefut, akkor jók vagyunk.

És ha nem?

Akkor sincs gond, csak egy másik helyre kell beírni.
Keress rá a /etc/sudoers.d könyvtárra, ott lesz egy 10-installer fájl, amibe ugyanezt beírva és azt lementve menni fog a dolog. Nekem is itt kellett megtenni a bejegyzést.

Bár ennél sokkal jobban skálázható a sudo működése, egy vagy pár program jelszó nélküli futtatásához elegendő ennyi.

Ami fontos! Ez nagyon hasznos kis lehetőség egy-egy átgondolt lazításra, de nem kellene túlzásba vinni, és mindenkinek mindenre engedélyeket osztogatni. Egy felhasználós környezetben kényelmes megoldás, hiszen az user és a root is te vagy, de ha már van egy olyan felhasználó, akinek nincs meg a root jelszó, akkor ott már komolyabb átgondolást igényel.

Related Posts