sshfs: chroot semua pengguna non-root ke direktori tertentu

8

Pada server saya memerlukan akses ssh tidak terbatas untuk root, dan dibatasi untuk semua pengguna lain.

Saya ingin membatasi semua pengguna non-root untuk:

  • tidak ada login ssh
  • hanya izinkan mount /mnt/data/menggunakansshfs

Saya melihat sshd_configmemungkinkan untuk digunakan Match User, yaitu:

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

tetapi bagaimana saya bisa mencocokkan semua pengguna kecuali root?

Martin Vegter
sumber
Saya mengirim jawaban, tetapi tidak sepenuhnya jelas bagi saya jika bagian "sumber terpercaya dan / atau resmi" merujuk pada kelayakan umum / keamanan solusi Anda atau ke pertanyaan "bagaimana cara mencocokkan root".
fra-san
@ fra-san - Saya tidak yakin apa yang Anda maksud. Apakah Anda menyiratkan bahwa sementara solusi ini berfungsi secara teknis, itu tidak aman?
Martin Vegter
Tidak, saya hanya ingin tahu apakah Anda mencari dukungan dari konfigurasi tertentu oleh penulis asli atau orang yang berwibawa lainnya. Sebenarnya, apa yang Anda lakukan disarankan dalam banyak sumber pengetahuan ( Arch Wiki menjadi salah satu contoh).
fra-san

Jawaban:

12

sshFile konfigurasi Matchive directive in mendukung negasi. Tapi sepertinya meniadakan persyaratan sshd_configagak rumit: Anda harus menulis

Match User="!root,*"

untuk memiliki arahan selanjutnya diterapkan ke semua pengguna kecuali root.

Berikut dokumentasi yang relevan: dari man sshd_config:

Match Memperkenalkan blok bersyarat.
...
Pola kecocokan dapat terdiri dari entri tunggal atau daftar yang dipisahkan koma dan dapat menggunakan wildcard dan operator negasi yang dijelaskan dalam bagian POLA dari ssh_config (5).

Dan dari man ssh_config:

POLA
Pola terdiri dari nol atau lebih karakter bukan spasi, '*' (wildcard yang cocok dengan nol atau lebih karakter), atau '?' (wildcard yang sama persis dengan satu karakter).
...
Perhatikan bahwa pertandingan yang dinegasikan tidak akan pernah menghasilkan hasil positif dengan sendirinya.
Misalnya, mencoba mencocokkan "host3" dengan daftar pola berikut akan gagal:

from="!host1,!host2"

Solusinya di sini adalah memasukkan istilah yang akan menghasilkan kecocokan positif, seperti wildcard:

from="!host1,!host2,*"

Petunjuk ditemukan di artikel ini di Red Hat Customer Portal.

fra-san
sumber