Sudoers root Rechte für bestimmten Befehl vergeben

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

justkidding

Benutzer
Registriert
15. Juli 2013
Beiträge
117
Reaktionspunkte
7
Punkte
18
Hallo zusammen,

ich habe ein Skript in dem ich die Berechtigungen und Gruppen von Ordnern und den darin befindlichen Dateien ändern möchte und anschließend filebot ausführen möchte.
Leider habe ich etwas Probleme und wäre um Hilfe dankbar.
Das Skript sieht wie folgt aus:

Rich (BBCode):
#!/bin/sh

#Javapfad
# PATH=$PATH:/var/packages/java/target/bin


#Pfade
QUELLE="/volume1/downloads/Diverses"
SERIEN="/volume1/03_Diverses/02 Serien"
FILME="/volume1/03_Diverses/01 Movies"
ZIEL="/volume1/03_Diverses"

#Filebot
FILEBOT="/volume1/@appstore/filebot/filebot.sh"
KONFLIKT=skip
AKTION=move
SPRACHE=en
IGNORE=.nfo,.txt,.url,.rar,.jpg
CLEAN=y
LOG="/volume1/90_Vertraulich/99 Logs/filebot.log"

#Formate
SERIE="{n}/{episode.special ? '\''Special'\'' : '\''Staffel '\''+s}/{n} - {episode.special ? '\''S00E'\''+special.pad(2) : s00e00} - {t} {vf} {ac} {af}"
FILM="{n.upperInitial()} ({y})/{n.upperInitial()} ({y}) {file.path.contains('\''3D'\'') || file.path.contains('\''3-D'\'') ? '\''3D '\'':'\'\''}{file.path.contains('\''HSBS'\'') ? '\''HSBS '\'':'\'\''}{file.path.contains('\''FSBS'\'') ? '\''FSBS '\'':'\'\''} {source} {vf} {vc} {ac} {af}"

#Kodi
KODI="192.168.X.XX"

#User/Gruppe
USER=MeinUser
GROUPA=administrators
GROUPB=users

####################################################################

# Berechtigung auf Quelle setzen
sudo find $QUELLE -type d -exec chown -R $USER:$GROUPA {} +

#Filebot-Kommando
$FILEBOT -script 'fn:amc' $QUELLE --output "$ZIEL"  --conflict $KONFLIKT --action $AKTION -non-strict --lang $SPRACHE --log info --log-file $LOG --def ignore=$IGNORE --def subtitles=$SPRACHE clean=$CLEAN xbmc=$KODI "seriesFormat=$SERIEN/$SERIE" "movieFormat=$FILME/$FILM" 'excludeList=.excludes' 

# Berechtigungen auf Ziel setzen
sudo find $FILME -type d -exec chown -R $USER:$GROUPB {} +
sudo find $SERIEN -type d -exec chown -R $USER:$GROUPB {} +

exit 0

Nun zu meinen Problemen:
1.) Ich möchte das Skript nicht als root ausführen. Allerdings benötigt das Setzen der Berechtigungen root-Rechte. Daher suche ich einen Weg, dass die sudo-Befehle im Skript, aber nur im Skript, ohne Passwortabfrage durchgeführt werden können. Daher habe ich versucht die sudoers Datei zu editieren. Leider ohne Erfolg bisher...
Folgende 2 Dinge habe ich versucht:

MeinUser ALL = NOPASSWD: find /volume1/downloads/Diverses -type d -exec chown -R MeinUser:administrators {} +

Leider bekomme ich dann einen Syntaxfehler...

MeinUser ALL = NOPASSWD: /volume1/03_Diverses/filebot.sh

Leider kommt danach die Passwortabfrage nach wie vor...

2.) Im Filebotbefehl scheinen Fehler zu sein. Bei der Ausführung bekomme ich folgende Fehler:
SyntaxError: expecting ':', found 'Special'
javax.script.ScriptException: SyntaxError: expecting ':', found 'Special'
at net.filebot.format.ExpressionFormat.compile(ExpressionFormat.java:117 )
at net.filebot.format.ExpressionFormat.<init>(ExpressionFormat.java:75)
at net.filebot.cli.CmdlineOperations.rename(CmdlineOperations.java:97)
at net.filebot.cli.ScriptShellBaseClass.rename(ScriptShellBaseClass.java :336)
at Script1$_run_closure72.doCall(Script1.groovy:377)
at Script1.run(Script1.groovy:362)
at net.filebot.cli.ScriptShell.evaluate(ScriptShell.java:62)
at net.filebot.cli.ScriptShell.runScript(ScriptShell.java:72)
at net.filebot.cli.ArgumentProcessor.runScript(ArgumentProcessor.java:11 4)
at net.filebot.cli.ArgumentProcessor.run(ArgumentProcessor.java:29)
at net.filebot.Main.main(Main.java:120)

3.) Ist das Vorgehen aus Sicherheitsperspektive gefährlich?
4.) Kann ich einem Befehl im Skript (dem Filebot-Aufruf) mitgeben, dass dieser immer als User MeinUser ausgeführt wird?

Danke und viele Grüße

justkidding
 
Das SUID wäre eine Möglichkeit, aber:
1. solltest du das nur setzen, wenn du ganz genau weißt, was du tust und
2. ist das aus Sicherheitsgründen für *sh-scripte deaktiviert, du müsstest dein Script also bspw. in C schreiben.
Lesestoff: https://wiki.ubuntuusers.de/Rechte/#Sonderrechte


Über die sudoers würde ich es nicht lösen, damit machst du dein System zu sehr "auf".
 
Hmm, ehrlich gesagt weiß ich nur sehr vage was ich da tue :D
Daher lasse ich von SUID mal lieber die Finger...
Gibt es außer SUID noch eine andere Möglichkeit?
 
du könntest das script via aufgabenplaner starten (also manuell), da kannst du den ausführenden User angeben…
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat