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_abc
yang 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.
Jawaban:
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;
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/passwd
file;Sistem Unix menyediakan
chroot
perintah 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
chroot
yangadeveloper
pengguna ke dalam/var/www/html/website_abc
direktori.Anda dapat mengatur direktori chroot untuk pengguna Anda untuk membatasi mereka ke subdirektori
/var/www/html/website_abc
seperti di/etc/ssh/sshd_config
;Hal ini membutuhkan openssh-server lebih dari 4,8 ?, jadi mungkin memerlukan CentOS 6.2
(tidak diuji, lihat
man sshd_config
untuk mengonfirmasi sintaks)dan kemudian menambahkan pengguna tersebut ke grup sftp;
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
sumber