Bagaimana cara menambahkan pengguna dengan akses SFTP / FTP ke folder '/ var / www / html / website_abc' di Amazon EC2 Centos?

19

Kemungkinan Duplikat:
izin direktori Linux

Saya bekerja dengan beberapa pengembang pihak ketiga dan saya ingin memberikan SFTP (atau FTP) akses ke folder root untuk situs web yang mereka kerjakan yaitu '/var/www/html/website_abc'sehingga mereka dapat mengunggah file di sana. Perhatikan bahwa saya hosting situs web saya yang lain di sana pada contoh EC2 yang sama misalnya '/var/www/html/website_xyz'.

Hanya untuk menekankan bahwa saya bekerja dengan banyak situs web pada 1 contoh EC2 tunggal, struktur situs web adalah sebagai berikut:

/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz

Tujuan saya adalah sebagai berikut:

  • Pengguna 'adeveloper' memiliki akses ke '/ var / www / html / website_abc' dan hanya '/ var / www / html / website_abc'
    • Saya kira pengguna 'adeveloper' akan menggunakan 'adeveloper @ [my elastic IP]' sebagai nama pengguna untuk masuk ke SFTP (atau FTP), apakah saya benar?
  • Pengguna 'adeveloper' tidak memiliki akses ke '/ var / www / html /' atau direktori lain dalam instance EC2 saya
  • Bagaimana dengan file kunci pribadi?
    • Apakah saya meneruskan file kunci pribadi saya ke pengembang pihak ketiga - apakah disarankan untuk melakukannya?
    • Apakah ada cara untuk menghasilkan file kunci pribadi yang berbeda untuk mereka atau mengizinkan mereka untuk masuk dengan nama pengguna & kata sandi?

Saya telah melakukan pencarian tetapi kebanyakan orang berbicara tentang cara mengakses EC2 melalui SFTP yang saya sudah dapat menggunakan WinSCP.

Klarifikasi:

  • Saya akan membutuhkan 'adeveloper' untuk dapat mengunggah barang /var/www/html/website_abcyang merupakan izin 'tulis'
  • Saya akan membutuhkan 'adeveloper' untuk tidak memiliki izin 'tulis' untuk semua file / direktori di bawah /var/www/html/, dan idealnya bahkan tidak 'membaca' izin
  • Namun, tampaknya ada masalah besar di sini:
    • /var/www/html/sudah memiliki izin 777 karena ini adalah folder DocumentRoot saya. Jadi, bagaimana saya menghentikan 'adeveloper' mengakses situs web saya yang lain?

Sebagian terpecahkan saya berhasil mencapai tujuan saya menggunakan OpenSSH (saya membuat folder .ssh di dalam / var / www / html / website_abc / dan menghasilkan kunci pribadi dan memberikannya kepada pengembang pihak ketiga). Saya juga belajar bahwa saya seharusnya tidak pernah memberikan file kunci pribadi yang diberikan AWS kepada saya. Masih belajar tentang chroot.

ericn
sumber
1
Maafkan saya @lain tapi Anda pasti salah paham. Saya kira Anda bisa menghabiskan waktu melakukan sesuatu yang lebih bermakna daripada memberikan penilaian palsu seperti ini. Mungkin jika Anda membaca pertanyaan saya dengan hati-hati, Anda akan benar-benar lebih berkaitan dengan SSH / SFTP daripada izin file / folder Linux atau lebih tepatnya itu adalah kebingungan antara terlalu (mengapa saya bingung? Saya tidak tahu, itu sebabnya Saya butuh bantuan). Ini bukan duplikat dari utas lainnya seperti yang Anda anggap. Bagaimanapun, saya berhasil mencapai tujuan saya menggunakan OpenSSH. Saya masih belajar tentang chroot seperti yang disarankan oleh Tom H dan beberapa hasil pencarian. Terima kasih
ericn
"Saya juga belajar bahwa saya seharusnya tidak pernah memberikan file kunci pribadi yang diberikan AWS kepada saya" Kenapa .....
Michael Bailey

Jawaban:

11

Dengan layanan default yang menyediakan shell jarak jauh, seperti ssh atau telnet, atau sesi remote interaktif untuk perintah seperti sftp, memungkinkan pengguna lokal untuk mengubah ke direktori mana pun mereka memiliki izin, dan mengambil salinan file apa pun yang mereka akses.

Sebagai konfigurasi keamanan umum ini sangat disayangkan karena ada banyak file dan direktori yang dapat dibaca di seluruh dunia. Sebagai contoh di sini adalah saya pengguna non-root pada beberapa kotak CentOS jarak jauh;

$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...

misalnya saya dapat mengakses banyak hal, yang idealnya Anda ingin batasi dari beberapa pengguna yang tidak dikenal yang ingin Anda berikan akses lokal.

Di sini saya melihat semua pengguna lokal yang dikonfigurasi dalam /etc/passwdfile;

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

Sistem Unix menyediakan chrootperintah yang memungkinkan Anda untuk mengatur ulang /pengguna ke beberapa direktori dalam hierarki sistem file, di mana mereka tidak dapat mengakses file dan direktori "yang lebih tinggi".

Namun dalam kasus Anda, sebaiknya sediakan chroot virtual yang diterapkan oleh layanan shell jarak jauh. sftp dapat dengan mudah dikonfigurasikan untuk membatasi pengguna lokal ke bagian tertentu dari sistem file menggunakan konfigurasi di

maka dalam kasus Anda, Anda ingin chrootyang adeveloperpengguna ke dalam /var/www/html/website_abcdirektori.

Anda dapat mengatur direktori chroot untuk pengguna Anda untuk membatasi mereka ke subdirektori /var/www/html/website_abcseperti di /etc/ssh/sshd_config;

Hal ini membutuhkan openssh-server lebih dari 4,8 ?, jadi mungkin memerlukan CentOS 6.2

Match Group sftp
    ChrootDirectory %h
    AllowTcpForwarding no

(tidak diuji, lihat man sshd_configuntuk mengonfirmasi sintaks)

dan kemudian menambahkan pengguna tersebut ke grup sftp;

 groupadd sftp
 usermod -d /var/www/html/website_abc adeveloper
 usermod -G sftp adeveloper

Mengenai kunci yang dibagikan

Anda harus membuat keypair tambahan untuk pengguna adeveloper, dan mengirimkannya ke konsultan Anda. (atau alternatif, mereka mengirim Anda kunci publik mereka dan menambahkannya ke authorized_keys file untuk adeveloper)

jangan pernah menyerah kunci pribadi Anda, itu sebabnya ini disebut pribadi ;-)

alternatif ftp tradisional

vsftp / proftp dll juga mendukung konfigurasi chroot, tetapi di zaman modern ini konfigurasi berbasis ssh adalah cara normal, dan dukungan untuk ftp hanya bersifat historis.

ada beberapa tautan ke tutorial di sini;
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny

Tom H
sumber
Saya belum bisa menemukan chroot sejauh ini, tetapi saya masih dalam pembelajaran dan belum menyerah. Saya berhasil mencapai tujuan saya yang disebutkan di atas menggunakan OpenSSH. Terima kasih lagi
ericn