2016-04-19 21 views
1

Ich muss ein Anmeldeskript starten. Dieses Anmeldeskript enthält mehrere Befehle wie: * cp, ln, und chown. * Aber "chown" müssenroot sein, um effizient zu sein. Mein Skript läuft also gut, außer dem Befehl "chown".Exec Skript als root in Autostart

Meine Umgebung: Debian Jessie, LXDE.

Mein Skript (in /usr/local/bin/transfertPOL.sh):

#!/bin/bash 
    #transfert de POL au démarrage de la session 
    groupe=$(id -gn $1) 
    uid=$(id -u $1) 
    POL=/var/POL 
    home=$(eval echo ~$1) 
    lien=$home/.PlayOnLinux 
    #changement de propriétaire du dossier 
    sudo chown -h -R $1:$groupe $POL 
    ln -s $POL $lien 
    sudo chown -h -R $1:$groupe $lien 
    #Copie des raccourcis sur le Bureau 
    cp --preserve=ownership $POL/shorcuts/*.desktop $home/Desktop 

My Desktop Eintrag in /etc/xdg/autostart/transfertPOL.desktop:

[Desktop Entry] 

    Type=Application 

    Exec=sh /usr/local/bin/transfertPOL.sh 

Die Exec, versuchte ich mehrere Dinge:

Exec=sh /usr/local/bin/transfertPOL.sh #Work, but the chown don't 

    Exec=/bin/bash/ -c "sudo /usr/local/bin/transfertPOL.sh" #doesn't work 

    Exec=sudo sh /usr/local/bin/transfertPOL.sh #Work, but the chown don't 

Für diesen einen, ich habe eine /etc/sudoers.d/transfert mit

erstellt
%users ALL=NOPASSWD: /usr/local/bin/transfertPOL.sh 

Das Skript ist eine symbolische Verknüpfung zum lokalen Ordner PlayOnLinux. Jeder Benutzer muss auf diesen spezifischen POL-Ordner zugreifen können. Wenn sich ein Benutzer anmeldet, ändert der Chown Ordnerrechte.

Haben Sie eine Idee, mir zu helfen?

Dank

Antwort

0

Du sh im Exec Befehl aufrufen:

Exec=sudo sh /usr/local/bin/transfertPOL.sh

So ist der sudoers Eintrag:

%users ALL=NOPASSWD: /usr/local/bin/transfertPOL.sh

nicht mit root-Berechtigungen ausführen.

Sie wollen wahrscheinlich das Skript ausführbar machen:

sudo chmod +x /usr/local/bin/transfertPOL.sh 

Und das Exec Befehl ändern:

Exec=sudo /usr/local/bin/transfertPOL.sh 

ABER: Wir haben Gruppen für die in Linux, versuchen, die richtige Einstellung Gruppenberechtigungen für die Dateien, die Sie lesen/schreiben möchten. Sie werden dann dieses Skript überhaupt nicht brauchen.