• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Script Befehle benötigen root?

Ich habe ein kleines Script zum Einschalten von Bluetooth mit folgenden Befehlen geschrieben:
Code:
`/usr/sbin/rfkill unblock bluetooth`
`/usr/sbin/hciconfig hci0 up`
Als root funktioniert das Script. Als Benutzer erhalte ich folgende Fehlermeldungen
Code:
Can't open RFKILL control device: Permission denied
Can't init device hci0: Permission denied (13)
Gibt es eine Möglichkeit das Script als Benutzer zu starten, ohne mich als root anmelden zu müssen?
Ich verwende openSuse 11.4 KDE
 
Danke für die schnelle Antwort. Hier muss ich doch wieder das Root-Passwort eingeben, oder?
Gibt es keine Möglichkeit einfach als Benutzer das Script zu starten. Gibt es kein Verzeichnis in das man die Datei schieben kann, wodurch die script Datei autorisiert ist die zwei Befehle auszuführen? Ich glaube ich habe für ubuntu so was gefunden (/etc/network/if-up.d) - unter suse gibt es aber das Verzeichnis (bei mir) nicht. (Vielleicht liegt es daran, dass ich networkmanager verwende?)
Wäre super, wenn ich Bluetooth einfach durch Anklicken einer Verknüpfung einschalten könnte...
 

framp

Moderator
Teammitglied
Wenn Du sudo benutzt kannst Du angegebn, dass bestimmte Befehle fuer bestimmte Nutzer ohne Passwort ausgefuehrt werden koennen.
 
framp schrieb:
Wenn Du sudo benutzt kannst Du angegebn, dass bestimmte Befehle fuer bestimmte Nutzer ohne Passwort ausgefuehrt werden koennen.
Was bedeutet das für mein Skript? Muss im Skript nun der Befehl
Code:
sudo  `/usr/sbin/rfkill unblock bluetooth`
lauten? Wo muss ich nun "melden", dass rfkill kein Passwort benötigt? (Vermutlich mit visudo? aber wie :???: )
Oder muss ich das Script mit einer Verknüpfung aufrufen, bei der der Befehl
Code:
sudo bluetooth.sh
lautet?

Bei hciconfig scheint es, dass ich keinen Zugriff auf hci0 habe. Kann es sein, dass ich als normaler Benutzer keinen Zugriff auf die Geräte bekomme und das Problem gar nicht die Berechtigungen für die Befehle rfkill und hciconfig sind!?

Unter http://forum.ubuntuusers.de/topic/wlan-soll-beim-start-nicht-aktiv-sein/ (für Ubuntu!) steht, dass man das Script als root in den Ordner /etc/network/if-up.d/ verschieben soll. Gibt es nicht etwas ähnliches für openSuse?

Scheint viel schwieriger zu sein als ich mir das vorgestellt habe!!!
 
http://www.linupedia.org/opensuse/Kontrolliertes_Ausfuehren_von_Befehlen_als_root#der_Befehl_sudo
man sudoers

Aus Sicherheitsgründen solltest Du die Befehle nur samt den dazugehörigen Parametern erlauben. An Stelle von visudo kannst Du auch YaST verwenden.

veryprivat schrieb:
Gibt es kein Verzeichnis in das man die Datei schieben kann, wodurch die script Datei autorisiert ist die zwei Befehle auszuführen? Ich glaube ich habe für ubuntu so was gefunden.
Da hast Du etwas mißverstanden (es geht dort darum, beim Systemstart ein netzwerkspezifisches Skript auszuführen). Selbstverständlich gibt es das von Dir gewünschte Verzeichnis nicht.
 
Danke, für's nachsehen (wegen dem Verzeichnis) und für Deinen Tipp. Mit YAST/Sudo hat es eigentlich ganz komfortabel geklappt. Ich habe die sudo bluetooth.sh eingetragen, sodass ich jetzt als normaler Benutzer den Befehl
Code:
sudo /bin/sh /SDCard/Setup/bluetooth.sh
ohne Passworteingabe verwenden kann. Gibt es eine Möglichkeit das Script nun ganz bequem per Desktopverknüpfung starten kann? Wenn ich eine Verknüpfung mit obigem Befehl erstelle und starte erhalte ich wieder die Meldungen, die ich früher als normaler Nutzer ohne visudo Einträge erhalten habe...
 
Die Verknüpfung hat ja auch einen anderen Pfad- und Dateinamen.

Sauber solltest Du nicht das Skript berechtigen, sondern die darin enthaltenen Befehle samt Parametern.
 
VIELEN DANK FÜR DIE TIPPS! :thumbs:
Ich habe wie vorgeschlagen den notwendigen Befehl samt Parameter eingetragen. Da mein Skript die ID des Bluetooth Gerätes bestimmt kann und diese zum unblocken verwendet, kann die ID natürlich variieren. Ich habe also Befehl "/usr/sbin/rfkill" und Parameter "unblock *". (Ich hoffe das passt.)
An dieser Stelle nochmals ein herzliches DANKESCHÖN und allen EINEN GUTEN RUTSCH INS NEUE JAHR!!!
 
Oben