Synology-Forum.nl

Packages => 3rd party Packages => Topic gestart door: a.appel op 12 februari 2018, 19:54:23

Titel: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 12 februari 2018, 19:54:23
Mijn Synology NAS (was een DS214+, is sinds afgelopen week een DS415Play) fungeert onder andere als videorecorder. Met een HDHomeRun digitale tuner in mijn netwerk en met DVBLink als server kan ik programma's opnemen en afspelen.

Om de programmagids (EPG) van informatie te voorzien gebruik ik een Python script, te weten tv_grab_nl3.py. Dit script heeft altijd voor een periode van 2 weken programma informatie gedownload en daar ook netjes een logboek over gevuld. Sinds een paar maanden wordt het logboek niet meer van de juiste text voorzien.

Het script wordt gerunt in een user directory, waarbij de text files elders staan. Als ik het script run als SUDO werkt het prima en krijg ik de Nederlandse tekst te zien. Run ik het als gewone user of als admin, krijg ik foutmeldingen.

Ik heb de rechten van directories en files op 777 gezet, maar dat maakt niet uit. Ik heb de verschillende directories in het path opgenomen, maar ook dat helpt niets.

Weet iemand of er iets gewijzigd is in de Python links? In de rechtenstructuur onder Python? In de simlinks? (ik gebruik Python 2.7.13-16 op DSM 6.1.5.15254)
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Ben(V) op 13 februari 2018, 09:18:54
Het gaat natuurlijk om de rechten van de logboek file.
Is dat een bestaand bestand of wordt dat elek keer door het python script aangemaakt?

Bij een bestaand bestand moet je die rechten aanpassen zodat de user waaronder je het python script uitvoert lees/schrijf rechten heeft op die file.

Op het moment dat die file aangemaakt wordt krijgt hij normaal gesproken de rechten van de folder waarin hij aangemaakt wordt en zal de owner van die file hetzelfde zijn als degene die de file aanmaakt.

Ik ken je opzet niet maar als je privilege bits van een file gaat zetten die al open is heeft dat geen effect.
Dus als je script draait terwijl je dat doet werkt het niet.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 13 februari 2018, 10:28:30
"het gaat natuurlijk om de rechten van de logboek file"
Tja, dat zou je bijna gaan denken, toch?
Maar nee, ik ben eigenaar van het logfile, ik heb alle rechten en ik ben ook de user die het script uitvoert. De folder is door mij aangemaakt en ook daar heb ik alle rechten op.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Ben(V) op 13 februari 2018, 10:37:57
Tja dan zul toch iets niet goed zien, want anders kan het niet gaan werken als je het script root rechten geeft via sudo.
Hoe start je dat script op?
Met de hand via putty of is het een package dat geinstalleerd is of gebruik je de taakplanner?
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 13 februari 2018, 10:50:08
Het script wordt standaard via taakplanner uitgevoerd, letterlijk: "/bin/su -c "/var/services/homes/a.appel/tvgrabpyAPI-stable-1.0.7/tv_grab_nl3.py --language nl --disable-ttvdb -C /var/services/homes/a.appel/.xmltv/tv_grab_nl3_py.conf -A /var/services/homes/a.appel/.xmltv/program_cache3.db -W /var/packages/DVBLinkServer/target/share/xmltv/data.xml" a.appel"

waarin -C het te gebruiken config file is, -A de cache database, -W het output file.

Echter, ook als ik de NAS via putty benader (met mijn user ID), en de boel run krijg ik ook geen NL output in de logfile.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Ben(V) op 13 februari 2018, 11:40:17
Ik zou in de eerste plaats maar eens dat su eruit halen.
Als je iets door de taakplanner laat uitvoeren kun je daar kiezen als welke user (of als root) het script wordt uitgevoerd.
dus dit in de taakplanner zetten:
"/var/services/homes/a.appel/tvgrabpyAPI-stable-1.0.7/tv_grab_nl3.py --language nl --disable-ttvdb -C /var/services/homes/a.appel/.xmltv/tv_grab_nl3_py.conf -A /var/services/homes/a.appel/.xmltv/program_cache3.db -W /var/packages/DVBLinkServer/target/share/xmltv/data.xml"

Verder moet je toch even kijken naar de locatie waar de log wordt weggeschreven.
Die staat niet op je commandline dus zit die ergens hardcoded in het script? Of bedoel je met die log de output file?

Ook zie ik dat hij de output probeert weg te schrijven in de folder waar het package geinstalleerd staat, daar heb je als normale gebruiker geen schrijfrechten, dus tenzij dat package daar de rechten heeft aangepast, kan jouw script daar niet schrijven.

Het zal allemaal wel met DSM 6 te maken te hebben waar packages niet meer draaien onder een user die in de group users zit en je dus niet via group rechten daar kunt schrijven.

Je hebt dus drie opties.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 13 februari 2018, 16:29:08
Ik zou in de eerste plaats maar eens dat su eruit halen.
Als je iets door de taakplanner laat uitvoeren kun je daar kiezen als welke user (of als root) het script wordt uitgevoerd.
dus dit in de taakplanner zetten:
"/var/services/homes/a.appel/tvgrabpyAPI-stable-1.0.7/tv_grab_nl3.py --language nl --disable-ttvdb -C /var/services/homes/a.appel/.xmltv/tv_grab_nl3_py.conf -A /var/services/homes/a.appel/.xmltv/program_cache3.db -W /var/packages/DVBLinkServer/target/share/xmltv/data.xml"
Dat zou je wel zeggen, he.... Maar nee, hier heb ik de vorige keer, met Synology support al een paar weken over zitten stoeien. Dit script heeft een beveiliging, zodat het niet als root gerund kan worden. Als ik die su eruit haal, draait de taakplanner hem altijd als root. Ook als ik aangeef dat ie hem als a.appel moet draaien. Vraag me niet waarom, maar het gebeurt. En Synology support snapt ook niet waarom... Uiteindelijk zijn we op deze "omweg" uitgekomen om toch als a.appel het script te laten draaien.

Verder moet je toch even kijken naar de locatie waar de log wordt weggeschreven.
Die staat niet op je commandline dus zit die ergens hardcoded in het script? Of bedoel je met die log de output file?
De log wordt geschreven in de .xmltv directory en is hardcoded in het script. Tenminste, ik kan het niet met een optie of parameter aangeven dat ie het ergens anders moet schrijven. En er wordt wel in het log geschreven, alleen niet de juiste tekst. Het script haalt in een taal file de juiste tekst op en schrijft dat in het log file. Echter, dat ophalen gaat niet goed. En dus schrijft het script een error (of eigenlijk 3 Mb aan error regels) in het log file.

Ook zie ik dat hij de output probeert weg te schrijven in de folder waar het package geinstalleerd staat, daar heb je als normale gebruiker geen schrijfrechten, dus tenzij dat package daar de rechten heeft aangepast, kan jouw script daar niet schrijven.
De output wordt geschreven naar de XML import directory van DVBLink. Daar heeft elke user lees- en schrijfrechten.

Je hebt dus drie opties.
1. Het package ook group rechten uit laten geven
2. Een group aanmaken en met winscp de folder waar de output komt plus jezelf aan die group toevoegen
3. Het script als root laten draaien in de taakplanner
1 en 2 begrijp ik niet goed. Kun je dat iets uitgebreider uitleggen?
3. werkt niet; de beveiliging in het script laat het niet als root draaien. Vraag me niet waarom, maar het kan niet...
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Ben(V) op 13 februari 2018, 18:09:57
Het probleem is dat het package vanaf DSM 6 niet meer onder een normale user draait en de folders en files ook niet van een normale user zijn, maar van een hidden user die ook niet in de group users zit.

Als je geen verstand hebt van packages maken dan is optie 1 niet voor je weggelegd en optie 3 kan volgens jouw niet omdat dat in het package hardcode is afgevangen.

Blijft optie 2 over.

Installeer winscp op je PC en hoe je die verder moet configureren staat in een tutorial van Birdy, die moet je maar even opzoeken.
Dan maakt je in DSM een groep aan en voeg de gebruiker a.appel toe aan die groep.
Ga met winscp naar de folders waar die taal bestanden staan en ga op de folder staan waar die bestanden instaan.
Rechtsklik op properties en pas de groep aan naar de groep die je net hebt aan gemaakt.
Doe dat ook voor de folder waar de output terecht moet komen.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 14 februari 2018, 10:05:22
Wat bedoel je eigenlijk met "package"? Is dat de kernel? Of DSM? Of iets anders? Ik begrijp namelijk niet helemaal wat je ermee bedoelt.

Verder heb ik winscp geinstalleerd, een nieuwe groep op mijn nas aangemaakt (NASUsers) en mezelf in die groep gezet. Echter, als ik vervolgens in winscp naar de directory ga en op eigenschappen klik, kan ik alleen kiezen tussen de groepen Users en Root. De nieuwe groep staat daar dus niet bij.

Maar als ik het goed begrijp, moet ik de eigenaar en groep veranderen. Dat kan toch ook gewoon in Putty met chown?
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Ben(V) op 14 februari 2018, 10:38:30
Een package is een applicatie die ingepakt is als een package zodat je het kunt installeren op je NAs.
Met andere woorden de .spk file.

Je moet in winscp gewoon de juiste group zelf invullen.
Die kun je niet kiezen uit de pulldown, daar zie je alleen de al toegekende groepen.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 14 februari 2018, 10:53:56
Ok. In WinSCP krijg ik de melding dat ik niet de juiste rechten heb en om uit te zoeken hoe ik sudo commando's moet geven, heb ik even geen zin in. In principe zeg je dat ik groep van de owner van de directories moet veranderen, toch? Alleen de groep of ook de owner zelf?
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Birdy op 14 februari 2018, 10:57:39
https://www.synology-forum.nl/algemeen/nas-benaderen-met-ssh-winscp-putty/
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 14 februari 2018, 12:52:48
Thx voor de link Birdy. Maar in principe kan het ook gewoon via de command line in Putty met chown, toch?
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Birdy op 14 februari 2018, 13:11:01
Jazeker maar, WinSCP werd genoemd.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 14 februari 2018, 15:03:23
Nou, ik heb een (gewoon met PuTTy) de eigenaar en groep veranderd van diverse directories en files. Na het veranderen, liep het script op een onverwachte manier tegen een probleem aan, maar daardoor kwam wel de oplossing naar voren. Uiteindelijk bleek het in een van de simlink van zowel files en directories te zitten, in /usr/lib/python2.7/site-packages/tvgrabpyAPI/texts.

Maar, feit blijft dat Synology op een aparte manier omgaat met eigenaarschap en groepen, zowel qua files als processen. Tnx voor de hulp!
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: Ben(V) op 15 februari 2018, 08:37:53
Fijn dat het weer werkt. :thumbup:

Maar ik ben het niet met je eens dat Synology op een aparte manier omgaat met het eigenaarschap en rechten.
Het is nu eenmaal noodzakelijk gebleken de security van alle systemen strakker aan te trekken en het feit dat vroeger elke user bij alles kon wat een applicatie maar produceerde is uiteraard een behoorlijk security risico.
Op die manier heeft namelijk het hebben van verschillende user account op een Nas geen enkel nut meer.

Dat is de belangrijkste reden waarom die applicaties niet meer lid zijn van de groep users.
Dat allerlei applicaties daarop rekenden en ook nauwelijks begrijpen dat ze hun packages daar op moeten aanpassen kun je Synology niet verwijten.
Titel: Re: Rechten? Veranderingen in links?? Python simlinks?
Bericht door: a.appel op 15 februari 2018, 09:11:03
Dat is de belangrijkste reden waarom die applicaties niet meer lid zijn van de groep users.
Dat allerlei applicaties daarop rekenden en ook nauwelijks begrijpen dat ze hun packages daar op moeten aanpassen kun je Synology niet verwijten.

Nee, dat klopt. Ik doelde ook niet alleen op dit item, maar al eerder heb ik problemen gehad met het runnen van (hetzelfde) script door de taakplanner. Ondanks het feit dat er uitdrukkelijk ingesteld wordt dat een taak als een bepaalde gebruiker gerund moet worden, wordt ie door root gerund. En hoewel Synology support dat eerst niet wilde geloven, zijn ze daar toch op teruggekomen en moeten toegeven dat ze niet helemaal weten / begrijpen waarom het systeem dat doet.

Maar al met al ben ik blij dat het weer werkt. We kunnen weer verder. Tnx voor je hulp Ben, je zette me op het juiste spoor!