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?
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
/etc/sshd_config
root
Nun zur Bearbeitung /etc/sshd_config
des 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/user
lä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_config
Datei 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>
abfragen