Perintah chmod Linux: ubah izin simbolis, 644, 640, dan 755

Perintah chmod mengubah bit izin baca, tulis, dan eksekusi pada berkas atau direktori. Gunakan mode simbolis untuk menambah atau menghapus izin tertentu, dan mode angka untuk menetapkan kombinasi izin dasar. Periksa sasaran dan izin awal sebelum melakukan perubahan.

Pahami pemilik, kelompok, dan pengguna lain

Izin dasar dibagi menjadi tiga bagian: pemilik berkas, anggota kelompok berkas, dan pengguna lain. Simbol r berarti baca, w berarti tulis, dan x berarti eksekusi untuk berkas biasa atau penelusuran untuk direktori. Chmod mengubah mode izin, sedangkan chown digunakan untuk mengubah kepemilikan.

Pada direktori, x diperlukan untuk menelusuri jalur dan mengakses entri yang namanya diketahui, dengan tetap mengikuti izin entri dan jalur terkait. Izin membaca daftar nama direktori berbeda dari izin menelusurinya. Karena itu, angka yang cocok untuk dokumen belum tentu cocok untuk direktori.

Sintaks dan persiapan contoh

chmod [OPSI] MODE BERKAS...

OPSI, MODE, dan BERKAS adalah penanda yang diganti dengan nilai sebenarnya. Pembahasan ini memakai GNU chmod; periksa chmod --version, chmod --help, dan man chmod pada sistem tujuan.

Gunakan direktori latihan baru dan berkas milik sendiri, bukan dokumen produksi. Contoh di bawah memakai script.sh, report.txt, dan demo.txt. Pastikan nama itu belum berisi data penting karena perintah pembuatan dengan tanda > dapat menimpa berkas yang sudah ada. Catat mode awal dengan stat -c '%a %n' report.txt atau lihat dengan ls sebelum mengubah berkas yang ingin dipulihkan.

Tambahkan izin eksekusi hanya untuk pemilik

Untuk latihan sederhana, buat script.sh baru dengan printf 'echo uji\n' > script.sh, lalu jalankan:

chmod u+x script.sh

Huruf u memilih pemilik dan +x menambahkan bit eksekusi. Izin dasar kelompok serta pengguna lain tidak ditambah oleh bentuk ini. Jika mode awalnya 644, hasil dasarnya menjadi 744; jika mode awal berbeda, jangan menganggap hasil akhirnya selalu 744. Periksa dengan ls -l script.sh.

Penambahan bit eksekusi tidak dengan sendirinya membuktikan sebuah berkas merupakan program yang benar atau dapat dijalankan pada semua lingkungan. Untuk kebutuhan artikel ini, yang diperiksa adalah perubahan bit izin pada berkas latihan tersebut.

Tetapkan mode angka 644

Buat report.txt baru, misalnya dengan printf 'laporan\n' > report.txt, sebelum menjalankan perintah berikut.

chmod 644 report.txt

Tiga angka dibaca berurutan untuk pemilik, kelompok, dan pengguna lain. Nilai baca adalah 4, tulis 2, dan eksekusi 1; jumlahkan nilai yang dibutuhkan untuk setiap bagian. Jadi 6 adalah baca+tulis, sedangkan 4 adalah baca saja.

Mode 644 memberi pemilik baca dan tulis, lalu memberi kelompok serta pengguna lain baca saja. Tidak ada bit eksekusi dalam kombinasi dasar ini. Angka tersebut tidak mengubah nama pemilik atau kelompok berkas.

Bandingkan sebelum dan sesudah penghapusan izin

ls -l report.txt
chmod go-rwx report.txt
ls -l report.txt

Perintah pertama membaca mode report.txt. Perintah kedua menghapus r, w, dan x dari kelompok serta pengguna lain, lalu perintah terakhir menampilkan hasil. Jika sebelumnya 644 dan hanya izin dasar yang dipakai, hasilnya menjadi 600: pemilik tetap dapat membaca dan menulis.

Untuk mengembalikan berkas latihan yang memang semula 644, jalankan chmod 644 report.txt dan periksa lagi. Pada berkas lain, gunakan mode awal yang telah dicatat; 644 bukan nilai pemulihan universal.

Verifikasi mode 640 dengan GNU stat

Contoh lengkap berikut membuat demo.txt pada direktori latihan, menetapkan mode, lalu menampilkan angka izin. Mode 640 berarti pemilik baca+tulis, kelompok baca, dan pengguna lain tanpa izin dasar.

printf 'demo\n' > demo.txt
chmod 640 demo.txt
stat -c '%a %n' demo.txt

Hasil yang diharapkan pada sistem yang menerapkan mode izin tersebut:

640 demo.txt

GNU chmod biasanya tidak mencetak apa pun ketika berhasil, sehingga pembacaan ulang dengan stat penting. Opsi -c pada contoh merupakan opsi GNU stat. Implementasi stat lain dapat memakai sintaks berbeda.

Jika perintah berhasil tetapi angka yang terbaca tidak sesuai, periksa jenis sistem berkas dan dukungan mode izin pada lingkungan itu. Keberhasilan perintah saja belum membuktikan bahwa seluruh kebijakan akses yang Anda inginkan telah diterapkan.

Ringkasan bentuk simbolis dan opsi GNU

Bentuk atau opsi Arti
u / g / o / a Pemilik, kelompok, pengguna lain, atau semuanya.
+ / - / = Menambah, menghapus, atau menetapkan izin untuk bagian yang dipilih.
r / w / x Baca, tulis, serta eksekusi atau penelusuran direktori.
-R Mengubah direktori dan isi di bawahnya secara rekursif; ruang lingkup perlu diperiksa lebih dahulu.
--reference=BERKAS Memakai mode berkas rujukan, bukan menuliskan nilai mode secara langsung.

Contohnya, chmod g+w report.txt hanya menambah izin tulis kelompok pada izin dasar yang sudah ada. Gunakan u, g, o, atau a secara eksplisit ketika cakupannya penting; jika bagian pemakai dihilangkan, GNU chmod juga mempertimbangkan umask, yaitu mask pembatas izin.

Contoh angka tiga digit di atas berfokus pada sembilan bit izin dasar. Jangan menyederhanakannya menjadi aturan bahwa semua bit khusus selalu dihapus. GNU chmod dapat mempertahankan bit set-user-ID dan set-group-ID pada direktori jika tidak dinyatakan sebaliknya. Perilaku rinci dibahas dalam manual GNU chmod.

Periksa direktori dan batas akses lain

Jangan memakai chmod -R 777 sebagai perbaikan umum. Kombinasi itu memberikan izin dasar yang luas pada seluruh sasaran rekursif, sementara berkas dan direktori sering memerlukan kombinasi berbeda. Periksa jalur dan daftar isi dengan ls atau find sebelum memutuskan apakah perubahan rekursif diperlukan.

Mode 755 berarti pemilik mendapat baca+tulis+eksekusi, sedangkan kelompok dan pengguna lain mendapat baca+eksekusi. Pada direktori, x berarti penelusuran; pada berkas biasa, x adalah bit eksekusi. Karena maknanya berbeda, jangan otomatis memberi semua dokumen izin yang sama dengan direktori.

Access Control List (ACL), yaitu daftar aturan akses tambahan, dan Security-Enhanced Linux (SELinux), yaitu mekanisme kebijakan keamanan Linux, juga dapat memengaruhi keputusan akses. Nilai mode dasar bukan satu-satunya penentu akses pada lingkungan yang menggunakan mekanisme tersebut. Dasar metadata mode dijelaskan dalam manual inode dan bit izin Linux.

FAQ

Apa perbedaan chmod 644 dan chmod 755?

644 menetapkan baca+tulis bagi pemilik dan baca bagi kelompok serta pengguna lain. 755 juga memberikan eksekusi bagi ketiganya, dengan tulis hanya untuk pemilik. Pada direktori, bit eksekusi dibaca sebagai izin penelusuran.

Mengapa chmod berhasil tanpa menampilkan pesan?

Itu perilaku umum GNU chmod saat berhasil. Baca kembali mode dengan ls atau stat dan perhatikan pesan galat atau status perintah jika hasilnya tidak sesuai.