Einen Nur-Remote-Benutzer in OS X erstellen?

Ich möchte einen Benutzer unter OS X erstellen, der über Remote-SSH-Anmeldeberechtigungen verfügt, in denen er auf einen bestimmten Ordner /Pfad/zu/den/Waren/ zugreifen und Dateien manuell oder über rsync hinzufügen/ändern/löschen kann, während der Rest des Mac ist tabu (außerhalb ihres Home-Verzeichnisses).

Idealerweise sollte der Benutzer keinen Zugriff haben, um andere Programme als rsync auszuführen.

Dieser Benutzer wird nur von einem Build-Server verwendet, um sich anzumelden und Dateien bereitzustellen. Ich möchte ein öffentliches/privates Schlüsselpaar verwenden, damit das Build-Skript keine Passworteingabe erfordert.

Wie kann ich das erreichen?

Antworten (1)

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 in meinem Blog gepostet.

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

Nachfolgend finden Sie die meisten Anweisungen aus dem obigen Beitrag.

Zuerst sollten Sie den neuen Benutzer in Workgroup Admin erstellen und ihm entweder Zugriffsrechte für SSH über Server Admin 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 zusätzlich hinzugefügte neue Benutzer ist dann etwas in der Art des Folgenden.

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

Jeder Ordner im Pfad zum Chroot-Gefängnis muss im Besitz von sein root. Ich glaube nicht, dass es wichtig ist, in welcher Gruppe sich der Ordner befindet. Was ich oben getan habe, war

  1. Sicherung/etc/sshd_config
  2. Ändern Sie den Besitzer des Stammverzeichnisses inroot
  3. Ändern Sie die Berechtigungen des Stammverzeichnisses auf 755
  4. Erstellen Sie einen Chroot-Ordner
  5. Erstellen Sie einen Benutzerordner im Chroot-Ordner
  6. Erstellen Sie einen Ordner innerhalb des Benutzerordners, den der Benutzer ändern kann
  7. Eigentum und Berechtigungen festlegen

Nun zur Bearbeitung /etc/sshd_configdes Folgenden.

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

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

Dies erstellt ein Chroot-Gefängnis, das den Benutzer, wenn er sich anmeldet, in den Ordner fallen /chroot/userlässt, 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-Benutzer“ erstellen möchten, fügen Sie die neuen Benutzer, die Sie in Workgroup Admin erstellt haben, der Gruppe hinzu, Sie müssen die /etc/sshd_configDatei nicht weiter bearbeiten. Fügen Sie anstelle des obigen Folgendes hinzu. Stellen Sie sicher, dass Sie die Gruppe „Chroot-Benutzer“ zur ACL für den SSH-Zugriff in Server-Admin hinzufügen.

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

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

$ sftp user@domain.com
Password:
sftp>
Ich löse nur meine eigenen Probleme und dokumentiere, falls ich es noch einmal machen muss. ;-)