Siapa "orang lain", jika kita memberikan semua pengguna layanan di server kita, "orang lain" tidak ada, kan? Sebagai contoh, jika kita meletakkan Apache ke pengguna, dan kita menetapkan hak /var/www
miliknya apache
, dan kita memasukkannya chmod 700
harus bekerja, bukan?
Begini cara izin bekerja, dijelaskan dengan cara yang sangat singkat:
The digit pertama adalah bagi pemilik yang sebenarnya dari sebuah file (lihat siapa yang memiliki file dengan ls -l
dan memodifikasinya dengan chown
)
The digit kedua adalah untuk kelompok file (meskipun pemilik file tidak harus selalu berada dalam kelompok yang sama yang memiliki file)
The digit ketiga adalah orang lain, berarti tidak pemilik file dan setiap orang tidak dalam kelompok.
Jadi, jika Anda chmod
memiliki file hingga 700 dan dimiliki oleh apache
, bahkan pengguna "normal" Anda tidak akan dapat membaca, menulis, atau menjalankannya. Ini sangat membatasi dan hanya diperlukan dalam kesempatan yang jarang - misalnya, ketika Anda ingin mengamankan kunci pribadi SSH Anda, itu mendapat 600
izin. Untuk Apache, ini bahkan dapat mengakibatkan masalah lain, terlepas dari kenyataan bahwa dengan akun pengguna normal Anda, Anda tidak akan dapat mengedit file /var/www
lagi.
Jadi, secara umum, Anda tidak perlu menghapus izin baca ( x00
) untuk orang lain.
Anda dapat membiarkan apache
memiliki /var/www
direktori, tetapi dengan 644
(read-only untuk orang lain) mungkin. Pendekatan lain yang sering saya gunakan adalah menambahkan pengguna Anda sendiri dan pengguna Apache ke www-users
grup baru , dan kemudian chmodding file /var/www
ke 775
. Dengan cara ini, Anda dan Apache dapat menulis ke file. Lihat di sini untuk info lebih lanjut: Izin grup untuk apache
Apa perbedaan antara "eksekusi" dan "baca"?
File yang dapat dieksekusi dapat dijalankan langsung oleh pengguna - langsung dari shell. Untuk mendemonstrasikan ini, mari kita menulis file pendek dan menyebutnya "test". Tambahkan konten berikut:
echo "I am executable"
Simpan file. Sekarang, di shell Anda, coba masuk ./test
. Anda akan mendapatkan kesalahan " -bash: ./test: Izin ditolak ". Ini karena secara default, file yang baru dibuat tidak membawa izin eksekusi. Jika Anda menambahkan izin eksekusi, itu akan berhasil.
$ chmod +x test
$ ./test
I am executable
Sekarang, ini hanyalah skrip pengujian, tetapi biasanya, semua file biner (seperti program yang dikompilasi) juga memerlukan set izin eksekusi, sehingga Anda dapat benar-benar menjalankan dan melakukan sesuatu dengannya, dan tidak hanya membaca.
Ini misalnya, program sistem yang kebanyakan ditemukan di /bin
. Jalankan ls -l /bin
untuk memeriksa izin mereka. Seperti yang Anda lihat, mereka dimiliki oleh root
, dan Anda tidak dapat mengubahnya, tetapi Anda selalu dapat menjalankannya.
Jadi, ini juga merupakan fitur keamanan, karena Anda dapat membatasi eksekusi skrip dan binari tertentu untuk beberapa pengguna.
Untuk mempelajari lebih lanjut tentang izin Unix, baca artikel Wikipedia . Izin dasar yang Anda kenal sebagai "baca-tulis-jalankan" telah ada sejak lama, tetapi hanya bagian dari apa yang Anda sebut Daftar Kontrol Akses - yang menawarkan fungsionalitas jauh lebih dari ini.
Apa izin file default untuk seluruh sistem setelah instalasi bersih (mis. Di Ubuntu)?
Mereka bervariasi berdasarkan direktori dan pemilik. Beberapa file dan direktori dilindungi oleh sistem dan dimiliki oleh root
. Namun, dalam kebanyakan kasus, Anda dapat membacanya dengan akun pengguna normal Anda.
Direktori lain seperti folder rumah Anda jelas milik pengguna Anda. Masuk akal untuk menolak izin baca untuk pengguna lain di mesin jika itu dibagikan di antara banyak orang - lagipula, Anda tidak ingin barang pribadi Anda terbuka.
Akhirnya, beberapa file dapat dieksekusi secara default (misalnya dalam /bin
), tetapi yang lain tidak (misalnya file konfigurasi dalam /etc
).
The Filesystem Hierarchy Standard menentukan penggunaan ditujukan untuk direktori ditemukan dalam sistem Linux. Anda hampir dapat "menebak" izin apa yang harus didasarkan pada apa yang ingin Anda lakukan dengan direktori.