Synology-Forum.nl

Firmware => Synology DSM 6.1 => Topic gestart door: a.appel op 22 augustus 2017, 11:38:15

Titel: Andere User in Task Manager job
Bericht door: a.appel op 22 augustus 2017, 11:38:15
Hi guys,

Ik heb een nieuwe taak gecreeerd in de Task Manager, met als eigenaar "admin" .Om 4:30 moet een scriptje uitgevoerd worden, als administrator. Echter, in de e-mail met de resultaten krijg ik een melding dat een bepaald commando in het script ivm veiligheid niet als "root" uitgevoerd mag worden. En daarmee stopt het script...

Waarom wordt het script als "root" uitgevoerd? Hoe krijg ik het zo ver dat ie als "admin" uitgevoerd wordt?
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 22 augustus 2017, 11:52:43
Door het script in de taskscheduler als "admin" en niet als "root" uit te laten voeren.
Titel: Re: Andere User in Task Manager job
Bericht door: Birdy op 22 augustus 2017, 12:30:05
Ik ben eerder benieuw wat het script doet.
Daarbij, als je .b.v. met PuTTY inlogt als admin en je voert dan het script uit, wat krijg je dan te zien ?
Titel: Re: Andere User in Task Manager job
Bericht door: Briolet op 22 augustus 2017, 12:48:31
…Waarom wordt het script als "root" uitgevoerd?…

Je leest het verkeerd, of het staat er ongelukkig. Je gebruikt een commando, of veranderd een file, dat alleen door root uitgevoerd kan worden. Zo niet, dan ben ik ook benieuwd naar dat stuk uit het script.
Titel: Re: Andere User in Task Manager job
Bericht door: Birdy op 22 augustus 2017, 12:53:18
Had misschien ook beter de mail tekst in dit Topic kunnen kopiëren, om eventuele verwarring te voorkomen.
Titel: Re: Andere User in Task Manager job
Bericht door: Briolet op 22 augustus 2017, 13:24:20
Nu begin ik ook te twijfelen. Als ik een script als admin laat uitvoeren terwijl het root rechten nodig heeft, dan krijg ik:

Beste gebruiker

Taakplanner heeft een geplande taak voltooid.

Taak: Update SpamAssassin
Starttijd: Tue, 22 Aug 2017 13:19:13 GMT
Stoptijd: Tue, 22 Aug 2017 13:19:15 GMT
Huidige status: 1
Standaard uitvoer/fout:
gpg: WARNING: unsafe ownership on homedir `/var/packages/MailServer/target/etc/spamassassin/sa-update-keys'
gpg: failed to create temporary file `/var/packages/MailServer/target/etc/spamassassin/sa-update-keys/.#lk0x1323400.GedeeldeData.21828': Permission denied
gpg: keyblock resource `/var/packages/MailServer/target/etc/spamassassin/sa-update-keys/secring.gpg': General error
gpg: failed to create temporary file `/var/packages/MailServer/target/etc/spamassassin/sa-update-keys/.#lk0x1323400.GedeeldeData.21828': Permission denied
gpg: keyblock resource `/var/packages/MailServer/target/etc/spamassassin/sa-update-keys/pubring.gpg': General error
gpg: no writable keyring found: Unknown system error
gpg: error reading `/var/packages/MailServer/target/share/spamassassin/sa-update-pubkey.txt': General error
gpg: import from `/var/packages/MailServer/target/share/spamassassin/sa-update-pubkey.txt' failed: General error
gpg: process '/bin/gpg --homedir='/var/packages/MailServer/target/etc/spamassassin/sa-update-keys' --batch --no-tty --status-fd=1 -q --logger-fd=1 --import' finished: exit 2

Dat zijn toch heel andere foutmeldingen. Zou er dan toch een commando bestaan dat niet als root uitgevoerd mag worden? Maar TS schrijft heel expliciet dat hij het als Admin uitvoert.
Titel: Re: Andere User in Task Manager job
Bericht door: Briolet op 22 augustus 2017, 13:30:08
Het enige wat ik nog zou kunnen bedenken is dat er een sudo commando in staat. Dat zou de opmerking over "als root uitvoeren" kunnen verklaren.
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 22 augustus 2017, 14:39:09
Volgens mij zijn er door Synology een aantal security zaken toegevoegd aan de taskscheduler die checken of gebruikers scripts, zaken willen uitvoeren die gevaarlijk zijn voor de bedrijfszekerheid van DSM en die alleen door root kunnen worden uitgevoerd.
Dit blokkeren ze dan gewoon en geven deze melding.

Ik vermoed dan ook dat als je het script met admin privileges laat uitvoeren je een melding krijgt dat admin niet voldoende rechten heeft om bepaalde dingen in dat script uit te voeren.
Titel: Re: Andere User in Task Manager job
Bericht door: Birdy op 22 augustus 2017, 14:59:15
Maar ja, de melding is:
Citaat
dat een bepaald commando in het script ivm veiligheid niet als "root" uitgevoerd mag worden.
Maar goed, ik denk dat we allemaal op het verkeerde spoor zijn gezet, laat @a.appel eerst maar eens de echte melding zien, die in de mail staat.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 22 augustus 2017, 22:01:06
Hi guys,
Ok, even iets verder verduidelijken. Ik run een script wat EPG (Electronic Program Guide, ofwel een digitale TV gids) data ophaalt. Vanuit veiligheidsoverwegingen heeft de ontwikkelaar van het programma ervoor gezorgd dat het niet als root uitgevoerd kan worden.
Ik heb de boel geinstalleerd als admin en wil het dus ook runnen als admin.
Als ik via Putty als admin (dus niet als root!) inlog en het script run, gaat alles prima en wordt de data netjes opgehaald.
Als ik via de Task Manager het script run, met als eigenaar in de task manager "admin", krijg ik de foutmelding dat wegens beveiligingsredenen "root" dit programma niet mag runnen.
Ik wil het script dus aanroepen als admin, maar kennelijk wordt het aangeroepen als "root".
Vraag is: hoe zorg ik ervoor dat het wel als admin ipv als root aangeroepen wordt.

Exacte respons:
Taak: Grabber
Starttijd: Tue, 22 Aug 2017 04:30:02 GMT
Stoptijd: Tue, 22 Aug 2017 04:30:19 GMT
Huidige status: 0
Standaard uitvoer/fout:
Loaded the English texts file
Het Nederlandse tekst bestand is geladen Het configuratie bestand: /var/services/homes/admin/.xmltv/tv_grab_nl3_py.conf wordt gebruikt
  tv_grab_API.json wordt gedownload ...
Het bestand: "/var/lib/tvgrabpyAPI/tv_grab_API.json" is niet gevonden of kon niet worden geopend.
  tv_grab_nl.json wordt gedownload ...
Het bestand: "/var/lib/tvgrabpyAPI/tv_grab_nl.json" is niet gevonden of kon niet worden geopend.
  source-virtual.nl.json wordt gedownload ...
DataTreeGrab,id:11:Conversion Warning at line:1472: Failed to store the converted file as: "/var/lib/tvgrabpyAPI/source-virtual.nl.7.bin"
Je kunt dit script niet als "root" draaien behalve met de --configure optie.
Wanneer je --configure als "root" draait, dan wordt de configuratie in "/etc/tvgrabpyAPI/" geplaatst en als reserve configuratie gebruikt.
We wachten op alle overgebleven programma-threads om af te sluiten.
Titel: Re: Andere User in Task Manager job
Bericht door: Birdy op 22 augustus 2017, 23:24:50
Kijk eens in /usr/syno/etc/scheduled_tasks

Als het als root wordt gedraaid, dan is owner=0
En als admin is owner=1024
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 09:10:11
Gekeken. Er staat duidelijk dat de owner = 1024, dus admin. En toch geeft het (automatisch) runnen van het script de foutmelding, dat de root de commando's niet mag uitvoeren.
Het verdere vreemde is, dat als ik in de task manager direct klik op uitvoeren, het script wel gewoon draait en dus de boel NIET door de root wordt aangeroepen.

Kortom, het lijkt erop dat er in de automatische run, ten onrechte de root als user van het script cq van de commando's in het script aangewezen wordt.
Titel: Re: Andere User in Task Manager job
Bericht door: dvandonkelaar op 23 augustus 2017, 09:14:00
En wat nou als je het script uit voert als een gebruiker met admin-rechten? Krijg je dan geen foutmelding?
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 09:59:25
Als ik in de task scheduler een andere gebruiker met admin rechten invul, krijg ik "permission denied" melding.
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 10:15:17
Als je eens vertelde waar je dat script vandaan hebt, dan kan ik even in de source kijken wat hij probeert te doen.
Tenslotte is het gewoon een python script.

Uit de losse pols vermoed ik dat hij iets onder "HOME" probeert weg te schrijven die environment variable is voor de "admin" user namelijk "/root" en daar mag je niet schrijven van DSM tenzij je root bent.


PS. Ik heb gemerkt dat als je een gewone user in de groep "administrators" toevoegt je een reboot nodig hebt om met putty als die user in te kunnen loggen.
Dus als je dat gedaan hebt werkt een reboot misschien.

Edit En je moet natuurlijk wel de "Home Service" hebben aan staan anders heeft die user nog steeds geen "HOME" folder.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 10:28:01
Script is zelf geschreven en doet niet meer dan:
tv_grab_nl3.py -l nl -C /var/services/homes/admin/.xmltv/tv_grab_nl3_py.conf -A /var/services/homes/admin/.xmltv/program_cache3.db -W /var/packages/DVBLinkServer/target/share/xmltv/data.xml
Waarbij tv_grab_nl3.py een grabber voor EPG data is, executable voor alle gebruikers
-l nl aangeeft dat de nederlandse taal gebruikt wordt
-C /var/services/homes/admin/.xmltv/tv_grab_nl3_py.conf het te gebruiken config file aangeeft, eigendom van admin, readable ook door users
-A /var/services/homes/admin/.xmltv/program_cache3.db het te gebruiken cache file aangeeft, eigendom van admin, users hebben alle rechten
-W /var/packages/DVBLinkServer/target/share/xmltv/data.xml het doelbestand aangeeft, eigendom van admin, users hebben alle rechten
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 10:44:20
Het gaat natuurlijk niet om het script dat jij er omheen gebakken hebt.
Het gaat om die python applicatie.
Waar heb je die vandaan en als het datgene is dat ik denk dan is mijn verklaring al in m'n vorige post gegeven.

Die config file heb je onder de home folder van admin gezet dus een andere user kan daar dan niet bij, vandaar dat hij die denied geeft als je hem onder een andere user wilt draaien.
Heb je zoals ik al zei de "Home Service" op DSM aanstaan?

Ik denk dat je veel slimmer die scripts en die python applicatie onder de Home folder van een user met admin rechten kunt zetten in plaats van zaken onder systeemfolder te plaatsen.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 10:47:07
Python app komt hier vandaan: https://github.com/tvgrabbers/tvgrabnlpy

Moet je me even helpen... Home Service aanzetten, hoe / waar doe ik dat?
Kan het in het help file niet echt vinden...

Ik denk dat je veel slimmer die scripts en die python applicatie onder de Home folder van een user met admin rechten kunt zetten in plaats van zaken onder systeemfolder te plaatsen.
Ja, daar zat ik ook al aan te denken.
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 10:49:04
Control Panel
Users
Advanced
Helemaal naar beneden scrollen.

Als je een home folder hebt hoef je ook geen aparte locatie voor die config op te geven, want die zet het python script daar default neer.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 11:06:35
Done...

Zou ik de boel gewoon kunnen kopieren van de admin directory naar een andere gebruikers directory, de eigenaar van alles aanpassen, het script aanpassen en opties aanpassen? Of moet ik de boel opnieuw installeren?

Overigens blijft het natuurlijk vreemd dat een test run (in task manager --> uitvoeren) wel goed werkt, maar een automatische run, op de specifieke tijd die in de task manager staat, niet goed werkt...
Titel: Re: Andere User in Task Manager job
Bericht door: Birdy op 23 augustus 2017, 11:15:23
En.....het werkt ook in CLI, heb ik begrepen.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 11:18:24
yep

EDIT: Damn, door het aanzetten van Home service, zijn de subdirectories dus ook .xmltv met het cache en config file, verdwenen...
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 12:25:50
Als je nu eerst eens vertelde waar je die applicatie vandaan hebt en wat je gedaan hebt om het te installeren.

Het is duidelijk geen Synology package dus als je verder niets vertelt kunnen we je ook niet helpen.

Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 12:29:50
Python app komt hier vandaan: https://github.com/tvgrabbers/tvgrabnlpy

Zoals ik al aangaf: hier komt de app vandaan.

Inmiddels heb ik onder mijn eigen username (dus ook admin rechten) de boel opnieuw geconfigureerd en ben een (test) run aan het draaien.
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 14:14:12
Die informatie had je nog niet gegeven en je geeft nog steeds niet aan hoe en waar je het een en ander geinstalleerd hebt.
Volgens mij kun je alles gewoon het beste in de Home folder van een user met admin rechten zetten en het uit laten voeren door die user.

Houd je er wel rekening mee dat deze applicatie op 1 oktober stopt met werken.
Vanaf dat moment haalt Tvdb hun API V1 uit de lucht en is alleen API V2 nog actief, deze applicatie gebruikt API V1. van TheTVDB.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 14:53:15
Sorry, ik ben abuis... Ik heb de repository van hier https://github.com/tvgrabbers/tvgrabpyAPI
Dit is juist versie V2!

Ik ben in de problemen gekomen, doordat ik het Home Service van DSM niet aan had staan. Ik heb als root een aantal directories aangemaakt, van eigenaar gewisseld (naar admin) en rechten aangepast. Ik kom er nu pas achter dat er wel degelijk een Home binnen de Linux variant van DSM is.

Anyway, dat verklaart nog steeds niet waarom het script, vanaf de command prompt als admin prima loopt en succesvol voltooid, net als een test-run via de Task Manager en dat een geautomatiseerde run tegen de foutmelding aan loopt dat de root de applicatie niet uit mag voeren.
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 15:07:07
Ik kan wel een aantal verklaringen bedenken, maar als ik niet weet wat je allemaal gedaan hebt blijft het gissen.

Verder vergis je, je wat betreft de API van Tvbd.
Het feit dat deze applicatie een versie 2 is heeft uiteraard niets te maken met de tvdb API die gebruikt wordt.

De nieuwe tvdb API (V2) vereist dat je een account aanmaakt op Tvdb en dan de userkey die je krijgt gebruikt om hun API te benaderen.
Dus als jij nergens een TVDB username en Userkey hoeft in te vullen gebruikt deze applicatie nog gewoon API V1 en die wordt vanaf 1 Oktober stop gezet.
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 15:41:40
Ben, ik weet niet precies wat je bedoelt met de API van Tvdb. Dit is een XMLTV-compatibele grabber voor Nederlandse en Vlaamse televisie die TVGids.nl, TVGids.tv, RTL.nl, NPO.nl, Horizon.tv, Humo.be, VPRO.nl, NieuwsBlad.be en Primo.eu als bron gebruikt.  Dit zijn volledige open databases.
Hoewel TheTVDB.com wordt gebruikt door tv_grab_nl3.py is dit slechts 1 van de bronnen. En daarbij ook alleen een bron voor content en niet EPG data.
DVBLink heeft geen sterke UI op het gebied van EPG content info, dus als tvdb straks wegvalt als bron, maakt me dat niet zo veel uit...
Titel: Re: Andere User in Task Manager job
Bericht door: Ben(V) op 23 augustus 2017, 16:03:53
Ik ben er niet helemaal doorheen gegaan, want die python source zit als een grote brij in een enkel bestand aan elkaar geplakt en blinkt niet uit in duidelijkheid.
Maar volgens mij gebruiken ze tvdb om de juiste benamingen van series en films op te zoeken en die dan gevonden naam gebruiken ze weer om de EPG bronnen te raadplegen.

Die Tvdb API is de interface waarmee je tvdb kunt raadplegen en dat doet die applicatie dan ook.
Als die weg val zou alles wel eens niet meer kunnen werken.

Maar werkt alles intussen nu dan?
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 23 augustus 2017, 19:20:54
Heb het script even opnieuw geinstalleerd met mij als user en net in de command line de boel gerund. Dit werkt.
Nu even een nieuw scriptje aanmaken voor de task manager en morgen even kijken of het goed gedraaid heeft... ben benieuwd.

Alvast bedankt voor je hulp!
Enne, tvgrabpyAPI wordt vrij intensief up-to-date gehouden door de ontwikkelaar. Als de boel bij TVDB veranderd, verwacht ik dat Hika daar ook snel een oplossing voor bouwt...

Morgen meer info over de werking van het script in de task manager!
Titel: Re: Andere User in Task Manager job
Bericht door: a.appel op 25 augustus 2017, 10:53:07
Even een update: het werkt nog steeds niet. Inmiddels is ook het support team van Synology er mee bezig, maar ook daar weten ze niet goed wat er gebeurd...

Vraag: hoe stel ik een cronjob in, in de Synology Linux distributie? ik wil dus een taak door een andere gebruiker dan root of admin laten uitvoeren. In verschillende distributies zijn daar verschillende methoden voor:
in /etc/crontab: * * * * * root command commandoptions user
in /etc/crontab: * * * * * user command commandoptions
in /etc/cron.d: * * * * * command commandoptions user (en hoe noem ik dan het cron file in /etc/cron.d?)
in /etc/cron.d: * * * * * user command commandoptions (en hoe noem ik dan het cron file in /etc/cron.d?)
in /var/spool/cron?(en hoe noem ik dan het cron file in /var/spool/cron en wat is de syntax van een cronjob regel?)

En hoe zorg ik voor een mail met de resultaten?