Üdv!
Van néhány munin pluginom, amik működtek egy korábbi, kb. 9-es debian rendszeren, de a mostani 11.1-es rendszeren ilyen hibát dobnak:
Can't exec "/etc/munin/plugins/test_plugin": Permission denied at /usr/share/perl5/Munin/Node/Service.pm line 274, <STDIN> line 24.
A plugin maga django-n keresztül adatbázisból szed adatokat, és a problémát úgy néz ki, hogy a shebang line okozza, ami:
#!/home/user/.virtualenvs/user/bin/python
. Ha ezt lecserélem /usr/bin/python-ra, akkor a plugin az adott hibán továbbjut, csak nekem szükségem van a virtualenves interpreterre.
A plugin kézzel indítvan természetesen lefut.
A debian egy viszonylag friss install, talán 3-4 hetes, ám egy script telepített egy alaprendszert, amiről nem sokat tudok.
Merre lenne érdemes elindulni?
Találtam ugyan egy /etc/selinux/semanage.conf nevű fájlt a rendszeren, de az összesen 2 nem kommentes sort tartalmaz:
module-store = direct
expand-check=0
- 640 megtekintés
Hozzászólások
Hali!
Az a tippem, hogy, vagy az elérési útban van valahol jogosultság hiba, vagy a magának a futtatandó filenak a jogosultságaival van probléma.
Próbálj rá su-zni a munin futtató userére, és nézd meg, hogy eléri-e, és tudja-e futtatni a /home/user/.virtualenvs/user/bin/python filet.
OkiGyE
- A hozzászóláshoz be kell jelentkezni
Ez nem igazan lehet problema, hiszen ha a shebang line-t cserelem, akkor mukodik.
Amugy probaltam persze munin userrel futtatni.
Ha kozvetlenul futtatom, tehat: /etc/munin/plugins/plugin, mukodik,
ha pedig munin-cron-nal futtatom, hibat dob a /var/log/munin/ konyvtar fajljaiba.
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
Szia!
Köszi a nagyon kimerítő választ, de mint a többi kommentből kiderült már az elején, nem elérési gond volt a probléma.
- A hozzászóláshoz be kell jelentkezni
Bocs, baromi hosszú volt a thread, a SystemD-s szenvedést valahogy sikerült áttekerni. Most én is tanultam valamit.
- A hozzászóláshoz be kell jelentkezni
Miután meglett a megoldás, még született kb. 20-25 komment.
Igen, hosszú, és nagyon tanulságos. Köszi mégegyszer mindenkinek, aki foglalkozott ezzel a problémával!
- A hozzászóláshoz be kell jelentkezni
Csak találgatok, de nem lehet, hogy python verzióprobléma? A 9-ben a 2-es volt, azóta meg 3-as lett. Én futottam bele olyanba Debian 11-en, hogy az #!/usr/bin/python-t is át kellett írnom a ketteshez, pedig elvileg már a 11-hez készült a script.
- A hozzászóláshoz be kell jelentkezni
Nem hinném. Ennek kifejezetten a virtualenvben lévő python-nal van problémája - úgy tűnik -, ami viszont munin userként futtatva is működik. Csak munin-cron- nal nem.
- A hozzászóláshoz be kell jelentkezni
a munin by default munin userrel futtatja a scripteket, ami lehet hogy nem lat bele abba a home-ba. konfba allitsd at hogy ezt a plugint az adott user (vagy root) joggal inditsa. munin-run pluginneve paranccsal lehet tesztelni
- A hozzászóláshoz be kell jelentkezni
Az a gond, hogy ugye a fajl eleresekkel nem lehet gondja, hiszen ha a shebang-ot atirom, akkor fut, illetve ha munin userkent kozvetlenul futtatom, akkor is fut.
Egyebkent root-kent a /usr/sbin/munin-run test_plugin is ugyanazt a hibat dobja.
- A hozzászóláshoz be kell jelentkezni
fura. akkor max selinux vagy apparmor kavarhat be, azok logjait nezted?
- A hozzászóláshoz be kell jelentkezni
Hol lennének ezen logok? Így fájlnév alapján nincs ilyen, messages / syslog pedig üres, amikor futtatom.
- A hozzászóláshoz be kell jelentkezni
Hogy lehet ezeket kikapcsolni?
- A hozzászóláshoz be kell jelentkezni
Mármint "rendesen" beállítani, ugye? rendszer user random user home-jában lévő rejtett könyvtárból csak ne futtasson semmit, szoktam volt mondani - nem jó buli...
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
Örökölt gépen jártam pórul. Egy belső fejlesztésű egyszerű app futott egy Ubuntun. Belenézem az init szkriptjébe, az a /usr/bin alól indított valamit. Még morgolódtam is, hogy miért nem a local alá pakolt, minek szemetelte össze a /usr/bin-t. Később, amikor töröltem a régi admin userét, a következő reboot után már nem indult el az app. Kiderült, hogy az illető a homejában fordított és a /usr/bin-be tett rá egy symlinket.
Azért is érdemes a helyükre pakolni a dolgokat, hogy ne szívasd meg a szerencsétlen utódodat.
$ grep -c egy$ word.list
100
- A hozzászóláshoz be kell jelentkezni
Pl. a bootkor megadod ezeket kernelparamétereknek:
apparmor=0 selinux=0
- A hozzászóláshoz be kell jelentkezni
Nem tudom, hogy ez a csere elégséges-e a /etc/default/grub fájlban.
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
=>
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 apparmor=0 selinux=0"
, illetve egy reboot, de sajnos nem oldotta meg a problémát.
- A hozzászóláshoz be kell jelentkezni
Csak tippelni tudok, de szerintem nálad nem aktív a selinux, és lehet, hogy apparmor sincs. Ne aggódj, nálam sincs. ;)
Egyébként amit írtál lentebb, a /home/user/.virtualenvs/user/bin/python az egy link volt eredetileg a /usr/bin/python-ra? És mi az a pythonu?
Szerk.:
Ja, a csere elég, de updatelni kell így a grubot, hogy használja. Bár én a helyedben csak a bootkor írnám be, akkor csak arra az egy bootra vonatkozik, a grub.cfg marad eredeti.
- A hozzászóláshoz be kell jelentkezni
A /home/user/.virtualenvs/user/bin/python az egy valós binary, ami mindig létrejön, ha létrehozol egy virtualenv-et, pl. egy python projecthez. Ha ezt a virtualenv-et aktíválod, akkor ezt a python executable-t fogja használni.
A pythonu pedig erre a python executable-re egy link, vagy egy cp. Nyilvánvalóan az egésznek azzal van gondja, hogy a shebang egy olyan helyre mutat, ami nem tetszik neki, és ezt egy linkkel sem engedi áthidalni.
Sajnos a Debian 9-es rendszerem nem elérhető, csak fájlszinten van meg a tartalma, de el sem tudom képzelni mi okozhatja ezt a nyilvánvalóan egyszerú problémát, ami most már 2 gépen is fennáll.
- A hozzászóláshoz be kell jelentkezni
Értem. És honnan szedi, átmásolja az /usr/bin-ből? Bocs de nem ismerem a virtualenvet :D
És ugyanaz a verziója, mint a /usr/bin/pythonnak?
- A hozzászóláshoz be kell jelentkezni
Ez a létrehozástól függ, de általában igen, átmásolja.
Ennél a test_plugin-nál teljesen mindegy a verzió, ez mindennel elmegy, de igen, ugyanaz. Sőt, md5sum-ra is ugyanaz. Vicces, ugyanaz a fájl, és mégsem megy... .
- A hozzászóláshoz be kell jelentkezni
"Az a gond, hogy ugye a fajl eleresekkel nem lehet gondja, hiszen ha a shebang-ot atirom, akkor fut,+
De a shebangban más fájlra van hivatkozás mint runtime-ra, pont ez a lényeg. A munin usernek van joga olvasni a shebangben meglévő virtualenv fájljait?
- A hozzászóláshoz be kell jelentkezni
Igen, van. Ha munin userrel siman lefuttatom a plugint, tehat mondjuk /etc/munin/plugins/test_plugin, az mukodik gond nelkul.
- A hozzászóláshoz be kell jelentkezni
A munin user mit csinál, hogyan futtatja a plugint? Mármint milyen execution environmentet hoz neki létre, amikor futtatja?
Ha SELinux van használva, akkor mit mond a logja?
- A hozzászóláshoz be kell jelentkezni
Fogalmam sincs rola, hogy hogyan futtatja a plugint.
Nem tudok selinuxrol. Nem én telepítettem, hanem úgy kaptam egy alap debian disztrót.
Ahogy fentebb írtam, egy fájl van a /etc/selinux/ könyvtárban, az is csak 2 értékes sort tartalmaz.
- A hozzászóláshoz be kell jelentkezni
A SELinux nem olyan valami, hogy van a /etc-ben egy config és aszerint viselkedik, hanem a filerendszer tulajdonsága, és minden egyes file-hoz van SELinux label. Ha az nem olyan, ami neked jó, akkor nem fog menni. Márpedig a user_home_t és a bin_t más környezetet definiál. Az ls -Z paranccsal tudod megnézni.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Hát, ez azért eléggé leegyszerűsített lett, nyilván a címkézést azért nem a kernel találja ki, hanem van rá házirend. Pl. az említett /etc/selinux/semanage.conf a távoli házirend kiszolgáló konfigurálása való tudtommal. No meg ugye nem csak enforce módja van. Gyanítom, hogy az ő rendszerén nem is aktív a selinux. Legalábbis úgy tűnik az eddigiekből.
- A hozzászóláshoz be kell jelentkezni
Hogy tudom kideríteni, hogy aktív-e?
locate selinux
/etc/selinux
/etc/selinux/semanage.conf
/usr/include/linux/selinux_netlink.h
/usr/lib/x86_64-linux-gnu/libselinux.so.1
/usr/lib/x86_64-linux-gnu/security/pam_selinux.so
/usr/share/doc/libselinux1
/usr/share/doc/libselinux1/changelog.Debian.gz
/usr/share/doc/libselinux1/copyright
/usr/share/man/man7/pam_selinux.7.gz
/var/lib/dpkg/info/libselinux1:amd64.list
/var/lib/dpkg/info/libselinux1:amd64.md5sums
/var/lib/dpkg/info/libselinux1:amd64.shlibs
/var/lib/dpkg/info/libselinux1:amd64.symbols
/var/lib/dpkg/info/libselinux1:amd64.triggers
ls -Z minden érintett fájlra csak egy ?-et ad vissza.
- A hozzászóláshoz be kell jelentkezni
getenforce
aa-status
- A hozzászóláshoz be kell jelentkezni
getenforce nincs,
aa-status Yes. Ezek szerint apparmor fut... .
apt-get remove apparmor
, de ez sem oldotta meg a problémát. Reboot után sem.
Most már aa-status sincs.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Nekem sincs.
- A hozzászóláshoz be kell jelentkezni
Perl-t kb. 1 evtizede olvastam utoljara, de ugy nez ki, hogy a munin-cron a munin-update-t (is) meghivja, es a problema azon belul lesz. Ami viszont elég bonyolultnak tűnik - nekem.
- A hozzászóláshoz be kell jelentkezni
hat ha reprodukalhato a hiba a munin-run hasznalataval akkor egyszerubb azt debuggolni. amugy a cron az updatet hivja ami connectel a node-ra es az hivja a plugint, szoval a cron-tol indulva valoban bonyi elegge...
- A hozzászóláshoz be kell jelentkezni
Argh. fentebb rosszul írtam.
Szóval:
munin-cron a fenti hibaüzenetet dobja, de a munin-run az szépen lefut:
munin@machine:/usr/sbin$ ./munin-run test_plugin
somevariable.value 0
- A hozzászóláshoz be kell jelentkezni
No. Amikor fentebb írtam, hogy a munin-run nem megy, az igaz is volt, meg nem is. Root-ként tényleg nem megy, munin userként viszont igen.
Ami fura, hogy most egy másik gépre felraktam egy munin-t (debian 11.4), és ott is ez a hiba van. Ez afféle digitalocean-os előtelepített debian.
Ami megy:
1) @munin /etc/munin/plugins/test_plugin
2) @munin /usr/sbin/munin-run test_plugin
Ami nem megy:
1) @root /usr/sbin/munin-run test_plugin
Can't exec "/etc/munin/plugins/test_plugin": Permission denied at /usr/share/perl5/Munin/Node/Service.pm line 268.
# FATAL: Failed to exec.
Warning: the execution of 'munin-run' via 'systemd-run' returned an error. This may either be caused by a problem with the plugin to be executed or a failure of the 'systemd-run' wrapper. Details of the latter can be found via 'journalctl'.2) @munin munin-cron
2022/07/29-18:15:34 CONNECT TCP Peer: "[::ffff:127.0.0.1]:41584" Local: "[::ffff:127.0.0.1]:4949"
2022/07/29-18:15:35 [4058739] Error output from test_plugin:
2022/07/29-18:15:35 [4058739] Can't exec "/etc/munin/plugins/test_plugin": Permission denied at /usr/share/perl5/Munin/Node/Service.pm line 268, <STDIN> line 25.
2022/07/29-18:15:35 [4058739] Service 'test_plugin' exited with status 42/0.
2022/07/29-18:15:35 [4058739] Error output from test_plugin:
2022/07/29-18:15:35 [4058739] Can't exec "/etc/munin/plugins/test_plugin": Permission denied at /usr/share/perl5/Munin/Node/Service.pm line 268, <STDIN> line 26.
2022/07/29-18:15:35 [4058739] Service 'test_plugin' exited with status 42/0.
- A hozzászóláshoz be kell jelentkezni
Details of the latter can be found via 'journalctl'.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Amiben nincsen semmi erről szóló üzenet.
- A hozzászóláshoz be kell jelentkezni
A journalctl root joggal bővebb infót ad, mint user joggal. Gondolom, infoleak lehetősége miatt. Én a journalctl -b paranccsal próbálkoznék root-ként, majd elmennék a végére.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
root-ként használom, és -xe-vel szoktam. (-e alapból a végére ugrik).
Nincs benne semmi munin related.
- A hozzászóláshoz be kell jelentkezni
Hát, én még ezt találtam, de kb. ennyi volt ami tőlem telik ebben a témában. :)
- A hozzászóláshoz be kell jelentkezni
Emlékszem az oldal nevére, délután nem jött le. Mindenesetre nem segített, de azért köszi.
- A hozzászóláshoz be kell jelentkezni
Hát, ott a környéken az exec előtt van egy 'change_real_and_effective_user_and_group': https://github.com/munin-monitoring/munin/blob/master/lib/Munin/Node/Se…
Nem ismerem a munint, de ennek függvényében azért megnézném, hogy biztos jó userrel fut-e olyankor.
- A hozzászóláshoz be kell jelentkezni
munin-cron futtatása alatt a folyamatok top-ban munin-nak néznek ki. Úgy gondolom a munin user nevében kellene futnia.
Azért érdekes lenne tudni, hogy mégis mi vágja ki a biztosítékot, amikor permission denied-ot mond. Mármint, hogy melyik kódrész az.
- A hozzászóláshoz be kell jelentkezni
az is, amelyik épp futtatná közvetlen a scriptet? közvetlen előtte?
láthatólag a kód tele van ilyen if $conf->{DEBUG} printekkel, azt valahogy be tudnád kapcsolni?
- A hozzászóláshoz be kell jelentkezni
Nem akartam trollkodni, de már amikor elkezdtem olvasni a topikot volt egy olyan érzésem, hogy ha nem a SeLinux, akkor a SystemD a probléma.
On: `strace -f` segíthet nyomozni.
- A hozzászóláshoz be kell jelentkezni
Ah, bár természetesen megint nem a systemd a hülye, hanem aki használja, de hasznos straces commented segített így reggel felhívni a figyelmemet, hogy a munin-run bizonyára csak valami dispatcher (ami, nem ismervén a cuccot, meg este lévén tegnap nem esett le).
Feltettem egy konténerbe, természetesen a debianosok "baszarintották el", vagyis hogy megvédik a géped a potenciálisan fos pluginektől:
cat /lib/systemd/system/munin-node.service
[Unit]
Description=Munin Node
Documentation=man:munin-node(1) http://guide.munin-monitoring.org/en/stable-2.0/reference/munin-node.html
After=network-online.target
[Service]
EnvironmentFile=-/etc/default/munin-node
Type=notify
Restart=always
ExecStartPre=install -o munin -g munin -d /run/munin
ExecStart=/usr/sbin/munin-node --foreground $DAEMON_ARGS
PIDFile=/run/munin/munin-node.pid
# Plugins like "smart_" require access to devices
PrivateDevices=false
PrivateTmp=true
ProtectHome=true
# "full" (instead of "strict") still allows write access to the state files
ProtectSystem=full
[Install]
WantedBy=multi-user.target
Na, ebből a ProtectHome pont ezt csinálja.
Egyébként kb le is írták, benne van a doksiban:
cat /usr/share/doc/munin-node/README.Debian |grep -A 10 -i systemd
Systemd, munin-node and plugins
-------------------------------
The systemd service specification for munin-node imposes a few
restrictions on the context of plugin execution.
This may cause confusion, as the plugins' behaviour will depend on
whether they are executed manually in "munin-run" (for debugging) or
indirectly via "munin-node" (when being queried by the munin master).
For example plugins are not allowed to read /home (may be relevant for
the "df*" plugins) and they use a private /tmp directory.
See /lib/systemd/system/munin-node.service for the default settings of
the munin-node service. All settings can be overridden permanently
via "systemctl edit munin-node".
Szóval, systemctl edit munin-node, és írd bele, hogy ProtectHome=read-only, utána egy systemctl daemon-reolad, és jó lesz. Vagy tedd máshova a virtualenvet.
ja, és tedd vissza az apparmort. :)
- A hozzászóláshoz be kell jelentkezni
Nekem a strace nagyjából egy 4 megás fájlt outputolt rengeteg adattal, de hasznosat nem találtam benne.
Viszont, nagyon köszönöm, ha a /lib/systemd/system/munin-node.service fájlban megszerkesztem a ProtectHome-t, és néhányszor újraindítom a system.d-t, illetve a munin / munin-node-t, működik.
Fura, hogy más még nem futott bele ebbe a hibába, bár lehet kevesen használnak nem standard shebangot, de itt most az kell... .
Köszi.
- A hozzászóláshoz be kell jelentkezni
Ne szerkeszd a fájlt közvetlenül (csomag frissítés felülírja), használj systemd override-ot
- A hozzászóláshoz be kell jelentkezni
Ne közvetlen szerkeszt, azért mondtam az editet, mert az csinál egy override filet, (egyebként a /etc/systemd/system/munin-node.service.d/override.conf, vagy ilyesmi, de így nem kell a pathot megjegyezni), és oda elég azt beírni, amit csinálsz.
Egyébként más is belefutott már, csak max nem shebanggal, mert nem az a gond, hogy shebang, hanem hogy a homeodeban van.
- A hozzászóláshoz be kell jelentkezni
Amikor próbából kiraktam a /tmp/-be, akkor is ugyanaz a hiba volt.
Ő, próbáltam az override-dal, azzal viszont nem működött, ezért szerkesztettem közvetlenül. No mindegy, akkor megpróbálom újra.
- A hozzászóláshoz be kell jelentkezni
persze, mert a PrivateTmp és be van kapcsolva.
Menni kell annak, csak legyen benne az is [Service], meg kell a deamon-reload, és újra is kell indítani a munin szolgáltatásokat (ezt nem írtam, bocsánat)
- A hozzászóláshoz be kell jelentkezni
Szép, grat!
Én nézegettem a munin debjeit, de eszembe se jutott, hogy a /lib-be belenézzek. Mondjuk ha megtalálom, akkor sem gondoltam volna erre, pedig ugye állítólag a mondás szerint, "ha már végképp nem működik valami, akkor el kell olvasni a dokumentációt"! :)
- A hozzászóláshoz be kell jelentkezni
Na igen, nekem is még eltartott volna 4-5 hétig, esetleg évig, mire rájövök :- ). Dokumentáció meg eszembe sem jutott. Már lassan 10 éve nem admin vagyok, a systemd-s dolgokat is csak érintőlegesen olvasgattam, de a dokumentációt elolvasni eszembe sem jutott. Meg voltam róla győződve, hogy bár 3 gépen volt ugyanaz a hiba, de én csinálok valamit nagyon rosszul (kinek nem volt még ilyen? :- . ).
- A hozzászóláshoz be kell jelentkezni
nem a libbe kell belenézni, hanem konkrétan a systemd unitba. Abba meg daemonszerű izéknél érdemes az elmúlt kb ~10 évben.
- A hozzászóláshoz be kell jelentkezni
Passz. ;)
$ cat debian_version
11.2
$ systemd
Trying to run as user instance, but the system has not been booted with systemd.
Mindenesetre kicsit kíváncsi lettem, hogy MX-en lenne-e hiba, én egy vmstat plugint átraktam a ~/Asztal-ra, és a munin-cron hiba nélkül vitte munin userrel.
- A hozzászóláshoz be kell jelentkezni
Ja, hát ha te nem használod, akkor nyilván kár megnèzni.
És ez még mindig nem egy hiba.
- A hozzászóláshoz be kell jelentkezni
De nyűgös lettél! :D
Amúgy szerintem a hiba az a nem várt működés. Hogy most az kinek a hibája, az meg egy másik dolog, én azt nem mondtam, hogy kié. Mondhatnám erre azt, hogy ha tényleg működik systemd nélkül, akkor a systemd-s hibaüzenet nem valami szuper, főleg annak tudatában, hogy akkor most kétféleképpen működik, környezettől függően, és hiba, hogy a home-ból mégis működik ha nincs systemd!!!! :D Nyilván nem köteles a fejlesztő tökéletes hibakezelésre, de azért ekkora korlát elég komoly. Nyilván benne van a dokumentációban, és hiba esetén illik elolvasni, de lehetne a home szigorításról esetleg a hibaüzenetben is utalni, gondolom, megoldható lenne.
Na de mindegy is, észrevetted a _hiba_ okát, megoldódott, én most ezt a témát lezártam. :D
- A hozzászóláshoz be kell jelentkezni
nem lettem, csak kevésbé kedvelem az olyen megállapításokat, hogy mánmegintszarasystemd, mert aztán jön majd pl mispelled gandzsa barátunk, és felírja a listájára, hogy hát factually szar a systemd, hát bele van írva a Zinternetbe. Miközben meg nem, valaki tudatosan bekapcsolt egy featuret. Azért van az egész "tényleg működik systemd nélküli", cseszés, mert neki a dolga a futtató környezet. Ez a típusú "hiba" nem új, és nem is systemd specifikus, előtte a "miafaszért nem fut ez cronból, mikor elindítva igen" volt a sláger, csak unlike a cron, a systemd legalább ad eszközt, amivel tudod úgy tesztelni, mintha ő indítaná. A munin fejlesztők használják is, nem is trivi, hogy miért futott le munin-runból, a kódot olvasva nem kellett volna.
A jobb hibaüzenet valóban jogos igény, és ez a systemdnél valóban tud vackos lenni, de ebben az esetben -- is, ez máskor is jellemző mint -- az van, amennyire egy gyors kód olvasás , meg common sense alapján látom, hogy egy rendszer featuret konfigurál, nevezetesen egyszerűen a megfelelő paraméterekkel mountolja be az adott könyvtárat az adott processnek. Ebből meg következik, hogy a systemd nem igazán tudja logolni. A rendszer meg alapvetően baszik az fs perm denyokat logolni, erről nem a systemd tehet. Persze cserébe, ha nem ezt csinálná, hanem emiatt keresztülvinné valami saját szolgáltatásán, akkor meg az lenne a baj, hogy miért csinálja ezt is.
És persze ilyenkor a standard eszközökkel lehetne is nyomozni, írtam is, hogy ott az audit alrendszer, azt meg lehetne kérni, hogy legyen kedves.
És az is igaz, hogy ilyesmit általában szebben lehet csinálni mondjuk selinux policyval, többekközött azért, mert jobban logol. Csakhát az egyrészt több munka, másrészt meg unlike systemd, az még nem defacto standard, mert a világ egy jó fele ugye apparmort használ, kétszer dolgozni meg nem szeret senki.
- A hozzászóláshoz be kell jelentkezni
Szerintem én egy rossz szót sem mondtam a systemd-ről, már csak azért sem, mert jelen esetben a systemd-hez való munin service kavart be, ami meg nem a systemd hibája. Amúgy szerintem a systemd egy totálisan linuxfilozófia-ellenes, túlbonyolított, elkapkodott, kiforratlan és felesleges baromság, és semmivel nem lett használhatóbb tőle a linux, de nem is lesz! :D De mondjuk ez a véleményem abszolút lényegtelen, és nem fogom/szoktam csak azért is szidni, megoldom, megoldottam a gondom valahogy, ahogy más rendszereknél szoktam. ;)
- A hozzászóláshoz be kell jelentkezni
Ez egy kiváló példája, hogy mi a baja a mostani fejlesztőknek. Ez az ész nélkül beemelek mindenféle libet meg komplett framework-öket plugin-kazallal, minden legyen benne, mint a fradilevesben, csak épp nem értjük, hogy mit csinál, hogy működik a háttérben, aztán megy a csodálkozás, meg jönnek a rá épülő sérülékenységhegyek, plusz az egész bloatabb is lesz. Ezért jó sokszor a köztes függőségeket meg abszrakciós rétegeket kihagyni. Egyszerűsít, gyorsít, soványít a kódon, később a hibakeresés is könnyebb lesz. Nem véletlenül esküszik erre a suckless és az OpenBSD csapata is.
Nem csak a programkódnál, de ezt a LaTeX-en is megfigyeltem, ami egy nagy rakás makrógányolás a sima (plain, Knuth-féle) TeX felett, amit aztán ha állítani akar az ember, akkor egy kazal csomag kell, amiről persze nem értjük mit csinál, meg egyes csomagok összeakadnak, egymás beállításait felülbírálva, így az egészből lesz egy spagettikódos katyvasz. Közben meg ugyanaz alap TeX parancsokkal sokszor sokkal egyszerűbben megcsinálható, átláthatóbb, kisebb, könnyebben leforduló kódot eredményezve. Vagy pl. ugyanez a kódgenerátoros meg dinamikus webframeworköknél, amik egy csomó extra erőforrást felemésztenek, egy csomó biztonsági támadási felületet behoznak, közben meg sokszor elég lenne kézileg normálisan megírni az oldal kódját, gyorsabban is renderelődne le.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
Azt ugyan nem tudom, hogy ezt most rám érted-e, vagy a debian fejlesztőkre, de ha rám, én nem vagyok fejlesztő. Csak van egy plugin, ami működött 6-7 éve, tulajdonképpen lényegi változtatás nélkül, és a friss debianon is szerettem volna működésre bírni anélkül, hogy a plugint átírom. Persze, már a legelején lehetett volna találni workaroundot rá, de itt most nem az volt a lényeg.
Az átlag userek nem szeretik, ha működik valami évekig, aztán egy újabb verziónál bumm, már nem megy. Ilyenkor jó megtudni, hogy miért nem... .
- A hozzászóláshoz be kell jelentkezni
Segítesz egy kicsit, hogy itt most melyik fejlesztő nem értette mi történik, meg egyáltalán milyen libet meg framewörköket emelt be a ki a hova?
- A hozzászóláshoz be kell jelentkezni
Bocsánat, félreértettem, a node-ból meg a shebangból következtetve azt hittem, hogy ez egy n+1. webes framework lesz valami fejlesztési feladathoz, közben meg utánanézve ez egy hálózati monitorozós cucc, bár ahhoz meg furcsállom, hogy shebangezni kelljen. Bár félig még mindig tartom, hogy enélkül is lehetne monitorozni. Persze megértem a frusztrációt, eddig ment, most meg nem működik. Mindegy, megoldás végül is meg van, csak egy gondolat volt.
De ha már itt vagyok, az érdeméhez is hozzászólok. Arch Wiki szerint ennek a Muninnak kell, hogy a munin nevű csoportban lévő munin nevű userrel fusson. Lehet ez okozza a jogosultságbeli hibát, és mint ilyen, nem Debian-specifikus probléma. Bár ki tudja, lehet nem ez okozza, hanem az selinux kavar be, ahhoz meg végképp passz.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
Szerintem maradjunk abban, hogy ez kiváló példája annak, mi a baja a mostani hupos hozzászólóknak. Elolvasás nélkül kommentelnek irreleváns marahságokat, és mondanak értékítéletet mások felett, aztán ha elolvassák, még akkor se értik, hogy mi ez, de azért félig meddig ragaszkodnak a (még mindig irreleváns) marhaságukhoz.
Bónuszként hozzák a saját becsípődésüket. Baszki, szerintem te egy kell-e kolbász a rakott krumpliba topikba is be tudnád írni, hogy a vanilla tex jobb, mint a latex.
- A hozzászóláshoz be kell jelentkezni
Jó, igazad van, minimális információk mentén messzire elszaladtam. Védelmemre legyen mondva, hogy abba a topikba se lenne haszontalan infó, legalább az a kérdés meg lenne oldva,latex semmiképp nem kell a rakott krumpliba, keserű íze lenne neki. Kolbász az belevaló, csak nem szabad beletenni, mert elkárhozunk, desznyó, tisztátalan állat, nem zuhanyzik naponta. Itt mink a nyugaton (UK) nem eszünk holmi porkot, mindenki muszlim vagy együttérző polkorrekt, meg paleo-neo-vegabarom, csak cshik-ííín, meg peri-peri, meg "Halal food", főleg ramadánkor, ez nem úgy van, mint a pogány balkánon, hogy majszolunk, erkölcstelen élvezet, azzal bevárjuk a 72 szüzet. Tudom, pulyka, marha, vad, stb., de ki hallott már olyanról? Olyat csak a jeti eszik, de ő azokat teszi a rakottba, meg a paprikás krumpliba is... kóbász helyett természetesen.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
A probléma nem a systemd , hanem a Debian maintainerek
- A hozzászóláshoz be kell jelentkezni
Ubuntu laptop-on is ugyanez a helyzet... . 20.04-es talán.
- A hozzászóláshoz be kell jelentkezni
persze, hiszen direkt van így.
- A hozzászóláshoz be kell jelentkezni
Még csak ez sem feltétlen. Ez egy viszonylag sensible security measure default egy olyan rendszernél, amibe azért pasztálgatnak az emberek pluginokat a fasztudja honnan is. Le is volt írva ott, ahol a debian az ilyen specifikumokat le szokta írni.
És mégiscsak az van, hogy a kolléga egy alapvetően system servicehez való izékét helyezett el a homejában, aminek ott konvenció szerint nem sok keresnivalója van.
Persze lehetett volna ehelyett apparmor meg selinux policyket is írni, de az azért nagyobb munka.
- A hozzászóláshoz be kell jelentkezni
Na ja, 5-6 éve működtek ezek a pluginok változtatás nélkül. Egy 9-es debianon még gond nélkül futott. Ez egy komplett rendszer, amiről szó van, és a mögötte lévő django és db csak így érhető el.
- A hozzászóláshoz be kell jelentkezni
De értsd már már meg, hogy semmi baja a pluginoknak. Egyszerűen a debian maintainerek úgy döntöttek, hogy alapból nem engedik meg a pluginoknak, hogy a homeba turkáljanak, te meg beletetted oda a futtató binárisukat. Ha eleve valami sensible helyre tetted volna a virtualenvet, mondjuk az /usr/local/ alatt, akkor nem is futottál volna rá erre.
- A hozzászóláshoz be kell jelentkezni
Erről van szó
- A hozzászóláshoz be kell jelentkezni
Értem én, értem. Nem csak a /home alatt akadt el amúgy, de virtualenv-et sokszor raknak az alkalmazást futtató user home-jába.
- A hozzászóláshoz be kell jelentkezni
Pedig ez csak ott van bármi hatással.
Azt meg értem, hogy szoktak ilyet, de rossz szokás. Illetve az, hogy a venv a user homjában van, az akár jó is lehet, csak egy service user homejának nincs dolga a /home alatt.
És ezekre érdemes figyelni, mert ami régen leginkább csak konvenció volt, az ma általában a fokozott biztonság alapja. apparmor, selinux is gyak ezekre alapozza a policyjait. Pl Ami a /var/www-ben van, az az indiánnak szól, a többitől meg hesspicsába.
- A hozzászóláshoz be kell jelentkezni
viszont az a tények fényében furcsa, hogy mikor teszteltél, akkor ment munin-runon keresztül, mert a kódot olvasva a munin-run megküzd azért (bár kicsit hülyén), hogy systemd-runon keresztül úgyanúgy fusson, mint rendesen. Ráadásul mind a kód, mint a konrét help a ProtectedHome-mal példálózik.
--ignore-systemd-properties
Do not try to detect and enforce the locally configured hardening
flags of the "munin-node" service unit. This detection is skipped,
if systemd is not enabled. The hardening flags may cause subtile
surprises. For example "ProtectHome=yes" prevents the "df" plugin
from determining the state of the "home" partition. [disabled]
szóval nem világos, miért nem akadt el.
- A hozzászóláshoz be kell jelentkezni
szerk: hülyeséget kérdeztem
- A hozzászóláshoz be kell jelentkezni
Nem láttam, de azt hiszem kifogytam az ötletekből... .
- A hozzászóláshoz be kell jelentkezni
hát, még egy auditd-t rá lehet izzítani
- A hozzászóláshoz be kell jelentkezni
auditd -f
Config file /etc/audit/auditd.conf opened for parsing
local_events_parser called with: yes
write_logs_parser called with: yes
log_file_parser called with: /var/log/audit/audit.log
log_group_parser called with: adm
log_format_parser called with: ENRICHED
flush_parser called with: INCREMENTAL_ASYNC
freq_parser called with: 50
max_log_size_parser called with: 8
num_logs_parser called with: 5
priority_boost_parser called with: 4
name_format_parser called with: NONE
max_log_size_action_parser called with: ROTATE
space_left_parser called with: 75
space_action_parser called with: SYSLOG
verify_email_parser called with: yes
action_mail_acct_parser called with: root
admin_space_left_parser called with: 50
admin_space_left_action_parser called with: SUSPEND
disk_full_action_parser called with: SUSPEND
disk_error_action_parser called with: SUSPEND
use_libwrap_parser called with: yes
tcp_listen_queue_parser called with: 5
tcp_max_per_addr_parser called with: 1
tcp_client_max_idle_parser called with: 0
transport_parser called with: TCP
krb5_principal_parser called with: auditd
distribute_network_parser called with: no
q_depth_parser called with: 400
overflow_action_parser called with: SYSLOG
max_restarts_parser called with: 10
plugin_dir_parser called with: /etc/audit/plugins.d
No plugins found, not dispatching events
type=DAEMON_START msg=audit(1659130508.051:8760): op=start ver=3.0 format=enriched kernel=5.10.0-16-amd64 auid=1000 pid=20451 uid=0 ses=128 subj=unconfined res=successAUID="csaba198" UID="root"
config_manager init complete
Error setting audit daemon pid (File exists)
type=DAEMON_ABORT msg=audit(1659130508.052:8761): op=set-pid auid=1000 pid=20451 uid=0 ses=128 subj=unconfined res=failedAUID="csaba198" UID="root"
Unable to set audit pid, exiting
The audit daemon is exiting.
Error setting audit daemon pid (Permission denied)
Nem tudom, hogy ez segít-e valamit.
- A hozzászóláshoz be kell jelentkezni
Nem, meg kéne kérni, hogy a kérdéses fileokra logoljon.
- A hozzászóláshoz be kell jelentkezni
Ami még érdekes, hogy ha csinálok egy symlinket:
ln -s /home/user/.virtualenvs/user/bin/python /usr/bin/pythonu
és ezt próbálom meg használni, az szintén nem megy, ám ha lemásolom:
cp /home/user/.virtualenvs/user/bin/python /usr/bin/pythonu
és ezt a pythonu-t állítom be shebangnak, no úgy már működik.
Ezt mi korlátozhatja így?
- A hozzászóláshoz be kell jelentkezni
Ebből csak annyit értek, hogy az X program elindítja az Y programot, de az egyszerűség kedvéért nem az erre kitalált fork/exec/spawn/etc rendszerhívásokkal, hanem a systemd bevonásával teszi ezt. Mondjuk azt már rég megtanultam az iparban, hogy minél több ilyen közvetítő komponens van egy rendszerben, annál gyorsabb és stabilabb.
- A hozzászóláshoz be kell jelentkezni
Hát, ha ebből csak ennyit értesz, az bem a systemd szegénységi bizonyítványa
- A hozzászóláshoz be kell jelentkezni
Én inkább örvendetes eredménynek tartom, hogy ma már a három leggyakoribb hibaok a következő:
sytemd
selinux
betelt a lemez
- A hozzászóláshoz be kell jelentkezni
Nocsak, kb. egyetértek ezzel. :D Még idevenném a fasza kis UEFI-be költöző férgeket is. :D
Mondjuk a selinux az NSA, az UEFI meg MS, szóval na! :D
- A hozzászóláshoz be kell jelentkezni
-nem ismeri a systemd-t
-nem ismeri a selinuxot
-betelt a diszk.
- A hozzászóláshoz be kell jelentkezni
tudom, hogy vicceltél, de ettől még igazad van. :)
- A hozzászóláshoz be kell jelentkezni
Az első kettő döntően a tudás/ismeret hiányából fakad.
- A hozzászóláshoz be kell jelentkezni
igen, ezért örvendetes, hogy a dolgok általában már nem tényleg szarok, simán csak béla nem hajlandó megtanulni, aztán szenved vele, vagy elfogyott a hely.
Itt is épületes volt, hogy a selinuxot hogyan kell kipacsolnira kernel paraméter jött lendületből, ahelyett, hogy "setenforce 0, és úgy próbáld ki". (azt már meg se merem említeni, hogy elég egyértelmű volt, hogy a debianban nincs selinux.)
- A hozzászóláshoz be kell jelentkezni
Off: Rasperry-s Linuxon is lehet ilyen seLinux? Mert a prog.hu-n valakinek olyasmi problémája van, amit én vaktában találgatva szintén a 'selinux vagy systemd' kategóriába sorolnék: nem tud a programja UDP-n fogadni, kivéve, ha ugyanakkor ugyanazon a gépen fut a WireShark is.
- A hozzászóláshoz be kell jelentkezni
A prog.hu-t tiltja a vallásom, a raspy linux szerintem deb alapú, szóval selinux nem lesz. En inkább abba az irányba kapirgalnek, hogy a wireshark valószínű atteszi promisc modba a kártyát.
- A hozzászóláshoz be kell jelentkezni
Aha. Két kommentel előbb meg helyeseltél.
Szerintem tényleg katasztrófa lenne ha egy 5 perces teszt erejéig valaki kikapcsolja a be sem kapcsolt selinuxot - én azt javasoltam -, nyilván rommá törik a gépét, pláne, hogy be sem volt kapcsolva, amit mertem feltételezni még előtte. Egyébként itt voltál, és akkor valahogy nem jutott eszedbe a setenforce 0, mert nem mondtad. A debianban meg van selinux, csak nem aktív, de hadd ne mi találjuk már ki, hogy esetleg nem volt-e mégis aktív, ezért be is linkeltem a setupját.
Amúgy cirka 25 éve basztatok linuxot, és képzeld, se apparmor, se selinux, se systemd nem volt jó sokáig, és mégsem törtek rommá naponta sokezer gépet. Sőt én egyiket se használom most se, de de törd fel a gépem nyugodtan!
Tőlem eljátszhatod a nagymenőt, meg a hipervédelmi hőst, mint zeller - aki kurvára előrébbvitte a probléma megoldását, ahogy szokta -, de akkor alaposabb legyél az ilyen utólagosan infószerzett beszólásoknál, mert kezd ciki lenni! :D
- A hozzászóláshoz be kell jelentkezni
Amúgy cirka 25 éve basztatok linuxot, és képzeld, se apparmor, se selinux, se systemd nem volt jó sokáig, és mégsem törtek rommá naponta sokezer gépet.
25 évvel, sőt, 20 évvel ezelőtt is sokkal kevesebb pénz volt ebben, ezért nem érte meg ezzel foglalkozni. Most már sokkal többen foglalkoznak Linux szerverek elleni támadással. Emiatt sokkal több támadási típus és támadási felület kerül felderítésre. Akkor is megvoltak a problémák, csak nem tudtál róla, mert nem foglalkozott vele senki.
- A hozzászóláshoz be kell jelentkezni
:D
Ezek 15-20 éves security technológiák, a systemd meg elvileg nem is az lenne, szóval baromira beváltak, ha egyre több a sebezhetőség! Nyilván a linux szerverek baszogatása miatt tették bele még az Android telefonokba is, és nagy-nagy sikerrel védi a dalvik vm-et is!!!
De annak örülök, hogy tudod, hogy én miről tudtam!
- A hozzászóláshoz be kell jelentkezni
Dalvik VM nincs már 8 éve, de ez ne zavarjon.
- A hozzászóláshoz be kell jelentkezni
Neked valószínűleg nem 3, hanem 7 felkiáltó jelet kellett volna írni, bár kétlem, hogy leesett volna, mert vadász módba kapcsoltál. :D Sajnos, én nem ismerem az Androidot!!!!!!!
- A hozzászóláshoz be kell jelentkezni
Aha. Két kommentel előbb meg helyeseltél.
Mire?
A többit meg félreérted. Nem hipervédelmi hőst játszok (bár képzeld, én is úgy cirka 25 éve használok linuxot, és ennek egy elég jelentős részében vagy konkrétan securityval, vagy security érzékeny dolgokkal foglalkoztam), semmi baj nincs azzal, hogy kikapcsoljuk egy teszt erejéig. Egyszerűen csak arra jó példa ez az egész, hogy annyira nincsenek ezek a technológiák, hogy még a kikapcsolásnál is már ott tartottatok, hogy grubba turkáltatok, holott az egész egy darab command, aztán már lehet is megint tesztelni. És nem azért nem mondtam, mert nem tudtam, hanem mire ideértem (főleg érdemben) már rég túl voltatok rajta. Nyugodtan guglizd meg, hogy van-e itt sok évvel ezelőttről ilyen beszélgetés :)
- A hozzászóláshoz be kell jelentkezni
Próbáltam utalni rá, hogy figyelmesebben fogalmazz, értelmezz de kár volt.
Konkrétan ezt írtam:
"Bár én a helyedben csak a bootkor írnám be, akkor csak arra az egy bootra vonatkozik, a grub.cfg marad eredeti."
Szerintem kb. értem mit kavartok itt, de én ebből kiszállok, mert gáz az egész. :D
- A hozzászóláshoz be kell jelentkezni
ja, csak bár én a helyedben meg csak beírtam vona, hogy sudo setenforce 0, és egyáltalán nem bootolgattam volna emiatt :)
- A hozzászóláshoz be kell jelentkezni
A "permissive" mód pont azt csinálja, hogy _megy_ a SELinux, _de_ azok, amik "enforced" módban nem mennek, azok naplózás _mellett_ működni fognak. Ha és amennyiben ismernéd a SELinux működését, akkor ezt _is_ tudnád. De nem, te nem használod - gondolom, a shadow password is ördögtől való nálad, mint anno egy HP-UX-on láttam saját szememmel, miközben üzletileg kritikus alkalmazást használtak rajta, és unix-os userrel tudtak belépni...
- A hozzászóláshoz be kell jelentkezni
Azért az kurva nagy, hogy 5 napig tartott amíg rájöttél, hogy a _nem_ használt selinuxot nem beállítani kell, hanem permissive módba kell tenni! :DDD
De legalább a szokásos ostoba módon játszod el, hogy mekkora ász vagy, és találgatsz vakon!
Baszki, 10 éve szórakozok Android és linux alapú custom ROM-okkal, a hybris kernelben speciel le kellett tiltani a selinuxot, de egyébként is sok ROM-ot permissive módban adnak ki, vagy egy su nélküli ROM-ban elég nehéz lenne a su-val váltani permissive-re, szóval kibaszott vicces ahogy a saját világodban magas a kerítés. :D
Én komolyan örülök, hogy végül maradtál a HUP-on, ennyi faszságot kevés ember ír le itt! :D
- A hozzászóláshoz be kell jelentkezni
Hogy is mondta Buffon...?
- A hozzászóláshoz be kell jelentkezni
Amikor úgy nagyjából a 45. kommentnél kroozo rávilágított a megoldásra, eszembe nem jutott, hogy immáron ez lesz valószínűleg a 101. komment.
Persze, örülök, hogy ilyen sikeres topicot sikerült nyitnom, de remélem 200 nem lesz :- ). Az érdemi rész remélhetőleg nem veszik el.
- A hozzászóláshoz be kell jelentkezni
Írd be a címbe, hogy MEGOLDVA, esetleg a posztba meg egy linket a megoldásra, hogy aki keresi, az ne olvassa a tévedhetetlen security "ászok"(XD) ámokfutását. ;)
- A hozzászóláshoz be kell jelentkezni