Kalkulator chmod
Konversi izin berkas Unix antara oktal (755), simbolik (rwxr-xr-x), dan kisi kotak centang, dengan setuid, setgid, dan sticky bit.
| Kelas | Baca | Tulis | Eksekusi |
|---|---|---|---|
| Pemilik | |||
| Grup | |||
| Lainnya |
chmod 644 filechmod u=rw,g=r,o=r file-rw-r--r--Apa yang dilakukan alat ini
Setiap berkas pada sistem Unix membawa sekumpulan izin yang memutuskan siapa yang boleh membacanya, mengubahnya, atau menjalankannya. Perintah chmod mengaturnya, dan ia menerima izin itu dalam dua ejaan yang cukup berbeda — sebuah angka oktal tiga-digit dan sebuah string huruf — yang menjelaskan hal yang persis sama. Alat ini menjaga kedua ejaan, dan sebuah kisi kotak centang, tetap seiras, jadi Anda bisa mulai dari yang mana pun yang Anda punya dan menyalin yang Anda butuhkan.
Ia berjalan sepenuhnya di browser Anda dan murni aritmetika: tak ada server, dan tak ada yang Anda ketik dikirim ke mana pun. Ia adalah sebuah kalkulator dan rujukan, bukan cara mengubah izin pada mesin nyata — untuk itu Anda menyalin perintah chmod yang dihasilkannya dan menjalankannya sendiri.
Tiga kelompok, tiga izin
Izin diatur sebagai tiga kelompok bertiga. Ketiga kelompok adalah pemilik berkas, grup yang memilikinya, dan semua orang lain — "lainnya". Dalam tiap kelompok ada tiga izin: baca, tulis, dan eksekusi.
- Baca (r) — melihat konten berkas, atau mendaftar entri sebuah direktori.
- Tulis (w) — mengubah berkas, atau menambah dan membuang entri dalam sebuah direktori.
- Eksekusi (x) — menjalankan berkas sebagai program, atau memasuki sebuah direktori dan menjangkau berkas di dalamnya.
Eksekusi berarti sesuatu yang berbeda untuk sebuah direktori daripada untuk sebuah berkas, dan itu menjebak orang: sebuah direktori yang bisa Anda baca tetapi tak eksekusi membiarkan Anda melihat nama apa yang ada di dalamnya tetapi tak membuka satu pun darinya.
Bagaimana angka oktal bekerja
Ketiga izin tiap kelompok dipak ke dalam satu digit oktal dengan menjumlahkan nilai tetap: baca adalah 4, tulis adalah 2, eksekusi adalah 1. Baca-tulis-eksekusi adalah 4+2+1 = 7; baca-eksekusi adalah 4+1 = 5; baca-tulis adalah 4+2 = 6. Tiga kelompok memberi tiga digit.
755 7 = 4+2+1 # owner: read + write + execute 5 = 4+0+1 # group: read + execute 5 = 4+0+1 # other: read + execute
Jadi 755 adalah "pemilik bisa melakukan segalanya, semua orang lain bisa membaca dan menjalankan tetapi tak mengubah", yang menjadi mode biasa untuk sebuah program atau direktori. 644 — pemilik baca-tulis, semua orang lain hanya-baca — adalah mode biasa untuk sebuah berkas biasa. Begitu polanya familiar, mode umum terbaca sekilas.
String simbolik
Ejaan lain adalah yang dicetak ls -l: sembilan karakter, tiga per kelompok, masing-masing entah hurufnya atau sebuah tanda hubung. 755 adalah rwxr-xr-x; 644 adalah rw-r--r--. Ia membawa informasi persis sama dengan angka oktal, hanya ditata sehingga Anda bisa melihat tiap izin ketimbang menjumlahkan digit di kepala Anda.
Sebaris ls -l punya karakter kesepuluh di depannya — sebuah d untuk direktori, sebuah tanda hubung untuk berkas biasa, sebuah l untuk tautan simbolik. Karakter depan itu adalah jenis berkas, bukan sebuah izin, dan chmod tak bisa mengubahnya. Anda bisa menempel seluruh bidang izin ls -l di sini dan karakter jenis cukup diabaikan.
Bit khusus: setuid, setgid, dan sticky
Di atas sembilan bit biasa duduk tiga yang khusus, ditulis sebagai sebuah digit oktal keempat opsional di depan — setuid (4), setgid (2), dan sticky bit (1). Mereka tak mendapat kolomnya sendiri; sebaliknya masing-masing membebani sebuah slot eksekusi dalam string simbolik, yang menjadi sumber huruf kapital yang orang temukan membingungkan.
- setuid pada sebuah eksekutabel membuatnya berjalan sebagai pemilik berkas ketimbang sebagai pengguna yang meluncurkannya. Beginilah passwd bisa memperbarui sebuah berkas sistem yang tak bisa Anda tulisi langsung — dan mengapa sebuah program setuid dengan bug adalah lubang serius.
- setgid pada sebuah eksekutabel menjalankannya sebagai grup berkas. Pada sebuah direktori ia melakukan sesuatu yang lebih berguna dan lebih aman: berkas baru yang dibuat di dalam mewarisi grup direktori itu ketimbang grup pembuatnya.
- Sticky bit pada sebuah direktori berarti hanya pemilik sebuah berkas yang bisa menghapus atau menamainya ulang, bahkan ketika semua orang bisa menulis ke direktori. Inilah yang menjaga /tmp bersama tetapi aman. Pada sebuah berkas polos ia tak melakukan apa pun.
Dalam string simbolik sebuah bit khusus yang terpasang mengubah slot eksekusinya menjadi sebuah huruf: s dalam slot pemilik untuk setuid, s dalam slot grup untuk setgid, t dalam slot lainnya untuk sticky. Besar-kecilnya memberi tahu Anda apakah eksekusi juga menyala — huruf kecil berarti ya, huruf besar berarti tidak.
rwsr-xr-x 4755 # setuid, owner executes rwSr-xr-x 4655 # setuid, owner does NOT execute rwxrwxrwt 1777 # sticky, other executes rwxrwxrwT 1776 # sticky, other does NOT execute
Sebuah S atau T kapital hampir selalu sebuah kesalahan: ia berarti sebuah bit khusus dipasang pada sebuah berkas yang tak dapat dieksekusi, jadi bit itu tak punya apa pun untuk bertindak.
Oktal atau simbolik pada baris perintah
chmod menerima kedua bentuk, dan alat ini menulis keduanya. Bentuk oktal mengatur setiap bit sekaligus: chmod 755 file. Bentuk = simbolik melakukan hal yang sama secara mutlak — chmod u=rwx,g=rx,o=rx file — mendaftar tiap kelompok sehingga hasilnya tak bergantung pada berkas dimulai sebagai apa.
Ada bentuk ketiga, relatif, yang tak dibutuhkan kalkulator tetapi akan Anda temui: chmod +x file menambah eksekusi untuk semua orang, chmod g-w file membuang tulis grup, chmod o= file membersihkan segalanya untuk lainnya. Bentuk itu mengubah bit relatif terhadap mode saat ini ketimbang mengatur keseluruhannya, yang praktis pada baris perintah tetapi tak punya satu "hasil" untuk ditampilkan.
Mode yang lebih baik tak diatur
Sebuah alat izin sebaiknya juga mengatakan kapan sebuah mode adalah ide buruk. Dua muncul terus-menerus:
- 777 memberi setiap pengguna baca, tulis, dan eksekusi. Ia adalah perbaikan refleks ketika sesuatu "tak mau bekerja", dan ia hampir selalu menukar masalah kecil dengan lubang keamanan nyata. Mode yang tepat hampir selalu lebih sempit — biasanya 755 atau 644.
- Berkas dapat-ditulis-siapa-saja apa pun (digit terakhir termasuk 2) membiarkan akun mana pun pada mesin menulis ulang kontennya. Untuk apa pun yang dijalankan, di-source, atau dipercaya, itu adalah sebuah jalan masuk. Beri tulis ke sebuah grup sebagai gantinya, atau jaga ke pemilik.
Alat menandai ini saat mereka terjadi. Ia tak bisa tahu apakah target Anda sebuah berkas atau direktori, jadi ia menyusunnya sebagai hal yang layak dilihat lagi ketimbang sebagai galat — sticky bit tepat pada sebuah direktori dan tak berguna pada sebuah berkas, dan hanya Anda yang tahu mana yang Anda punya.
Pertanyaan yang sering diajukan
- Apa perbedaan antara 644 dan 755?
- 644 adalah baca-tulis untuk pemilik dan hanya-baca untuk semua orang lain, mode biasa untuk sebuah berkas biasa. 755 menambah eksekusi untuk ketiga kelompok, yang menjadi kebutuhan sebuah program untuk berjalan dan sebuah direktori untuk dimasuki. Pakai 644 untuk dokumen dan berkas sumber, 755 untuk skrip dan direktori.
- Mengapa mode saya menampilkan S atau T kapital?
- Karena sebuah bit khusus dipasang pada sebuah kelompok yang tak punya izin eksekusi. Sebuah s atau t kecil berarti bit khusus dan eksekusi keduanya menyala; bentuk kapital berarti bit khusus menyala tetapi eksekusi mati, yang biasanya berarti mode bukan yang dimaksudkan — misalnya 4644 (rwSr--r--) adalah setuid pada sebuah berkas yang tak ada yang bisa mengeksekusinya.
- Apa yang sebenarnya dilakukan chmod 777, dan mengapa ia tak dianjurkan?
- Ia memberi baca, tulis, dan eksekusi kepada pemilik, grup, dan semua orang lain — akses penuh untuk setiap akun pada sistem. Ia tak dianjurkan karena ia membuang setiap perlindungan sekaligus; sebuah berkas yang siapa pun bisa menulisnya adalah berkas yang siapa pun bisa merusaknya, dan sebuah direktori yang siapa pun bisa menulisnya adalah yang siapa pun bisa menanam berkas di dalamnya. Hampir setiap kasus yang meraih 777 dipecahkan oleh 755 atau 644 ditambah kepemilikan yang tepat.
- Apakah digit depan harus ada?
- Tidak. Ketika tak ada bit khusus dipasang, mode cukup tiga digit — 755, bukan 0755 — dan itulah yang ditampilkan alat ini. Sebuah nol di depan diterima dan berarti hal yang sama; sebuah 4, 2, atau 1 di depan menyalakan setuid, setgid, atau sticky bit masing-masing.
- Bisakah saya menempel sebaris langsung dari ls -l?
- Ya. Tempel bidang izin sepuluh-karakter, seperti -rwxr-xr-x atau drwxr-xr-x, dan alat membuang karakter jenis di depan dan membaca sisanya. Jenisnya (berkas, direktori, tautan) bukan sebuah izin dan chmod tak bisa mengubahnya, jadi ia diabaikan.
- Apakah ada yang saya masukkan dikirim ke server?
- Tidak. Seluruh alat adalah aritmetika yang berjalan di browser Anda. Tidak ada yang diunggah, dicatat, atau disimpan, yang juga sebabnya ia bekerja tanpa koneksi jaringan sama sekali.