Pada sistem operasi Linux dan Unix, semua file baru dibuat dengan set izin default. Utilitas umask memungkinkan Anda untuk melihat atau mengatur pembuatan mode file mask, yang menentukan izin bit untuk file atau direktori yang baru dibuat.

Ini digunakan oleh mkdir, touch, tee dan perintah lain yang membuat file dan direktori baru.

Izin di Linux

Sebelum melangkah lebih jauh, mari kita jelaskan model izin di Linux.

Di Linux, setiap file dikaitkan dengan owner dan grup dan ditugaskan dengan hak akses izin untuk tiga kelas pengguna yang berbeda:

  • file owner.
  • group members.
  • everybody else.

Ada tiga jenis izin yang berlaku untuk setiap kelas:

  • izin read.
  • izin write.
  • izin execute.

Konsep ini memungkinkan Anda menentukan pengguna mana yang diizinkan membaca file, menulis ke file, atau menjalankan file.

Untuk melihat izin file, gunakan perintah ls:

ls -l dirname
drwxr-xr-x 12 linuxid users 4.0K Apr  8 20:51 dirname
|[-][-][-]    [------] [---]
| |  |  |        |       |       
| |  |  |        |       +-----------> Group
| |  |  |        +-------------------> Owner
| |  |  +----------------------------> Others Permissions
| |  +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type

Karakter pertama mewakili tipe file yang dapat berupa file biasa (-), direktori (d), symbolic link (l) atau jenis file khusus lainnya.

Sembilan karakter berikutnya mewakili izin, masing-masing tiga set tiga karakter. Set pertama menunjukkan izin pemilik, yang kedua adalah izin grup, dan set terakhir menunjukkan izin pengguna lain.

Karakter r dengan nilai oktal 4 singkatan untuk read, w dengan nilai oktal 2 untuk write, x dengan nilai oktal 1 untuk mengeksekusi izin dan (-) dengan nilai oktal 0 untuk tanpa izin.

Ada juga tiga jenis izin file khusus lainnya: setuidsetgid dan Sticky Bit.

Dalam contoh di atas (rwxr-xr-x) berarti bahwa pemilik memiliki izin membaca, menulis, dan mengeksekusi izin (rwx), grup dan yang lainnya dapat membaca dan mengeksekusi.

Jika kita merepresentasikan izin file menggunakan notasi numerik, kita akan mendapatkan nomor 755:

  • Owner: rwx = 4+2+1 = 7
  • Group: r-x = 4+0+1 = 5
  • Other: r-x = 4+0+1 = 5

Ketika diwakili dalam notasi numerik, izin dapat memiliki tiga atau empat digit oktal (0-7). Digit pertama mewakili izin khusus dan jika dihilangkan berarti tidak ada izin khusus yang ditetapkan pada file. Dalam kasus kami 755 sama dengan 0755. Digit pertama dapat berupa kombinasi dari 4 untuk setuid, 2 untuk setgid dan 1 untuk Sticky Bit.

Izin file dapat diubah menggunakan perintah chmod dan untuk kepemilikan menggunakan perintah chown.

Memahami Perintah umask

Secara default, pada sistem Linux, izin pembuatan default adalah 666 untuk file, yang memberikan izin read dan write kepada user, grup, dan lainnya, dan ke 777 untuk direktori, yang berarti  pengguna, grup, dan lainnya memiliki izin untuk read, write danexecute. Linux tidak mengizinkan file dibuat dengan izin mengeksekusi.

Izin pembuatan default dapat dimodifikasi menggunakan utilitas umask.

umask Hanya memengaruhi shell environment saat ini. Pada sebagian besar distribusi Linux, nilai umask seluruh sistem default diatur dalam pam_umask.so atau file /etc/profile.

Jika Anda ingin menentukan nilai yang berbeda pada basis per user, edit file konfigurasi shell seperti ~/.bashrc atau ~/.zshrc. Anda juga dapat mengubah nilai sesi saat ini dengan menjalankan umask diikuti oleh nilai yang diinginkan.

Untuk melihat nilai mask saat ini, cukup ketik umask tanpa argumen apa pun:

umask

Output akan mencakup

022

Nilai umask berisi bit izin yang TIDAK akan diatur pada file dan direktori yang baru dibuat.

Seperti yang telah kami sebutkan, izin pembuatan default untuk file adalah 666 dan untuk direktori 777. Untuk menghitung bit izin file baru kurangi nilai umask dari nilai default.

Misalnya, untuk menghitung bagaimana uname 022 akan mempengaruhi file dan direktori yang baru dibuat, gunakan:

  • File: 666 - 022 = 644. Pemilik dapat membaca dan memodifikasi file. Grup dan lainnya hanya dapat membaca file.
  • Direktori: 777 - 022 = 755. Pemilik dapat melakukan cd ke direktori dan dapat membaca, memodifikasi, membuat atau menghapus file dalam direktori. Grup dan yang lainnya dapat melakukan cd ke direktori dan daftar serta membaca file.

Anda juga dapat menampilkan nilai mask dalam notasi simbolis menggunakan opsi -S:

umask -S
u=rwx,g=rx,o=rx

Berbeda dengan notasi numerik, nilai notasi simbolik berisi bit izin yang akan ditetapkan pada file dan direktori yang baru dibuat.

Mengatur nilai mask

Pembuatan file mask dapat diatur menggunakan notasi oktal atau simbolis. Untuk membuat perubahan permanen, atur nilai umask baru dalam file konfigurasi global seperti file /etc/profile yang akan memengaruhi semua pengguna. Atau dalam file konfigurasi shell pengguna seperti ~/.profile, ~/.bashrc atau ~/.zshrc yang hanya akan mempengaruhi pengguna. File pengguna lebih diutamakan daripada file global.

Sebelum membuat perubahan pada nilai umask, pastikan nilai baru tidak menimbulkan risiko keamanan potensial. Nilai yang tidak terlalu membatasi dibandingkan 022 harus digunakan dengan sangat hati-hati. Misalnya umask 000 berarti bahwa siapa pun akan dapat membaca, menulis, dan mengeksekusi untuk semua file yang baru dibuat.

Katakanlah kita ingin menetapkan izin yang lebih ketat untuk file dan direktori yang baru dibuat sehingga orang lain tidak akan dapat melakukan cd ke direktori dan membaca file. Izin yang kita inginkan adalah 750 untuk direktori dan 640 untuk file.

Untuk menghitung nilai umask , cukup kurangi izin yang diinginkan dari yang default:

Nilai Umask : 777-750 = 027

Nilai umask yang diinginkan terwakili dalam notasi numerik adalah 027.

Untuk secara permanen mengatur seluruh sistem nilai yang baru buka file /etc/profile dengan editor teks Anda:

sudo nano /etc/profile

ubah atau tambahkan baris berikut di awal file:

umask 027

Agar perubahan diterapkan, jalankan perintah source atau logout dan log in kembali :

source /etc/profile

Untuk memverifikasi pengaturan baru, kita akan membuat satu file dan direktori baru menggunakan mkdir dan touch:

mkdir dirbaru
touch filebaru

Jika Anda memeriksa izin menggunakan perintah ls Anda akan melihat bahwa file baru memiliki  izin baru 640 dan direktori 750, seperti yang kita inginkan:

drwxr-x--- 2 linuxid users 4096 Jul  4 18:14  newdir
-rw-r----- 1 linuxid users    0 Jul  4 18:14  newfile

Another way to set the file creation mask is by using the symbolic notation. For example umask u=rwx,g=rx,o= is same as umask 027.

Cara lain untuk mengatur file mask adalah dengan menggunakan notasi simbolik. Misalnya umask u=rwx,g=rx,o= sama dengan umask 027.

Kesimpulan

Dalam panduan ini, kami telah menjelaskan izin Linux dan cara menggunakan perintah umask untuk mengatur izin untuk file atau direktori yang baru dibuat.

Untuk informasi lebih lanjut ketikkan man umask di terminal Anda.