Apache-Problem nach OS X-Update

Estournel

Estournel

Aktives Mitglied
Thread Starter
Dabei seit
10.01.2011
Beiträge
103
Reaktionspunkte
4
Ich habe auf meinem MacBook Air unter OS X 10.8.2 den Apache-Webserver 2.4.3 nach dem üblichen Verfahren installiert:

Code:
./configure --prefix /Applications/Apache --enable-so
make
sudo make install

ohne wirklich jemals zu verstehen, was davon alles bewerkstelligt wird. Aber es hat bislang immer funktioniert. Nach der Anpassung der httpd.conf hat der localhost auch wochenlang problemlos meine CGI-Scripte zur Ausführung gebracht.

Vor knapp einer Woche gab es nun einen OS X-Software-Update, den ich wie üblich sofort durchgeführt habe. Danach lief noch alles wie gewohnt und ohne Probleme weiter.

Nach einem Neustart, den ich heute durchgeführt habe, läuft vieles nicht mehr bzw. schief. Mein UNIX-Wissen ist leider nur rudimentär, aber eben auch nicht Null. Zum Verstehen der folgenden Fehlermeldung reicht es jedenfalls nicht aus:

Wenn ich den Apache starte, meldet er folgendes:

Code:
/Volumes/cgi-bin:thomas: sudo /Applications/Apache/bin/apachectl start
sudo: /private/etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting

Versuche ich die Dateirechte so zu vergeben, how they should be, passiert folgendes:

Code:
/Volumes/cgi-bin:thomas: chmod 0440 /private/etc/sudoers
chmod: Unable to change file mode on /private/etc/sudoers: Operation not permitted
/Volumes/cgi-bin:thomas: sudo chmod 0440 /private/etc/sudoers
sudo: /private/etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting

Tja, und hier hört mein UNIX-Wissen leider schon auf. Weiß jemand weiter?
 
Problem ist nicht Apache, sondern sudo. Versuchmal ob eine Reperatur der Zugriffsrechte (Festplattendienstprogramm) das schon löst, ansonsten musst du die Rechte per Hand korrigieren.
 
Problem ist nicht Apache, sondern sudo. Versuchmal ob eine Reperatur der Zugriffsrechte (Festplattendienstprogramm) das schon löst ...

Habe ich gemacht, ändert aber nichts.

... ansonsten musst du die Rechte per Hand korrigieren.

Meinst Du mit "per Hand" dieses, was leider auch nicht geht:

Code:
/Volumes/cgi-bin:thomas: chmod 0440 /private/etc/sudoers
chmod: Unable to change file mode on /private/etc/sudoers: Operation not permitted

/Volumes/cgi-bin:thomas: sudo chmod 0440 /private/etc/sudoers
sudo: /private/etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting
 
da sudo ja nicht geht, musst du wohl auf den single user mode mit cmd+s ausweichen.

warum installierst du apache denn nach /Applications statt nach /usr/local?
und was brauchst du in einer neueren version, was der schon von apple vorhandene nicht kann?
 
warum installierst du apache denn nach /Applications statt nach /usr/local?

Weil ich's nicht besser wußte. Warum sollte man Apache besser nach /usr/local statt nach /Applications installieren?

und was brauchst du in einer neueren version, was der schon von apple vorhandene nicht kann?

Auf meinem MacBook Pro zu Hause verwende ich seit einer Diskussion mit Dir (https://www.macuser.de/forum/f25/apache-webserver-mountain-664159/) den vorinstallierten Apache ohne Probleme. Jetzt bin ich aber mit meinem MacBook Air auf einer Reise, und auf dem hatte ich den vorinstallierten Apache vor längerer Zeit runter geschmissen (frag nicht warum, ist nun mal so) und auf ihm ist nur der selbst installierte Apache 2.4.3 vorhanden. Mit dem muß ich jetzt die nächste Zeit klar kommen.

da sudo ja nicht geht, musst du wohl auf den single user mode mit cmd+s ausweichen

Ich weiche ungern von einer Sache wie "sudo" ab, nur weil ich nicht verstehe warum sie nicht "geht", auf eine wie den "single user mode", von dem ich noch nichts gehört habe und dementsprechend auch nicht weiß wie ich mit ihm weiter käme. Was sollte ich denn im "single user mode" tun?
 
und was brauchst du in einer neueren version, was der schon von apple vorhandene nicht kann?

Weißt Du wie ich von unterwegs den vorinstallierten Apache, den ich dummerweise runter geschmissen habe, wieder auf meinen MacBook Air kriegen könnte ohne OS X komplett neu zu installieren?
 
Evtl. bekommst Du den Apache zurück wenn Du Dir das Kombinierte OS X Mountain Lion Update v10.8.2 installierst, das könnte uns vielleicht oneOeight bestätigen.

Die Rechte für das sudoers file solltest Du zurückbekommen in dem Du im Festplattendienstprogramm die Rechte reparierst. Wenn das nicht hilft bleibt in der Richtung nur der erwähnte single-user mode:

Starte Deinen Rechner per command+s und gib danach folgendes ein.
Code:
mount -uw /
chmod 440 /private/etc/sudoers
exit

Wenn unterwegs alle Stricke reissen hol Dir das Paket Mamp, das sollte alles enthalten was Du zum entwickeln brauchst und reparier den Rest zu Hause in Ruhe.

//doger
 
Danke doger für die Kommandofolge mount, chmod, exit. Jetzt läufts wieder.

Wenn das nicht hilft bleibt in der Richtung nur der erwähnte single-user mode:

Ich wußte ja gar nicht, was ich im single user mode machen sollte. Ich habe es zuvor noch nicht erlebt, daß etwas nicht läuft, wenn z.B. für eine Datei wie sudoers "zu viele" Rechte (777) vergeben wurden und daß es erst mit eingeschränkten Rechten (440) läuft. Jetzt weiß ich es zwar, aber leider wieder einmal nicht warum.
 
chmod kommt aus der Unix Welt und regelt wer wie auf bestimmte Dateien zugreifen darf, siehe hierzu Wikipedia oder auch chmod(1) OS X Manual Page.

440 oder eigentlich 0440 bedeutet das auf diese Datei nur von einem bestimmten Benutzer oder Mitgliedern einer bestimmten Gruppe zugegriffen werden darf.

Im Deinem Fall von root und der Gruppe wheel

//doger
 
Weißt Du wie ich von unterwegs den vorinstallierten Apache, den ich dummerweise runter geschmissen habe, wieder auf meinen MacBook Air kriegen könnte ohne OS X komplett neu zu installieren?
Es ist mir rätselhaft wie Du den runter geschmissen hast.
 
.. 440 oder eigentlich 0440 bedeutet das auf diese Datei nur von einem bestimmten Benutzer oder Mitgliedern einer bestimmten Gruppe zugegriffen werden darf.

Soweit ist mir das schon klar, aber vor der Änderung der Zugriffsrechte im single user mode auf 440 hatte die Datei sudoers ja 777, also keine Beschränkung. Mich wundert, daß es eine Fehlermeldung gibt wenn man ein Kommando mit sudo ... ausführt obwohl - oder besser gesagt weil ! - alle Welt alle Zugriffsrechte auf sudoers hat.

Wenn man ein Kommando mit sudo ausführen will, fordert der Befehlsinterpreter die Eingabe eines Paßwortes. Nachdem man es angegeben hat, guckt der Befehlsinterpreter offenbar in der Datei sudoers nach, ob das Paßwort zu einem der dort angegebenen Benutzer paßt und führt es ggfs. aus. Es ist natürlich fahrlässig, die Zugriffsrechte auf sudoers mit 777 überhaupt nicht einzuschränken, weil dann ein Bösewicht seinen Namen in die Datei eintragen könnte, obwohl er eigentlich keine Administrator-Rechte hat - eine klaffende Sicherheitslücke. Mit dem vi habe ich mir sudoers mal genauer angesehen und einen boesewicht dazu erfunden:

Code:
# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL
%boesewicht  ALL=(ALL) ALL

Jetzt wo mir kleckerweise die Zusammenhänge klarer werden frage ich mich natürlich, wo kam denn die Sicherheitslücke auf einmal - nach dem OS X-Software Update ! - her? Ein Update darf doch auf keinen Fall dazu führen, daß eine so sicherheitsrelevante Datei wie sudoers mit 777 der ganzen Welt preisgegeben wird. Ich verstehe auch nicht, daß die Reparatur der Zugriffsrechte, die ich mit dem Festplatten-Dienstprogramm durchgeführt hatte, ausgerechnet die Zugriffsrechte für sudoers nicht korrigiert hat.

Jetzt kann ich zwar den Apache wieder mit

Code:
sudo /Applications/Apache/bin/apachectl start

wieder starten und verwenden, aber eine große Unsicherheit bleibt. Wenn "irgendwoher" (evtl. OS X-Software Update) die Zugriffsrechte für sudoers von 440 auf 777 geändert wurden (und warum überhaupt !?!), was wurde dann ohne mein Wissen vielleicht noch alles geändert?
 
Es ist mir rätselhaft wie Du den runter geschmissen hast.

Auch auf die Gefahr hin daß ich mich jetzt total lächerlich mache, so habe ich ihn runter geschmissen:

Code:
sudo rm /usr/sbin/apachectl
sudo rm /usr/sbin/htcacheclean
sudo rm /usr/sbin/htdbm
sudo rm /usr/sbin/htdigset
sudo rm /usr/sbin/htpasswd
sudo rm /usr/sbin/httpd
sudo rm /usr/sbin/httxt2dbm
sudo rm -R /etc/apache2

Vorsorglich hatte ich ja weiter oben schon erwähnt:

... hatte ich den vorinstallierten Apache vor längerer Zeit runter geschmissen (frag nicht warum, ist nun mal so) ...

Das werde ich nie wieder tun, und sobald ich wieder zu Hause bin, installiere meinen MacBook Air nochmal komplett neu und schmeiße da gar nichts mehr runter. Aber jetzt muß ich noch eine Weile mit der Baustelle leben.
 
Das ist ein Sicherheitsmechanismus. sudo läuft nicht, wenn bei sudoers world nicht wenigstens 0 ist. Gewöhnlich lässt sich so was aber recht zuverlässig mit der Rechtereparatur beheben.

Wodurch die Rechte hier jetzt konkret verändert wurde können wir nicht ermitteln. Irgend einem Installer wäre das prinzipiell möglich. Aber die Vermutung dass ein OS-Update verantwortlich sei, kann man als überaus unwahrscheinlich betrachten.
 
Bezweifle auch Stark die Schuld des OSX Updates, davon habe ich noch nie etwas gehört. Das war viel mehr irgendein Installer oder sonst ein Programm/Skript, das du ge-sudot hast und entsprechend die Rechte hatte, das zu tun.
Statt sudo (das ging ja nicht), hättest du auch su benutzen können, um die Datei zu reparieren. Im Single User Mode bist du halt direkt root, da brauchst du entsprechend dann kein sudo/su.

Wieso ist OSX installieren, um den Apache zurückzubekommen, keine Alternative für dich gewesen? Du verlierst doch keinerlei Daten etc.?
 
naja, wie du jetzt selber festgestellt hast, ist es keine gute idee systembestandteile zu löschen.
backup hattest du vorher keins gemacht? das wäre einfacher als OS X komplett neu zu installieren.

ich denke auch, dass du die sudoers irgendwann mal selbst bei deinen experimenten mit falschen rechten versehen hast.
wahrscheinlich wolltest du was darin ändern und hattest keine schreibrechte.
übrigens sollte man die sudoers auch nicht mit vi selber, sondern mit visudo bearbeiten.
da hat einen eingebauten check, ob die datei auch korrekt ist, damit nach änderungen nicht das ganze system lahm liegt...
 
< dieser Post sollte hier gar nicht sein >
 
backup hattest du vorher keins gemacht? das wäre einfacher als OS X komplett neu zu installieren.

Meinst Du den Backup beim neu Installieren, um später von der Recovery Partition installieren zu können? Ja, den habe ich gemacht, und als ich heute Nacht von der Recovery Partitiion (mit Neustart+R) neu installieren wollte, sagte man mir, daß ich noch 47 Stunden Geduld dafür haben müßte. Soviel Geduld habe selbst ich nicht und habe die ganze Chose gleich wieder abgebrochen. Zur Zeit bin ich in einer total abgelegenen Skihütte mit einem sehr langsamen WLAN.

ich denke auch, dass du die sudoers irgendwann mal selbst bei deinen experimenten mit falschen rechten versehen hast.

Ich "experimentiere" für gewöhnlich nicht; bin ja froh wenn's läuft und ich mit meinen Sachen weiter komme und bin so vorsichtig wie ein Elefant im UNIX-Laden. Aus gutem Grund!

Bezweifle auch Stark die Schuld des OSX Updates, davon habe ich noch nie etwas gehört. Das war viel mehr irgendein Installer oder sonst ein Programm/Skript, das du ge-sudot hast und entsprechend die Rechte hatte, das zu tun.

Das sehe ich auch so. Der OSX-Update war nur das einzig Neue, woran ich mich während der letzten Zeit erinnern konnte. Das kriegen wir auch alles nicht mehr rekonstruiert; bin da Oben schon ein bißchen eingrostet. Is ja auch egal. Ich habe wieder etwas dazu gelernt und es läuft, das ist die Hauptsache. Danke an alle, die hier mitgedacht und geschrieben haben.
 
Meinst Du den Backup beim neu Installieren, um später von der Recovery Partition installieren zu können?

ich meinte eher, bevor du den alten apachen gelöscht hast.
wenn du regelmäßig backups gemacht hast, dann könntest da auch mal nachgucken, wann sich das sudoers geändert hat...
 
Nein, komplette System-Backups habe ich bislang noch nicht gemacht. Wäre bestimmt sinnvoll, schon wegen der von Dir erwähnten Nachvollziehbarkeit.

Ich hatte mal TimeMachine aktiv, aber die ständigen Backups haben mein System fast vollständig mit sich selbst beschäftigt. Also wieder ausgeschaltet. Demnächst werde ich mal heimlich darüber nachdenken, ob ich TimeMachine nur einmal jede Nacht und auch nur die System-Dateien sichern lasse. Das ist aber alles nicht so einfach. Die TimeCapsule an meinem MacBook Pro zu Hause schalte ich mit einem Hauptschalter jeden Abend ab, um Strom zu sparen, also nix Backup. An meinen MacBook Air für unterwegs und insbesondere auf Reisen, müßte ich dann jeden Abend vor dem Schlafengehen daran denken, noch die richtige externe Festplatte dranzustöpseln und zu mounten. So viel Disziplin habe auch ich nicht, schon gar nicht in einer Skihütte, sagen wir mal nach einigen psychodelischen Getränken oder Gerauchten und von der Gesellschaft hängt die Konzentration auch noch ab und ist manchmal völlig weg. Man kann nich immer an allit denken. C'est la vie, Mondamin.
 
Zurück
Oben Unten