Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Mistofelees - 12.02.25 - klo:15.39
-
Mikä on oikea permissio kirjastotiedostoille ?
Jouduin asentamaan Arduino IDE:n kokonaan uudestaan päivitettyäni Linux Mint 19 -> 22.1.
Asennuksen jälkeen yritin kääntää ESP32:lle kirjoittamaani ohjelmaa, joka on aiemmin kääntynyt nätisti.
Sain virheilmoituksen, "error while loading shared libraries: libz.so.1"
Aikani kokeiltuani netistä löytämiäni ohjeita tein 'chmod 755 /usr/lib/x86_64-linux-gnu/libz.so.1.3"
(alkupetäinen permissio oli 644)
Tämän jälkeen käännös onnistui
Olen aina luullut, että library ei ole suoritettava tiedosto.
-
Koko virheilmoitus taisi olla Arduino-foorumin keskustelun perusteella:
error while loading shared libraries: libz.so.1: failed to map segment from shared object
Netistä löytyy monia viittauksia /tmp:n noexec-liitosvalintaan tai muihin suoritusoikeuksiin. Saattaisi liittyä myös Apparmoriin, jos /tmp:ssä on ohjelmien suorittaminen sallittu.
Tässä muutama relevantti kommentti aiheeseen edelliseltä vuosikymmeneltä:
https://stackoverflow.com/a/55693490
Mikä on oikea permissio kirjastotiedostoille ?
[…]
Olen aina luullut, että library ei ole suoritettava tiedosto.
Pääsääntöisesti kirjastoilla ei ole suoritusoikeutta Debian-pohjaisissa jakeluissa, eikä sitä tarvita. Libc-standardikirjastolle ja joillekin tietyille kirjastoille on annettu suoritusoikeus, jos ne sisältävät main-funktion. Tällöin käyttäjä voi siis käynnistää kirjaston komentoriviltä ja kirjaston main-ohjelma tekee temppunsa.
https://unix.stackexchange.com/a/40588
Fedorassa ja Red Hatissa on ainakin joskus ollut suoritusoikeus kaikissa kirjastoissa:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/PBARNCO7PWTQZDZVSWTCAEXWNXC7KVQH/