kepemilikan yang buruk atau mode untuk komponen direktori chroot

57

Saya membuat pengguna MY_USER. Setel dir rumahnya ke / var / www / RESTRICTED_DIR, yang merupakan jalur yang harus dibatasi. Kemudian saya mengedit sshd_config dan mengatur:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

Kemudian saya memulai kembali ssh. Membuat pemilik MY_USER (dan pemilik grup) dari RESTRICTED_DIR, dan mengubahnya menjadi 755. Saya mendapatkan

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

Jika saya menghapus 2 baris dari sshd_config, pengguna dapat masuk dengan sukses. Tentu saja dapat mengakses semua server. Apa masalahnya? Saya bahkan mencoba chown RESTRICTED_DIR untuk me-root (ketika saya membaca di suatu tempat bahwa seseorang memecahkan masalah yang sama melakukannya). Tidak berhasil ..

MultiformeIngegno
sumber

Jawaban:

73

Dari yang manhalaman :

ChrootDirectory
Menentukan pathname dari direktori to chroot (2) hingga setelah otentikasi. Semua komponen pathname harus direktori yang dimiliki oleh root yang tidak dapat ditulis oleh pengguna atau grup lain . Setelah chroot, sshd (8) mengubah direktori kerja ke direktori home pengguna.

Tebakan saya adalah satu atau lebih direktori di jalan tidak memenuhi persyaratan tersebut (kecurigaan saya wwwdimiliki atau ditulis oleh pengguna web Anda, bukan root).
Kembali dan ikuti petunjuknya, memastikan bahwa persyaratan di atas dalam huruf miring tercetak terpenuhi.

voretaq7
sumber
Ini membuatku gila. Saya melakukan "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; "usermod -a -G root www-data". Tapi saya masih belum bisa login dengan MY_USER
MultiformeIngegno
1
Persyaratannya adalah pada Komponen Jalur ( /, /var, /var/www, dan /var/www/RESTRICTED_DIRsemua harus memenuhi persyaratan keamanan di atas). Ini adalah chroot sejati (tinjau halaman manual) - direktori home pengguna Anda harus ada di dalam chroot , sebagaimana harus /bin& semua hal lain yang diperlukan pengguna Anda ...
voretaq7
2
Baik! Terpecahkan. Saya mengatur dir chroot naik level. Lalu saya memberikan 777 perms ke chrooted_dir asli. Ini bekerja :)
MultiformeIngegno
1
Terlepas dari apa yang dikatakan halaman manual tersebut, dan bahkan dengan grup yang diatur ke 'root', saya harus menetapkan izin gw sebelum ia berfungsi (Ubuntu 14.04). Halaman manual harus mengatakan Semua komponen pathname harus direktori yang dimiliki oleh root yang tidak dapat ditulis oleh pengguna lain atau grup apa pun sudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
mmell
3
Saya tahu ini cukup lama, tetapi alih-alih memodifikasi izin untuk /var/wwwjalur secara langsung, yang mungkin memecah apache, Anda akan jauh lebih baik meletakkan direktori sftp Anda di jalur lain, kemudian menggunakan pemetaan URL di Apache untuk menunjuk ke direktori lain . Periksa dokumentasi di sini httpd.apache.org/docs/2.4/urlmapping.html di bawahFiles Outside DocumentRoot
Daniel
32

Direktori ChrootDirectory harus dimiliki oleh root dan memiliki mode 755:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

Oke, sekarang semua file yang masuk /var/www/RESTRICTED_DIRharus dimiliki oleh MY_USER, yang harus milik www-datagrup, dan memiliki mode 775 untuk memungkinkan izin grup, seperti ini:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

CATATAN: Ingat adalah praktik yang baik memungkinkan akses hanya ke folder htdocs jika Anda mengkonfigurasi apache.

J G.
sumber
3
Cukup yakin itu harus sudo usermod -a -G www-data MY_USERseperti yang seharusnya terjadi setelah grup-G
sMyles
Ini berfungsi tetapi saya tidak dapat mengunggah file baru ke direktori, saya hanya dapat memodifikasi file yang dibuat sebelumnya dengan akun root dan dengan kepemilikan pengguna.
dlopezgonzalez
3

Setelah beberapa pemecahan masalah hari ini, saya menyadari bahwa root juga harus dapat menulis ke direktori.

Berikut ini tidak berfungsi:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

Segera setelah saya memperbaikinya, chroot saya mulai berfungsi.

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
Magnus
sumber