Buat hanya pengguna jarak jauh di OS X?

15

Saya ingin membuat pengguna di OS X yang memiliki hak masuk ssh jarak jauh di mana mereka dapat mengakses folder / jalur / ke / barang / dan menambahkan / memodifikasi / menghapus file secara manual atau melalui rsync sementara sisanya dari Mac terlarang (di luar direktori home mereka).

Idealnya pengguna tidak boleh memiliki akses untuk menjalankan program lain selain rsync.

Pengguna ini hanya akan digunakan oleh server build untuk login dan menggunakan file. Saya ingin menggunakan pasangan kunci publik / pribadi sehingga skrip build tidak memerlukan input kata sandi.

Bagaimana saya bisa mencapai ini?

chrisan
sumber

Jawaban:

9

Cara terbaik untuk melakukan ini adalah membuat chroot jail bagi pengguna. Saya akan membersihkan jawabannya di sini ketika saya tiba di rumah tetapi saya memposting solusinya di blog saya.

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

Di bawah ini adalah sebagian besar instruksi dari posting di atas.

Pertama, Anda harus membuat pengguna baru di Workgroup Admin dan menetapkan mereka hak akses untuk SSH melalui Server Admin atau menugaskan mereka ke grup yang memiliki hak akses SSH. Diskusi lebih lanjut di bawah ini.

Dari Terminal, mulailah dari kanan.

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

Setiap tambahan pengguna baru yang ditambahkan kemudian akan menjadi sesuatu di sepanjang baris berikut ini.

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

Setiap folder yang harus dimiliki oleh jalur chroot jail root. Saya tidak berpikir itu penting untuk grup apa folder itu. Apa yang saya lakukan di atas adalah untuk

  1. cadangan /etc/sshd_config
  2. ubah kepemilikan direktori root menjadi root
  3. ubah izin direktori root ke 755
  4. buat folder chroot
  5. buat folder pengguna di dalam folder chroot
  6. buat folder di dalam folder pengguna yang dapat dimodifikasi pengguna
  7. atur kepemilikan dan izin

Sekarang edit /etc/sshd_configke berikut ini.

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

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

Ini menciptakan chroot jail yang ketika pengguna log in akan memasukkan mereka ke folder /chroot/user, di folder itu ada folder yang dapat mereka tambahkan /chroot/user/scratchpad.

Jika Anda ingin membuat Grup di Admin Workgroup untuk 'Pengguna Chroot' kemudian tambahkan pengguna baru yang Anda buat di Admin Workgroup ke Grup Anda tidak harus terus mengedit /etc/sshd_configfile. Daripada yang di atas, tambahkan yang berikut ini. Pastikan Anda menambahkan grup 'Pengguna Chroot' ke akses SSH ACL di Server Admin.

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

Untuk menguji apakah hal di atas berfungsi, keluarkan yang berikut dari terminal.

$ sftp [email protected]
Password:
sftp>
afragen
sumber
Hanya menyelesaikan masalah saya sendiri dan mendokumentasikan jika saya perlu melakukannya lagi. ;-)
afragen