Ich betreibe einen lighttpd-Server unter Debian GNU / Linux 7.5 (wheezy) und möchte eine PHP-Webseite verwenden, um die Systemzeit zu ändern (ich weiß, ich kann nur die Zeit der Seite ändern, aber das ist nicht das, was ich für dieses Projekt brauche). Im Moment verwende ich den exec()
Befehl, um Befehle direkt auszugeben und einfach ein Shell-Skript auszuführen. Also entweder:
exec('date --set [HH:MM:SS]')
oder
exec("sh /full/file/path/updateTime.sh") //contains command 'date --set [HH:MM:SS]'
Wenn ich den Benutzer in der Befehlszeile auf www-data umschalte und versuche, den Date-Befehl auszuführen, erhalte ich die Antwort "Datum: Datum kann nicht festgelegt werden: Vorgang nicht zulässig."
Das Shell-Skript wird erfolgreich ausgeführt, wenn ich es als root ausführte.
Wenn ich ein zweites Argument vorlege exec()
, um die Antwort zu speichern, enthält sie die Datums- / Uhrzeitinformationen, die ich versuche zu setzen.
Ich habe auch versucht, Sudoer zu bearbeiten
www-data ALL=(ALL:ALL) ALL
unter user privilege specification
und includedir /etc/sudoers.d
ohne Veränderung. Ich habe auch versucht, eine Cmnd-Alias-Spezifikation für /bin/date
den www-data-Benutzer zu erstellen, ohne sie zu ändern.
Ich bin mit allem, was dazu gehört, ziemlich unerfahren, also wird jede Hilfe geschätzt.
Die Site ist nicht live, aber ich bin mir der Gefahren bewusst, die mit dem Akzeptieren von Shellbefehlen von Benutzern verbunden sind. Ich habe die php.ini
Datei überprüft, um sicherzustellen, dass der exec()
Befehl nicht deaktiviert ist. Ich habe versucht, den Besitz des Shell-Skripts /var/www/
ohne Änderung an www-data zu übergeben. Die Berechtigungen sind jetzt auf 777 festgelegt.