Nur Remote-Benutzer in OS X erstellen?

15

Ich möchte unter OS X einen Benutzer mit Remote-SSH-Anmeldeberechtigungen erstellen, mit dem er auf einen bestimmten Ordner / path / to / the / goods / zugreifen und Dateien manuell oder über rsync hinzufügen / ändern / löschen kann, während der Rest des Mac ausgeführt wird ist tabu (außerhalb ihres Heimatverzeichnisses).

Im Idealfall sollte der Benutzer keinen Zugriff auf andere Programme als rsync haben.

Dieser Benutzer wird nur von einem Build-Server zum Anmelden und Bereitstellen von Dateien verwendet. Ich möchte ein öffentliches / privates Schlüsselpaar verwenden, damit das Erstellungsskript keine Kennworteingabe erfordert.

Wie kann ich das erreichen?

chrisan
quelle

Antworten:

8

Der beste Weg, dies zu tun, besteht darin, ein Chroot-Gefängnis für den Benutzer zu erstellen. Ich werde die Antwort hier bereinigen, wenn ich nach Hause komme, aber ich habe die Lösung auf meinem Blog veröffentlicht.

https://thefragens.com/chrootd-sftp-on-mac-os-x-server/

Unten finden Sie die meisten Anweisungen aus dem obigen Beitrag.

Zunächst sollten Sie den neuen Benutzer in Workgroup Admin erstellen und ihm entweder über Server Admin Zugriffsrechte für SSH zuweisen oder ihn einer Gruppe mit SSH-Zugriffsrechten zuweisen. Weitere Diskussion ist unten.

Beginnen Sie vom Terminal aus rechts.

sudo cp /etc/sshd_config /etc/sshd_config.bkup

sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot

Jeder weitere hinzugefügte Benutzer entspricht dann etwa den folgenden Regeln.

sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2

Jedem Ordner muss der Pfad zum Chroot-Gefängnis gehören root. Ich denke nicht, dass es wichtig ist, in welcher Gruppe sich der Ordner befindet

  1. Sicherung /etc/sshd_config
  2. Ändern Sie den Besitz des Stammverzeichnisses in root
  3. Ändern Sie die Berechtigungen des Stammverzeichnisses in 755
  4. Erstellen Sie einen Chroot-Ordner
  5. Erstellen Sie einen Benutzerordner im Chroot-Ordner
  6. Erstellen Sie einen Ordner in dem Benutzerordner, den der Benutzer ändern kann
  7. Festlegen von Eigentumsrechten und Berechtigungen

Nun zur Bearbeitung /etc/sshd_configauf folgendes.

#Subsystem  sftp    /usr/libexec/sftp-server
Subsystem   sftp    internal-sftp

Match User user
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/user

Dadurch wird ein Chroot-Gefängnis erstellt, in dem der Benutzer, wenn er sich anmeldet, diese in den Ordner ablegt /chroot/user. In diesem Ordner befindet sich ein Ordner, dem er Dinge hinzufügen kann /chroot/user/scratchpad.

Wenn Sie in Workgroup Admin eine Gruppe für "Chroot Users" erstellen möchten, fügen Sie die neuen Benutzer, die Sie in Workgroup Admin erstellt haben, der Gruppe hinzu, damit Sie die /etc/sshd_configDatei nicht weiter bearbeiten müssen . Fügen Sie stattdessen Folgendes hinzu. Stellen Sie sicher, dass Sie der SSH-Zugriffs-ACL in Server Admin die Gruppe "Chroot Users" hinzufügen.

Match Group chrootusers
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/%u

Um zu testen, ob das oben genannte funktioniert, geben Sie Folgendes vom Terminal aus.

$ sftp [email protected]
Password:
sftp>
afragen
quelle
Nur meine eigenen Probleme lösen und dokumentieren, falls ich es noch einmal tun muss. ;-)
afragen