Chmod Kalkulator
Kalkulator izin file Linux/Unix yang interaktif.
chmod 000 filename
Izin umum
Cara menggunakan
- Centang kotak untuk menetapkan izin baca, tulis, dan eksekusi untuk Pemilik, Grup, dan Lainnya.
- Atau ketik nilai numerik 3 digit langsung (mis. 755).
- Notasi simbolik dan perintah
chmoddiperbarui secara real-time. - Klik Salin perintah untuk menyalin perintah chmod lengkap.
Referensi izin
| Nomor | Izin | Simbol |
|---|---|---|
| 0 | Tanpa izin | --- |
| 1 | Eksekusi saja | --x |
| 2 | Tulis saja | -w- |
| 3 | Tulis + eksekusi | -wx |
| 4 | Baca saja | r-- |
| 5 | Baca + eksekusi | r-x |
| 6 | Baca + tulis | rw- |
| 7 | Baca + tulis + eksekusi | rwx |
Pertanyaan umum
Apa arti chmod 755?
755 berarti pemilik dapat membaca, menulis, dan mengeksekusi (7), sedangkan grup dan lainnya hanya dapat membaca dan mengeksekusi tanpa menulis (5). Ini adalah izin yang paling umum untuk folder dan skrip.
Apa perbedaan antara 644 dan 755?
644 (rw-r--r--) memungkinkan pemilik membaca/menulis dan semua orang hanya membaca · tipikal untuk file. 755 (rwxr-xr-x) menambahkan izin eksekusi · tipikal untuk folder dan skrip.
Apakah ini juga berfungsi untuk folder?
Ya. Izin numerik berfungsi dengan cara yang sama. Untuk folder, "eksekusi" berarti dapat masuk ke folder dan mengakses isinya.
Model izin Unix dalam 9 bit
Setiap file dan direktori pada sistem Unix-like membawa sebuah «mode», bilangan bulat kecil yang mencatat siapa yang dapat melakukan apa. Model ini pada dasarnya tidak berubah sejak Sixth Edition Unix (Mei 1975), dengan entri manual chmod paling awal muncul di Version 1 Unix (November 1971). Model ini mengkodekan sembilan bit izin yang disusun sebagai tiga kelompok tiga berisi read / write / execute, satu kelompok untuk pemilik file, grupnya, dan semua orang lain:
Owner Group Others
r w x r w x r w x
4 2 1 4 2 1 4 2 1
Setiap kelompok tiga bit persis satu digit oktal karena tiga bit mengkodekan 2³ = 8 nilai berbeda (0-7). Bobot 4, 2, 1 adalah 2², 2¹, 2⁰. Menambahkan kombinasi apa pun dari read (4) + write (2) + execute (1) menghasilkan delapan digit per-kelas yang mungkin tanpa tabrakan; itulah seluruh pemetaan oktal-ke-simbolik. chmod 755 oleh karena itu berarti rwx (4+2+1=7) untuk pemilik, r-x (4+1=5) untuk grup, dan r-x untuk semua orang lain.
String 10 karakter yang Anda lihat di ls -l adalah data yang sama ditambah satu kolom ekstra di depan untuk tipe file: - untuk file biasa, d untuk direktori, l untuk symlink, c untuk perangkat karakter, b untuk perangkat blok, p untuk named pipe, s untuk socket. Sembilan karakter sisanya adalah triple izin.
Notasi simbolis: chmod u+x file
Mode oktal menimpa semua sembilan bit sekaligus. Mode simbolis bersifat non-destruktif, hanya membalik bit yang Anda sebutkan. Grammarnya adalah siapa + op + izin:
- siapa:
upengguna/pemilik,ggrup,olainnya,asemua (= ugo). - op:
+menambahkan,-menghapus,=menetapkan secara tepat (dan menghapus yang lain). - izin:
r,w,x, ditambah huruf khususX(execute hanya jika target adalah direktori atau sudah dapat dieksekusi pada setidaknya satu kelas),s(setuid / setgid),t(sticky / restricted-deletion). Anda juga dapat menyalin dari kelas lain denganu,g,o: mis.,g=umenetapkan izin grup identik dengan pemilik.
Contoh berguna:
chmod u+x script.sh: tambahkan execute hanya untuk pemilik.chmod g-w shared.log: hapus write untuk grup.chmod a=rw note.txt: atur semua orang menjadi baca/tulis, hapus execute untuk semua.chmod o= secret.key: hapus semua bit untuk «others».chmod -R u+rwX,go+rX /var/www: secara rekursif memberi pemilik akses penuh dan yang lainnya baca; huruf kapitalXhanya menambahkan execute pada direktori atau file yang sudah memilikinya pada beberapa kelas, menghindari secara tidak sengaja membuat setiap file teks dapat dieksekusi.
Mode numerik bersifat eksplisit dan idempoten (chmod 755 selalu berarti sembilan bit yang sama). Mode simbolis bersifat bedah (chmod g+w hanya membalik satu bit). Skrip produksi cenderung menyukai mode numerik untuk kejelasan dalam log audit; operator yang mengetik di shell cenderung menyukai simbolis untuk penyesuaian inkremental.
Mode umum dan kegunaannya
| Mode | Simbolis | Penggunaan tipikal |
|---|---|---|
| 755 | rwxr-xr-x | Executable publik dan direktori standar, /usr/bin/*, docroot web, working tree Git |
| 644 | rw-r--r-- | File reguler standar, konfigurasi, kode sumber, dokumen |
| 700 | rwx------ | Direktori privat, ~/.ssh, dokumen pribadi yang tidak boleh dilihat orang lain |
| 600 | rw------- | File privat, ~/.ssh/id_rsa, ~/.gnupg/*, file password |
| 444 | r--r--r-- | Hanya baca untuk semua orang, data referensi tetap, indeks registri Cargo |
| 750 | rwxr-x--- | Pemilik penuh, grup baca/lintasi, yang lain tidak ada, direktori layanan bersama grup |
| 777 | rwxrwxrwx | Hampir selalu salah. Lihat di bawah. |
Mengapa chmod 777 hampir selalu salah
Menetapkan file ke 777 membuatnya world-readable, world-writable, dan world-executable. Setiap pengguna di mesin (termasuk akun layanan tanpa hak istimewa dan proses apa pun yang pernah dikompromikan) dapat membaca konten file, mengubahnya, dan menjalankannya. Saran tutorial standar «cukup chmod 777 sampai berhasil» adalah antipattern keamanan yang telah bertanggung jawab atas banyak pelanggaran nyata: file konfigurasi world-writable yang dirusak, direktori web world-writable yang menjadi vektor pengrusakan, file log world-writable yang memungkinkan pemalsuan log, direktori world-executable yang memungkinkan eksekusi kode sembarang.
Jika kesalahan izin menghalangi Anda, perbaikan yang tepat hampir selalu adalah mengubah pemilik file (dengan chown) atau grupnya (dengan chgrp) sehingga pengguna yang membutuhkan akses benar-benar memiliki atau ikut memiliki file, bukan menghapus kontrol akses untuk semua orang.
Bit khusus: setuid, setgid, sticky
Digit oktal keempat yang disisipkan di depan mode membuka tiga bit khusus, semuanya peninggalan desain Unix asli:
- 4xxx, setuid (set user ID). Ketika ditetapkan pada executable, program berjalan dengan hak istimewa pemilik, bukan pemanggil. Contoh klasik adalah
passwd: setiap pengguna dapat menjalankannya, tetapi hanya karena setuid-root sehingga dapat menulis ke/etc/shadow. Setuid adalah permukaan keamanan utama, Linux modern semakin menggantikannya dengan kemampuan file (bit izin yang lebih granular melaluisetcap), dan banyak distro secara progresif menghapus bit setuid. - 2xxx, setgid (set group ID). Pada executable, berjalan dengan grup file; pada direktori, file yang dibuat di dalamnya mewarisi grup direktori daripada grup utama pembuat, berguna untuk direktori proyek bersama.
- 1xxx) sticky bit. Pada direktori, hanya pemilik file (atau root) yang dapat menghapus atau mengganti nama file di dalamnya, terlepas dari izin write pada direktori itu sendiri. Penggunaan kanonik adalah
/tmp: world-writable sehingga pengguna mana pun dapat membuat file, tetapi sticky bit mencegah pengguna menghapus file satu sama lain.
Tampilan ls -l menukar karakter execute menjadi s, S, t atau T ketika bit-bit ini ditetapkan (huruf kapital berarti bit ditetapkan tetapi bit execute yang mendasarinya tidak).
umask: kebalikan dari chmod
chmod menetapkan izin pada file yang sudah ada. umask menentukan izin default pada file yang Anda buat, dengan bertindak sebagai topeng subtraktif. Aritmatikanya: file reguler baru akan menjadi 666 (rw-rw-rw-), direktori baru 777, dikurangi apa pun yang ditetapkan dalam umask. Nilai umum:
- umask 022 (default pada sebagian besar distro Linux), menghapus write dari grup dan yang lainnya. File baru berakhir di 644, direktori baru di 755.
- umask 002 (default di beberapa lingkungan pengembangan bersama), hanya menghapus write dari yang lain. File baru di 664, direktori di 775. Berguna ketika tim pengembangan ingin membaca dan mengedit file satu sama lain.
- umask 077 (umum pada server privat dan pengaturan yang sadar keamanan), menghapus semua izin untuk grup dan yang lainnya. File baru di 600, direktori di 700.
Mengetik umask tanpa argumen menampilkan nilai saat ini. Menetapkannya di inisialisasi shell Anda (~/.bashrc, ~/.zshrc) atau di /etc/login.defs berlaku untuk seluruh sesi.
File vs direktori, makna berbeda dari x
Bit r/w/x yang sama memiliki arti yang sedikit berbeda pada direktori dibandingkan pada file:
- Read pada direktori: mencantumkan isinya. Tanpa read, Anda masih dapat mengakses nama file yang diketahui di dalam direktori jika Anda memiliki execute, tetapi
lstidak akan berfungsi. - Write pada direktori: membuat, menghapus, atau mengganti nama entri di dalamnya. Catatan: ini independen dari izin write pada file itu sendiri. Write pada direktori ditambah sticky bit (1xxx) adalah yang memungkinkan direktori bersama multi-pengguna yang terkontrol seperti
/tmp. - Execute pada direktori: melintasinya (
cdke dalamnya, mengakses entri bernama di dalamnya). Direktori tanpa execute secara efektif adalah jalan buntu. Banyak masalah «permission denied» yang halus berasal dari perbedaan ini: Anda memiliki read pada direktori yang dalam tetapi tidak execute pada salah satu induknya, sehingga Anda tidak dapat mencapainya.
chmod rekursif dan pola find
chmod -R 755 /var/www menerapkan mode yang sama pada setiap file dan direktori dalam pohon, yang hampir selalu salah karena file dan direktori membutuhkan mode yang berbeda (mis., 644 untuk file, 755 untuk direktori). Idiom yang benar menggunakan find:
find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +
Atau, secara setara, menggunakan chmod GNU dengan huruf kapital X: chmod -R u=rwX,go=rX /var/www hanya memberikan execute pada direktori dan file yang sudah memiliki execute di suatu tempat, persis hasil yang biasanya Anda inginkan.
Symlink, ACL, dan bagaimana Linux memperluas model ini
Dua penyempurnaan yang layak diketahui:
- Symlink memiliki mode sendiri (selalu 777) tetapi diabaikan.
chmodmengikuti tautan dan memodifikasi target secara default. Gunakanchmod -hpada BSD atauchmod --no-dereferencepada GNU untuk beroperasi pada tautan itu sendiri, meskipun jarang ada alasan untuk melakukannya. - POSIX ACL (
setfacl,getfacl) memperluas model dasar dengan entri per-pengguna dan per-grup. Sebuah file dapat memberikan write kepada pengguna tertentu tanpa menyentuh bit mode standar.ls -lmenampilkan+di bagian akhir pada file dengan ACL. macOS, sebagian besar sistem file Linux, dan BSD semuanya mendukungnya; ACL bersifat opsional dan banyak sysadmin lebih suka tetap menggunakan mode klasik yang lebih sederhana. - ACL Windows NTFS lebih kaya lagi, entri per-pengguna / per-grup dengan bit allow / deny eksplisit dan pewarisan yang dapat diwariskan. Model
chmodtidak dapat diterjemahkan secara langsung. Cygwin dan WSL mengemulasikannya secara tidak sempurna di atas NTFS.
Pertanyaan lainnya
Mengapa kunci SSH saya ditolak dengan «permissions are too open»?
Karena klien OpenSSH menolak menggunakan kunci privat yang dapat dibaca oleh grup atau dunia, dengan asumsi bahwa apa pun yang dapat dibaca orang lain tidak boleh menjadi kredensial. Perbaikannya adalah chmod 600 ~/.ssh/id_rsa (dan chmod 700 ~/.ssh pada direktori itu sendiri). Logika yang sama berlaku untuk ~/.gnupg/ dan sebagian besar penyimpanan kredensial lainnya.
Apa perbedaan antara chmod dan chown?
chmod mengubah bit mode, apa yang dapat dilakukan pemilik/grup/yang lainnya. chown mengubah siapa pemiliknya. Seringkali Anda membutuhkan keduanya: file yang «pengguna yang salah tidak dapat membaca» biasanya tidak perlu izinnya dibuka; file tersebut perlu dimiliki oleh pengguna yang membutuhkan akses. Coba chown myuser:mygroup file terlebih dahulu.
Apakah saya harus menggunakan 666 untuk file log?
Hampir tidak pernah. File log world-writable memungkinkan proses apa pun (termasuk layanan yang dikompromikan yang berjalan sebagai pengguna dengan hak istimewa rendah) untuk memalsukan entri log atau menghapus log. Pola standar adalah membuat direktori log dapat ditulis oleh grup log tertentu (adm di Debian, wheel di BSD, dll.) dan menambahkan layanan yang relevan ke grup tersebut, atau menggunakan logrotate + daemon logging (rsyslog, systemd-journald) yang menangani kepemilikan file untuk Anda.
Apakah kalkulator ini memperhitungkan bit khusus?
Tidak, ini mencakup sembilan bit izin dasar (mode standar 3 digit). Untuk setuid (4xxx), setgid (2xxx) atau sticky (1xxx), Anda perlu menambahkan digit terdepan secara manual. Sebagian besar pekerjaan chmod sehari-hari menggunakan mode 3 digit dan tidak pernah menyentuh bit khusus.
Apakah ada yang dikirim ke server?
Tidak. Konversi toggle ↔ oktal ↔ simbolis adalah aritmatika murni, dihitung di browser Anda. Halaman ini bekerja offline setelah dimuat.