Shell szkript „titkosítása”

systemd időzítő
Sudo beállítása

Shell szkript „titkosítása”? Mért?
Tegyük fel, hogy írtál egy shell parancsfájlt, és meg akarod védeni a szkript tartalmát, miközben megosztod másokkal. Például bármilyen okból nem szeretnéd, ha a shell parancsfájlba belenéznének ellenőrzés céljából, vagy módosítanák mások, akár terjesztés céljából, akár egyéb okok miatt. Ellenőrzés? Igen, sok esetben nem kívánatos, hogy mások „ellenőrizzék” és „hasznos tanácsokkal” lássanak el. Nagyon elterjedt megoldás, hogy az ilyen „segítség” nem áll másból, mint nettó kötözködésből, és inkább azt kerülni kell.
Ha a lejárati dátumot szeretnéd beállítani a szkripten, hogy a szkript ne legyen használható a megadott lejárati dátumon túl, arra is megoldás lehet ez a megoldás. Aktívan fejlesztett szkripteknél nem árt, ha egy időkorláttal látod el, mert akkor csak az aktuális verziót tudják használni, és nem kell a több verzió közt keresgélned a hibát.

Jogod van ehhez?

Shell szkript „titkosítása”, ha nem osztod a forrást is, nagyon sok esetben indulatokat vált ki. Megszoktuk, hogy mindennek a forráskódját megkapjuk. Ennek ellenére a Te szabad, elidegeníthetetlen jogod, hogy a saját programodat, jelen esetben a shell szkriptet milyen formában és licenc alatt oszd meg. A szellemi tulajdon a készítés pillanatában keletkezik, ahogy az ehhez való jog is. Ezt minden esetben tiszteljük, azaz másét nem vesszük, lopjuk el, hanem megnézzük ki, és milyen engedélyt ad a termékhez, de ahhoz is ragaszkodunk, hogy más is tisztelje a mienket! Ha valakinek nem tetszik, hogy a shell szkript titkosítása megtörtént, akkor joga van nem használni.

Mi az shc?

Ez a kis program fogja nekünk a shell szkriptet lekódolni, titkosítani. A legtöbb disztribúcióban benne van, így a telepítése nem okozhat gondot. Arch alatt az AUR-ban van.

A készítője általános shell szkript fordítónak nevezi, ami igaz is. A működéséről a github oldalon van szó, érdemes elolvasni. Én nem térek ki rá.

Mi NEM az shc?

Bár én elég nagyképűen ezt a címet adtam: shell szkript „titkosítása”, az idézőjelből már sejthető, hogy nem fogja titkosítani a shell szkriptet, csak egy futtatható állományt készít, aminek a forrásához nem fér hozzá egy átlagember.
Maga a kész állomány semmi komoly titkosítás alá nem kerül, bár nem egyszerű a visszafejtése, de több cikk is foglalkozik vele. De nekünk nem is kell egy atombiztos és az NSA által sem törhető védelem.

A shell szkript „titkosítása”

shc -v -f pelda.sh

Ebben a példában pelda.sh a titkosítani kívánt eredeti szkript. Az shc először egy C kódot generál, pelda.sh.c néven, ami a titkosított shell parancsfájlt tartalmazza. Ezt a C kódot végül egy bináris, futtatható fájlá alakítja, aminek a neve pelda.sh.x. Ha futtatjuk a secret.sh.x parancsot, akkor simán lefut, mint az eredeti szkript, de a tartalma nem nézhető meg egy szokásos szövegszerkesztőben. Így nem is lehet megváltoztatni.

Állításunk be lejárati időpontot is

A shell szkript titkosítása jó dolog, de még egy lépést tehetünk hozzá. A lejárati időt, ami után már nem fut, és ezt a korlátot nem lehet feloldani egyszerűen.

shc -v -e 30/04/2021 -m <Lejártam!> -f pelda.sh

Ha a mai napnál régebbi időpontot adsz meg, ki is tudod próbálni az üzenet megjelenítését.

Így már mindkét fő lehetőséget megismertük.

De nekem nem kell shell szkript „titkosítása”!

Az elején pár általános megoldást, felhasználási lehetőséget említettem, de egy saját gépen is van értelme használni, amit csak Te és esetleg a család, azaz megbízható ember használ. Több olyan szkript készíthető, aminél meg kell adni egy webhely eléréséhez a jelszavadat, vagy emelt root joggal kell futtatni, de nem akarod minden esetben ezeket megadni. Ilyen lehet egy mega.nz boxhoz tartozó mentő, szinkronizáló szkript is. Itt értelemszerűen meg kell adni a jelszót és a boxhoz tartozó email címedet. Ha ezt a szkript csak sima szöveges formában tartalmazza, bárki megszerezheti. Ha a szkript titkosítva van, akkor már ezt nem lesz egyszerű.

Ami fontos! Tesztelés alatt pár szkriptből készült bináris fájl nem működött megfelelően. Így minden esetben ki kell próbálni az eredményt.

Related Posts

None found