Linux tentu saja adalah sistem multi-pengguna, sehingga perlu untuk menyediakan sistem izin untuk mengontrol set operasi terotorisasi pada berkas dan direktori, yang mencakup semua sumber daya sistem dan perangkat (pada sebuah sistem Unix, setiap perangkat diwakili oleh sebuah berkas atau direktori). Prinsip ini umum untuk semua sistem Unix, tetapi pengingat selalu berguna, terutama karena ada beberapa penggunaan tingkat lanjut yang menarik dan relatif tidak dikenal.
Setiap berkas atau direktori memiliki izin khusus untuk tiga kategori pengguna:
pemiliknya (dilambangkan oleh u
seperti "user/pengguna");
grup pemilik (dilambangkan oleh g
dalam "grup"), yang mewakili semua anggota kelompok;
yang lain (dilambangkan oleh o
seperti "other/yang lain").
Tiga jenis hak dapat digabungkan:
membaca (symbolized oleh r
seperti "read/baca");
menulis (atau memodifikasi, dilambangkan oleh w
seperti "write/menulis");
mengeksekusi (dilambangkan oleh x
seperti "eXecute/menjalankan").
Dalam kasus berkas, hak-hak ini yang mudah dipahami: akses baca memungkinkan membaca konten (termasuk menyalin), akses menulis memungkinkan mengubah, dan akses mengeksekusi memungkinkan Anda untuk menjalankannya (yang hanya akan bekerja jika itu adalah sebuah program).
Direktori ditangani secara berbeda. Akses baca memberikan hak untuk berkonsultasi ke daftar entri (berkas dan direktori), akses tulis mengizinkan membuat atau menghapus berkas, dan akses mengeksekusi memungkinkan melintasinya (terutama untuk pergi ke sana dengan perintah cd
). Mampu untuk melintasi sebuah direktori tanpa bisa membacanya memberikan izin untuk mengakses entri di dalamnya yang dikenal dengan nama, tetapi tidak untuk menemukan mereka jika Anda tidak tahu keberadaan mereka atau nama yang tepat.
Tiga perintah mengontrol izin yang terkait dengan berkas:
chown pengguna berkas
mengubah pemilik berkas;
chgrp grup berkas
mengubah kelompok pemilik;
chmod hak berkas
mengubah izin untuk berkas.
Ada dua cara untuk menyajikan hak. Di antara mereka, representasi simbolik adalah mungkin yang paling mudah untuk dipahami dan diingat. Ini melibatkan huruf simbol yang disebutkan di atas. Anda bisa mendefinisikan hak untuk setiap kategori pengguna (u
g
/o
), dengan menetapkan mereka secara eksplisit (dengan =
), dengan menambahkan (+
), atau mengurangi (-
). Dengan demikian rumus u=rwx,g+rw,o-r
memberikan pemilik hak baca, tulis, dan eksekusi, menambahkan hak baca dan tulis untuk pemilik grup, dan menghilangkan hak-hak baca untuk pengguna lain. Hak-hak yang tidak diubah oleh penambahan atau pengurangan dalam perintah tersebut tetap tak berubah. Huruf a
, untuk "all/semua", mencakup semua kategori pengguna, sehingga a=rx
menghibahkan ke ketiga kategori hak yang sama (membaca dan mengeksekusi, tapi tidak menulis).
Representasi numerik (oktal) mengasosiasikan hak masing-masing dengan suatu nilai: 4 untuk baca, 2 untuk tulis, dan 1 untuk eksekusi. Kita menghubungkan setiap kombinasi hak dengan menjumlah angka-angka. Setiap nilai kemudian ditugaskan untuk berbagai kategori pengguna dengan meletakkan mereka dalam urutan biasa (pemilik, kelompok, lain-lain).
Misalnya, perintah chmod 754berkas
akan menetapkan hak-hak berikut: baca, tulis dan, jalankan untuk pemilik (karena 7 = 4 + 2 + 1); baca dan jalankan untuk group (karena 5 = 4 + 1); hanya-baca untuk orang lain. 0
berarti tidak ada hak; dengan demikian chmod 600berkas
memungkinkan hak baca/tulis untuk pemilik, dan tidak ada hak untuk orang lain. Kombinasi tepat yang paling sering adalah 755
untuk berkas yang dapat dieksekusi dan direktori, dan 644
untuk berkas data.
Untuk mewakili hak khusus, Anda dapat memberi awalan digit keempat ke nomor ini sesuai dengan prinsip yang sama, dengan bit setuid
, setgid
, dan sticky
masing-masing adalah 4, 2, dan 1. chmod 4754
akan mengasosiasikan bit setuid
dengan hak-hak yang dijelaskan sebelumnya.
Perhatikan bahwa penggunaan notasi oktal hanya memungkinkan untuk mengatur semua hak sekaligus pada berkas; Anda tidak dapat menggunakannya untuk menambahkan hak baru, seperti akses baca untuk pemilik grup, karena Anda harus memperhitungkan hak-hak yang ada dan menghitung nilai numerik baru yang sesuai.