Saya baru-baru ini menginstal server Ubuntu di server saya untuk mencoba linux sebagai pengguna baru. Saya mengikuti tutorial tentang cara mengatur server web yang mengatakan saya perlu chmod 777
dir server web sehingga dapat ditulis ke dalam.
Ngomong-ngomong, saya membuat akun baru untuk satu pria untuk memungkinkannya melihat beberapa file di server yang saya tempatkan di dir rumahnya:
adduser francis
Setelah membuat akun, saya memeriksa akses apa yang dia miliki
groups francis
Bunyinya "francis: francis", jadi bukan masalah saya pikir, ubuntu belum memasukkannya ke dalam grup apa pun secara default, yang masuk akal, itu membuatnya tanpa izin tambahan dari segi keamanan, sehingga semuanya baik-baik saja dan keren. Seminggu kemudian, dalam kengerian absolut dan penuh, saya mengetahui bahwa meskipun ia tidak dapat melakukan hal-hal seperti SUDO atau mengacaukan dalam direktori sistem, ia memiliki akses penuh ke hampir semua hal lain di server. Misalnya dia memiliki akses baca / tulis penuh ke file server web saya di / var / www (dan dengan demikian kata sandi disimpan dalam file konfigurasi php dll) meskipun direktori tersebut TIDAK ada di direktori rumahnya dan saya tidak pernah menambahkannya ke dalam grup mana pun yang bisa akses direktori itu, atau saya memberinya akses khusus untuk apa pun setelah melakukan adduser.
Lagi pula, apa yang terjadi di sini? Bagaimana cara saya membunuh aksesnya ke sesuatu yang penting? Dia seharusnya tidak dapat mengakses hal-hal seperti / media atau / var / www. Saya pikir pengguna baru secara default dicegah melakukan sesuatu yang berbahaya atau mengintip di tempat yang seharusnya tidak mereka lakukan.
Jadi kesimpulannya, saya hanya perlu memberinya akses ke direktori yang saya tentukan secara manual + ke direktori yang dia perlukan agar berfungsi dengan baik (dir rumahnya, vim, nano dll.)
Terima kasih
sumber
chmod
tempat lain, Anda mungkin memiliki masalah lain.Jawaban:
Ini seperti yang dirancang. Dan lebih buruk. chmod 777 berarti ... "Saya ingin pemilik, siapa pun di grupnya, dan siapa saja yang pernah membaca, menulis, dan mengeksekusi izin"
Itu sangat mengerikan.
Dan untuk server web, 777 tidak optimal. 755 (Pemilik memiliki grup izin penuh dan orang lain telah membaca + mengeksekusi) adalah standar umum tetapi dari apa yang Anda katakan Anda ingin setidaknya baca-tulis, atau eksekusi baca-tulis untuk pemilik (pengguna server web), dan mungkin grup, dan tidak ada izin untuk pengguna. Ada pertanyaan yang lebih lengkap tentang tingkat izin yang sesuai pada serverfault tetapi pertimbangkan sesuatu seperti 640 atau 740.
yang mengatakan, Anda juga bisa menempatkan pengguna di dunianya sendiri - mengatur chroot untuk menjaga pengguna di ruangnya sendiri dalam sistem. Ada panduan yang beredar untuk melakukan ini - misalnya jawaban oli yang sangat baik di sini yang mungkin menjadi pilihan tergantung pada kebutuhan Anda.
sumber
Pada dasarnya, itu rusak seperti ini:
Jadi, izin baca hanya akan menjadi 4, baca dan tulis akan menjadi 6, baca dan eksekusi akan menjadi 5, dan semua (baca, tulis, eksekusi) adalah 7. Ini adalah bagaimana Anda menghitung nilai oktet izin untuk pemilik, grup pemilik , atau semua orang.
Saat menerapkan izin tersebut
chmod
ke lokasi file atau direktori, angka yang dihitung di atas diterapkan seperti ini, dengan masing-masing oktet untuk pemilik, grup, dan semua orang:Jadi jika saya ingin memberi diri saya dan grup saya baca, tulis, dan jalankan izin ke folder yang saya miliki, tetapi saya tidak ingin semua orang bisa membacanya, saya akan menggunakan:
Untuk informasi lebih lanjut, periksa halaman manual untuk chmod :
sumber
chmod ugo+rwx <...>
. Karakternya adalah untuk Anda , g roup, atau lainnya ; r benar menyebalkan, w ritus, e x ecute. Anda dapat menggunakan '-' untuk menghapus (misalnya:)chmod go-wx <...>
. Perhatikan bahwa ini hanya menambah atau menghapus apa yang Anda ketik.chmod ugo+rwx <file>; chmod u+rwx <file>
tidak menghapus akses untuk grup / lainnya.chmod 777
terjadi, jadi di situlah saya mengarahkan penjelasan saya.Seperti yang telah disebutkan orang lain, Anda seharusnya tidak memiliki izin untuk 777
Berikut lembar referensi bermanfaat yang saya gunakan.
sumber
Untuk berbagi file dengan orang yang Anda beri info masuk, Anda tidak perlu melakukan apa pun secara khusus. Pada instalasi Debian default, pengguna memiliki akses ke direktori home masing-masing.
Contohnya,
Izin pada direktori rumah saya dibaca (r) dan akses (x) untuk setiap pengguna di sistem saya. Hanya Aku juga harus menulis (w) akses.
Selain itu, default
umask
pada Ubuntu adalah sedemikian rupa sehingga file dan direktori yang dibuat pengguna dapat dibaca dunia secara default . Anda dapat mengaturumask
untuk077
jika Anda tidak menginginkannya.Apa artinya ini dalam pengaturan default, jika pengguna
you
ingin berbagi dokumen~/README.txt
dengan saya, maka tidak ada yangyou
perlu dilakukan. Saya cukup melihatnya:Saya tidak dapat mengedit atau menghapus file, tetapi saya dapat menyalinnya ke lokasi di mana saya memiliki izin menulis. Kemudian saya memiliki salinannya:
Ada alasan bagus mengapa sebagian besar sistem dapat dibaca dunia secara default, seperti yang telah saya jelaskan dalam jawaban lain tentang AskUbuntu . Namun, pada sistem bersama mungkin masuk akal untuk membuat direktori home tidak dapat diakses oleh non-pemilik:
... karena banyak pengguna tampaknya tidak mengetahui default - QED ;-). Akan lebih bijak untuk membuat pengguna sadar bahwa izin file tidak melindungi rahasia.
sumber
Di Ubuntu, setiap pengguna memiliki hak pengguna super yang ditambahkan dalam grup 'sudo', Silakan periksa untuk memastikan bahwa tidak ada pengguna lain yang ditambahkan dalam grup ini.
Untuk mengamankan file dan direktori Anda dari pengguna lain, Anda dapat mengatur izin seperti yang disarankan oleh Mr. Journeyman Geek dalam jawaban di atas.
Anda juga dapat menggunakan izin khusus untuk mengamankan file dan direktori Anda dari orang lain.
sumber