Wie aktiviere ich die SSH-Anmeldung für den _www-Benutzer?

Um Dateien auf dem Apache-Server bereitzustellen, der auf dem OS X-Host ausgeführt wird, möchte ich mit dem _wwwBenutzer ssh/scp darauf zugreifen.

Ich möchte nicht root verwenden, weil ich sicher sein möchte, dass ich die Dateien immer mit den richtigen Berechtigungen ablege.

Das Problem ist, dass ich mich nicht anmelden kann _www. Ich habe das Passwort für das Konto geändert, aber die SSH-Anmeldung schlägt immer noch fehl, nachdem ich zweimal nach dem Passwort gefragt wurde.

Antworten (2)

Der _wwwBenutzer ist so konzipiert, dass er niemals eine Shell hat, und viele der Benutzerattribute, die zum Ausführen von ssh erforderlich sind, fehlen. Sobald Sie sich als ein anderer Admin-Benutzer angemeldet haben, können Sie einfach per Sudo zum Benutzer wechseln, _wwwum die Dateiberechtigungen korrekt zu erhalten.

mac:~ me$ dscl . -read /Users/_www
AppleMetaNodeLocation: /Local/Default
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000046
NFSHomeDirectory: /Library/WebServer
Password: *
PrimaryGroupID: 70
RealName:
 World Wide Web Server
RecordName: _www www
RecordType: dsRecTypeStandard:Users
UniqueID: 70
UserShell: /usr/bin/false

mac:~ me$ sudo -u _www -s
Password:
bash-3.2$ id
uid=70(_www) gid=70(_www) groups=70(_www),61(localaccounts),12(everyone)

Sie können mit einem echten Benutzer vergleichen, um die fehlenden Attribute zu sehen. Wenn Sie hacken wollen, könnten Sie versuchen, das NFSHomeDirectory beschreibbar zu machen und die Shell zu bearbeiten – aber das würde alle möglichen Benutzerdateien in /Library/Webserver hinterlassen – und Ihre benutzerdefinierten Mods könnten bei jedem Update gelöscht werden oder später unbeabsichtigte Effekte verursachen .

Gibt es Gründe, warum Sie nicht einfach einen Apache-Administratorbenutzer mit einer UID von weniger als 500 erstellen, damit er nicht als normaler Benutzer auf dem Anmeldebildschirm angezeigt wird ?

(oder verwenden Sie einfach einen normalen Benutzer, um sich einzuloggen, bevor Sie sudo verwenden, um zu werden _www)?

Es ist viel weniger Arbeit und sicherer. _wwwwird absichtlich in einer Sandbox platziert, um die Wahrscheinlichkeit zu verringern, dass das Surfen im Internet einem laufenden Mac schadet.

Danke für die umfangreiche Antwort. Das Problem ist, dass ich einige andere Tools für die Bereitstellung verwende und diese Tools nicht dazu in der Lage sind chown. Kennen Sie eine Problemumgehung, bei der ich nicht riskiere, den Webserver aufgrund von Dateiberechtigungen zu beschädigen?
Sie sollten in der Lage sein, den von Ihnen verwendeten Benutzer zu einer Gruppe zu machen, die für die vorhandenen Dateien geeignet ist. In welchen Verzeichnissen stellen Sie sie bereit? _wwwhat keine Probleme beim Lesen von Dateien, die root (oder einem anderen Benutzer) gehören, es ist eher ein umask/ chmod-Problem als der Besitz.
Bereitstellungssoftware, die nicht in der Lage ist chown? Wirklich? Ich denke, Sie müssen persönlich eine bessere Software finden.

Wie bereits erwähnt, können Sie nicht direkt als _www ssh, da das Passwort möglicherweise nicht festgelegt ist und die Shell möglicherweise auf /usr/bin/false.

Alternativ können Sie sich als normaler Benutzer per SSH anmelden, und wenn Ihr Benutzer über Administratorrechte verfügt, können Sie dies tun:

(me@local)$ ssh me@myserver
(me@myserver)$ sudo -u _www -s
Password: (type it in)
(_www@myserver)$ whoami
_www

Ich habe das gerade auf Mac OS X Snow Leopard und Lion gemacht. Es ist großartig, um zu überprüfen, ob die Berechtigungen korrekt eingerichtet sind.