( hrgy84 | 2022. 08. 01., h – 23:13 )

Az, hogy lecseréled a shebangot, azt jelenti, hogy egy másik útvonalon levő interpretert futtatsz. Maguk a program binárisok is egyszerű fájlok, és míg a /usr/bin mappánál az operációs rendszer garantálja, hogy minden felhasználó számára tallózható és a benne levő cuccok elérhetőek, a nem standard útvonalakra (és a /home/userem/.virtualenvs/ -en belüli könyvtárak ilyenek) nincs ilyen garancia. Tehát pont, hogy simán lehet elérési gond.

Úgy érdemes futtatni, hogy

sudo -Hu munin /etc/munin/plugins/enkicsipluginem

és így megnézni, hogy permdenied-et dob-e. Ha igen, akkor a következő lehetőség a 

sudo -Hu munin /home/user/.virtualenvs/bin/python

futtatása, hogy ez permdeniedet dob-e.

Szerk:

Lejjebb görgettem, és elolvastam a kommentedet, miszerint a /home/user/.virtualenvs/user/bin/python -t ha lemásolod, akkor működik, ha symlinkeled nem. Ez is a fenti gondolatmenetre vezet vissza. Megmutatom, hogy szerintem mi a gond.

Lássuk ezt az útvonalat: /home/user/.virtualenvs/user/bin/python

Ebben 5 darab mappa van, sorrendben

  • /home
  • /home/user
  • /home/user/.virtualenvs
  • /home/user/.virtualenvs/user
  • /home/user/.virtualenvs/user/bin

Ahhoz, hogy a "user" nevű felhasználón kívül bárki futtatni tudjon ezen mappákból valamit, az others jognak minimum x-nek kell lennie (oktálisan a harmadik számnak páratlannak kell lenni, az ls -l kimenetében pedig a harmadik szekcióban kell lennie egy x-nek legalább). Ha ez nincs így, akkor a futtató felhasználó nem tud bele cd-zni az adott mappába, és annak almappáiba se, így nem éri el a megfelelő binárist.

Nálam Arch Linux alatt pl így néz ki a home mappám:

drwxr-x--- 109 hron hron 4096 aug    1 23.19 /home/hron

Ebből azt láthatod, hogy azon felhasználóknak, akik nem én vagyok, és nincsenek benne a "hron" csoportban, nincs joguk belépni sem a mappámba. Következésképpen, ha én csinálnék hozzád hasonlóan egy munin plugint, én is permission deniedet kapnék, mert a munin nem tudna belelépni a /home/hron mappán belülre, és onnan már nem érné el a .virtualenvs mappámat sem. 

És a jogosultságok végignézése szimbolikus link esetén is ugyanígy működik, hiába symlinkelsz valamit ki, ha nincs jogod elérni azt a fájlt, akkor a symlinken keresztül sem lesz. Ez semmi egyéb védelem, mint a jó öreg Linuxos fájljogok.

A hiba felgöngyölítéséhez futtass "ls -ld" parancsot minden érintett mappára a virtualenves python útvonalában és nézd át a jogait. Ott lesz a gond, én érzem... a hasamban!