Izin berkas Linux dan sudo: membaca mode serta memakai chmod

Izin berkas Linux menentukan apakah pengguna pemilik, grup pemilik, dan pengguna lain boleh membaca (r), menulis (w), atau mengeksekusi (x) suatu objek. sudo memungkinkan pengguna yang diizinkan menjalankan perintah tertentu sebagai pengguna lain, biasanya administrator. Ketika akses gagal, periksa kepemilikan dan izin terlebih dahulu; gunakan hak istimewa hanya untuk operasi yang memang memerlukannya.

Kueri awal untuk notes.txt merujuk pada berkas yang dibuat nanti dalam direktori latihan baru. Selesaikan persiapan tersebut terlebih dahulu, lalu kembali ke contoh awal untuk memeriksa pemilik, grup, dan mode izinnya. Konsep akun dijelaskan dalam panduan pengguna, grup, dan kepemilikan berkas Linux.

Periksa identitas dan pemilik berkas terlebih dahulu

Izin bukan sekadar angka yang melekat pada berkas. Pengguna dan grup proses saat ini, pengguna serta grup pemilik berkas, dan izin direktori sepanjang jalur ikut menentukan akses. Gunakan id untuk memeriksa sesi saat ini, kemudian ls -l dan stat untuk sasaran. Memahami pengguna, grup, dan kepemilikan membantu Anda menafsirkan izin dengan benar.

id
ls -l notes.txt
stat -c '%A %a %U %G %n' notes.txt

Jika ls -l menampilkan -rw-r----- 1 learner editors ... notes.txt, tanda - paling awal menunjukkan berkas biasa. Tiga kelompok berikutnya, rw-, r--, dan ---, berturut-turut berlaku bagi pengguna pemilik, grup pemilik, serta pengguna lain. Nama learner dan editors hanya ilustrasi; hasil pada sistem Anda akan berbeda. Penanda %a pada GNU stat menampilkan mode dalam bilangan oktal atau basis delapan, misalnya 640.

Arti r, w, dan x pada berkas serta direktori

Huruf yang sama mengizinkan operasi berbeda pada berkas biasa dan direktori. Perbedaan ini menjelaskan mengapa berkas yang mempunyai izin baca masih dapat tidak terjangkau melalui jalur direktorinya.

Izin Berkas biasa Direktori
r Membaca isi Membaca daftar nama dalam direktori
w Mengubah isi Diperlukan untuk membuat, menghapus, dan mengganti nama entri
x Mengizinkan eksekusi berkas yang dapat dijalankan Menelusuri direktori untuk mencapai entri yang namanya diketahui

Membuka berkas memerlukan izin penelusuran x pada direktori-direktori di sepanjang jalurnya. Menghapus berkas biasanya bergantung pada w dan x direktori induk, bukan w pada berkas itu sendiri. Sticky bit, yaitu pembatasan penghapusan pada direktori bersama, daftar kontrol akses (access control list atau ACL), perilaku sistem berkas, atau kebijakan seperti Security-Enhanced Linux (SELinux) dapat memberi batasan tambahan.

Mengubah izin berkas latihan dengan chmod

Contoh ini membuat direktori dan berkas latihan baru di direktori beranda. Jika nama direktorinya sudah ada, pilih nama lain. Berhenti jika mkdir atau cd gagal. printf menulis notes.txt dalam direktori saat ini, sehingga pastikan Anda tidak menimpa berkas yang sudah ada dan periksa lokasi dengan pwd sebelum melanjutkan.

mkdir ~/linux-course-17-practice
cd ~/linux-course-17-practice
printf 'private notes\n' > notes.txt
ls -l notes.txt
chmod u=rw,g=r,o= notes.txt
stat -c '%A %a %n' notes.txt

Huruf u berarti pengguna pemilik, g berarti grup pemilik, dan o berarti pengguna lain. Operator = menetapkan izin setiap kategori tepat seperti yang dituliskan. Pada sistem GNU stat yang umum, baris terakhir menyerupai -rw-r----- 640 notes.txt. Pengguna yang benar-benar dapat membaca berkas tetap ditentukan oleh identitas, keanggotaan grup, dan izin sepanjang jalurnya.

Dalam bentuk angka, r=4, w=2, dan x=1 dijumlahkan untuk setiap kategori. Jadi, 640 berarti rw-, r--, dan ---. Perintah berikut mengubahnya menjadi 600: dalam bit izin biasa, hanya pemilik yang diberi izin baca dan tulis. Pastikan angka yang ditampilkan stat berubah menjadi 600.

chmod 600 notes.txt
stat -c '%A %a %n' notes.txt

Sebaliknya, chmod g+r notes.txt hanya menambahkan izin baca grup pada mode yang ada. Setelah contoh 600 di atas, perintah itu mengembalikan mode menjadi 640; periksa lagi dengan stat. Perintah chmod o-rwx notes.txt menghapus ketiga izin bagi pengguna lain. Pilih dengan sengaja antara mengganti izin satu kategori memakai = dan mengubah bit tertentu memakai + atau -.

Memeriksa izin direktori secara terpisah

Untuk direktori pribadi, mode 700 memberi pemilik izin untuk melihat daftar, menelusuri, serta mengubah entrinya, tanpa memberikan bit izin tersebut kepada grup dan pengguna lain. Jalankan contoh ini hanya di dalam direktori latihan yang baru dibuat.

mkdir private
chmod 700 private
ls -ld private
stat -c '%A %a %n' private

Hasil yang umum adalah drwx------ 700 private. Opsi -d membuat ls menampilkan direktori itu sendiri, bukan daftar isinya. Tidak sengaja menghapus x pada direktori dapat menghalangi bahkan pemilik untuk mencapai berkas di dalamnya. Menerapkan satu mode secara rekursif dengan chmod -R mudah keliru, karena kebutuhan x pada berkas biasa dan direktori berbeda.

Kapan dan bagaimana menggunakan sudo?

sudo menjalankan satu perintah sebagai pengguna lain sesuai kebijakan otorisasi akun saat ini. Tidak semua akun mempunyai akses administrator. sudo -l menampilkan perintah yang diizinkan bagi akun Anda dan dapat meminta autentikasi. Pesan penolakan merupakan hasil yang wajar jika akun tidak diberi izin.

sudo -l

Gunakan bentuk sudo perintah hanya ketika perintah tersebut memang memerlukan hak lebih tinggi; ganti perintah dengan perintah nyata yang hendak dijalankan. Jika berkas milik pengguna lain tidak dapat diakses, tentukan dahulu kebijakan akses yang semestinya, bukan langsung membuka izinnya tanpa batas. sudo sendiri bukan perintah untuk mengubah pemilik berkas secara permanen. Namun, berkas yang dibuat oleh perintah berhak istimewa dapat menjadi milik administrator, sehingga periksa lokasi dan hasil penulisannya.

Shell saat ini dapat memproses pengalihan keluaran sebelum sudo berjalan. Karena itu, pola ilustrasi sudo echo ... > berkas-terlindungi dapat gagal memenuhi harapan. Untuk mengedit konfigurasi, pertimbangkan alat yang sesuai seperti sudoedit daripada merangkai pengalihan berhak istimewa secara sembarangan. Sunting kebijakan sudo menggunakan visudo yang memeriksa sintaks, alih-alih mengubah berkasnya tanpa pemeriksaan dan berisiko kehilangan akses administrator.

Urutan praktis menelusuri galat izin

  1. Jalankan id untuk mengetahui pengguna dan grup sesi saat ini. Jika keanggotaan grup baru berubah, periksa apakah sesi masuk ini sudah mencerminkannya.
  2. Gunakan ls -l atau stat untuk melihat pemilik dan mode sasaran. Gunakan ls -ld untuk direktori itu sendiri.
  3. Periksa izin penelusuran pada setiap direktori induk. Jika namei dari util-linux terpasang, pola namei -l jalur, dengan jalur diganti jalur sasaran, membantu memeriksa setiap komponennya.
  4. Jika bit izin biasa belum menjelaskan kegagalan, periksa ACL, SELinux, mount hanya baca, atau sticky bit. Jangan memulai dengan chmod 777 untuk sekadar menghilangkan galat.
  5. Setelah kebutuhan akses jelas, terapkan perubahan sekecil yang diperlukan dan periksa lagi sebagai pengguna yang memang membutuhkan akses tersebut.

Setelah latihan, gunakan pwd untuk memastikan lokasi sebelum merapikan direktori latihan nanti. Jangan menerapkan perintah chmod latihan ini pada data operasional atau berkas milik pengguna lain.

Dokumentasi resmi

Penjelasan struktur mode GNU Coreutils serta panduan pengaturan izin membahas notasi dan perilakunya. Lihat manual sudoers(5) untuk kebijakan otorisasi administrator. Manual sudo(8) menjelaskan sudo -l dan sudoedit, sedangkan manual visudo(8) membahas penyuntingan kebijakan dengan pemeriksaan sintaks.