SUID funktioniert nicht mit shell-Skript
Habe ich eine kleines shell-script mit folgendem Inhalt:
cat /usr/bin/checksuid.sh
!/bin/bash
echo "Hello" > /etc/myfile.cnf
ls -l /usr/bin/checksuid.sh
-rwsr-xr-x 1 root root 56 Sep 9 12:56 /usr/bin/checksuid.sh
Habe ich auch eine Datei erstellt /etc/myfile.cnf
mit root-account und legen Sie die Berechtigungen wie folgt:
-rw-r--r-- 1 root root 6 Sep 9 12:26 /etc/myfile.cnf
Wenn ich ausführen /usr/bin/checksuid.sh
von einem nicht-root-account, bekomme ich die folgende Fehlermeldung:
/usr/bin/checksuid.sh: line 3: /etc/myfile.cnf: Permission denied
Kann jemand helfen, Sie der Grund, warum SUID funktioniert nicht?
- Es sollte auch
#!/bin/bash
als shebang-Zeile für die bash, aber vorzugsweise#!/bin/sh
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Shell-Skripts kann nicht sein, SUID. Sehen http://www.faqs.org/faqs/unix-faq/faq/part4/section-7.html
Vom http://www.tuxation.com/setuid-on-shell-scripts.html:
Einen alternativen Ansatz - wickeln Sie das Skript in etwas, das setuid, wie in diesem Beispiel c-Programm. Es gibt natürlich Unterschiede einfach den Aufruf Ihrer script-vs mit einem wrapper wie folgt aus (z.B. ignoriert exit-codes), aber dies sollte Ihnen eine Idee geben, sowieso.