Utworzyć użytkownika zdalnego tylko w OS X?

15

Chciałbym utworzyć użytkownika w systemie OS X, który ma uprawnienia do zdalnego logowania ssh, w których mogą uzyskać dostęp do określonego folderu / ścieżki / do / towarów / i dodawać / modyfikować / usuwać pliki ręcznie lub przez rsync, podczas gdy reszta komputera Mac jest wyłączone (poza ich katalogiem domowym).

W idealnym przypadku użytkownik nie powinien mieć dostępu do uruchamiania innych programów niż rsync.

Ten użytkownik będzie używany przez serwer kompilacji do logowania i wdrażania plików. Chcę użyć pary kluczy publiczny / prywatny, aby skrypt kompilacji nie wymagał wprowadzania hasła.

Jak mogę to osiągnąć?

Chrisan
źródło

Odpowiedzi:

9

Najlepszym sposobem na to jest utworzenie więzienia chroot dla użytkownika. Oczyszczę tutaj odpowiedź, kiedy wrócę do domu, ale opublikowałem rozwiązanie na moim blogu.

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

Poniżej znajduje się większość instrukcji z powyższego postu.

Najpierw należy utworzyć nowego użytkownika w Administratorze grupy roboczej i albo przypisać mu uprawnienia dostępu do SSH przez administratora serwera, albo przypisać ich do grupy, która ma uprawnienia dostępu SSH. Dalsza dyskusja znajduje się poniżej.

Z terminalu zacznij od prawej.

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

Każdy dodany nowy użytkownik będzie wtedy miał następującą treść.

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

Każdy folder, do którego prowadzi ścieżka do więzienia chroot, musi być własnością root. Nie sądzę, żeby miało znaczenie, w jakiej grupie jest folder. To, co zrobiłem powyżej, było

  1. utworzyć kopię zapasową /etc/sshd_config
  2. zmień własność katalogu głównego na root
  3. zmień uprawnienia katalogu głównego na 755
  4. utwórz folder chroot
  5. utwórz folder użytkownika w folderze chroot
  6. utwórz folder w folderze użytkownika, który użytkownik może modyfikować
  7. ustawić własność i uprawnienia

Teraz przejdź do edycji /etc/sshd_config.

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

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

Tworzy to więzienie chroot, które po zalogowaniu się użytkownika upuści je w folderze /chroot/user, w tym folderze znajduje się folder, do którego mogą dodawać różne elementy /chroot/user/scratchpad.

Jeśli chcesz utworzyć grupę w Administratorze grupy roboczej dla „użytkowników Chroot”, dodaj nowych użytkowników utworzonych w Administratorze grupy roboczej do grupy, nie będziesz musiał dalej edytować /etc/sshd_configpliku. Zamiast powyższego dodaj następujące. Upewnij się, że dodałeś grupę „Chroot Users” do listy ACL dostępu SSH w Administratorze serwera.

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

Aby sprawdzić, czy powyższe działa, wydaj następujące polecenie z terminala.

$ sftp [email protected]
Password:
sftp>
afragen
źródło
Po prostu rozwiązuję własne problemy i dokumentuję na wypadek, gdyby musiałem to zrobić ponownie. ;-)
afragen