Apa itu umask di Linux, dan Bagaimana Cara Menggunakannya?

Diterbitkan: 2022-07-29
Laptop Linux menampilkan prompt bash
fatmawati achmad zaenuri/Shutterstock.com

Di Linux, semua direktori dan file memiliki izin akses. Anda dapat menggunakan chmod untuk mengatur hak akses pilihan Anda untuk pengguna yang berbeda. Tapi apa yang menentukan izin default mereka? Mari kita bicara tentang umask .

Izin Akses

Semua direktori dan file memiliki flag yang disebut bit mode yang memutuskan apakah mereka dapat dibaca, ditulis, atau dieksekusi. Mengeksekusi file berarti menjalankannya seperti program atau skrip. Untuk sebuah direktori, Anda harus dapat “mengeksekusi” sebuah direktori untuk cd ke dalamnya. Secara kolektif pengaturan mode bit disebut hak akses direktori atau file.

Ada tiga set izin. Satu set adalah untuk pemilik direktori atau file. Kecuali jika kepemilikan telah diubah dengan chown , pemiliknya adalah orang yang membuat direktori atau file.

Bagaimana Izin File Linux Bekerja?
TERKAIT Bagaimana Izin File Linux Bekerja?

Set izin kedua adalah untuk anggota grup pengguna yang direktori atau filenya telah ditetapkan. Biasanya, ini adalah grup pengguna dari pemilik.

Ada set izin ketiga dan terakhir untuk "orang lain." Ini adalah tangkapan semua untuk semua orang yang tidak terkandung dalam dua set pertama.

Dengan memisahkan izin seperti ini, kemampuan yang berbeda dapat diberikan ke tiga kategori. Ini adalah bagaimana direktori dan akses file dikontrol di Linux. Meskipun skemanya sederhana, ini menyediakan cara yang fleksibel dan kuat untuk menentukan siapa yang dapat melakukan apa dengan direktori atau file apa pun.

Bit Mode

Anda dapat melihat izin untuk file dengan menggunakan perintah ls dan opsi -l (format panjang).

 ls -l apa saja*

Kita juga akan melihat direktori dengan menambahkan opsi -d (direktori). Tanpa opsi ini, ls akan melihat file di dalam direktori, bukan direktori itu sendiri.

 ls -ld 

Menggunakan ls untuk melihat izin pada direktori dan file

Di awal setiap entri dalam daftar ls , ada kumpulan 10 karakter. Berikut adalah tampilan close-up dari karakter tersebut untuk file dan direktori.

Izin file dan direktori, tutup

File adalah baris atas, direktori adalah baris bawah. Karakter pertama memberitahu kita apakah kita sedang melihat direktori atau file. Tanda “d” menunjukkan direktori dan tanda hubung “ - ” menunjukkan file.

Tiga set izin ditunjukkan oleh masing-masing grup yang terdiri dari tiga karakter. Dari kiri ke kanan ini adalah izin untuk pemilik, grup, dan lainnya. Di setiap set izin, tiga karakter, dari kiri ke kanan, menunjukkan pengaturan untuk izin baca "r", izin tulis "w", dan izin eksekusi "x". Surat berarti izin ditetapkan. Tanda hubung “ - ” berarti izin tidak disetel.

Untuk file contoh kami, 10 karakter berarti:

  • : Ini adalah file, bukan direktori.
  • rwx : Pemilik dapat membaca, menulis, dan mengeksekusi file ini.
  • rw- : Anggota lain dari grup yang sama dengan file ini dapat membaca dan menulis ke file, tetapi mereka tidak dapat menjalankannya.
  • r– : Semua orang hanya dapat membaca file.

Untuk direktori contoh kami, 10 karakter berarti:

  • d : Ini adalah direktori.
  • rwx : Pemilik dapat membaca, menulis, dan mengeksekusi ( cd ke) direktori ini.
  • rwx : Anggota lain dari grup yang sama dapat membaca, menulis, dan cd ke direktori ini.
  • rx : Semua orang dapat melakukan cd ke direktori ini, tetapi mereka hanya dapat membaca file. Mereka tidak dapat menghapus file, mengedit file, atau membuat file baru.

Izin disimpan dalam bit mode dalam metadata direktori atau file. Setiap bit mode memiliki nilai numerik. Semuanya memiliki nilai nol jika tidak disetel.

  • r : Bit baca memiliki nilai 4 jika disetel.
  • w : Bit tulis memiliki nilai 2 jika disetel.
  • x : Bit eksekusi memiliki nilai 1 jika disetel.

Satu set tiga izin dapat diwakili oleh jumlah nilai bit. Nilai maksimumnya adalah 4+2+1=7, yang akan menyetel ketiga izin dalam satu set ke “aktif.” Itu berarti semua permutasi dari ketiga himpunan dapat ditangkap dalam nilai Oktal (basis 8) tiga digit.

Mengambil contoh file kami dari atas, pemilik telah membaca, menulis, dan mengeksekusi izin, yaitu 4+2+1=7. Anggota lain dari grup tempat file tersebut memiliki izin baca dan tulis, yaitu 4+2=6. Kategori lainnya hanya memiliki set izin baca, yaitu 4.

Jadi izin untuk file itu dapat dinyatakan sebagai 764.

Menggunakan skema yang sama, izin untuk direktori adalah 775. Anda dapat melihat representasi Oktal dari izin menggunakan perintah stat .

Cara Menggunakan Perintah chmod di Linux
TERKAIT Cara Menggunakan Perintah chmod di Linux

Perintah chmod ( ch ange mod e bits) adalah alat yang digunakan untuk mengatur hak akses pada direktori dan file. Tapi itu tidak menentukan izin apa yang ditetapkan pada direktori atau file saat Anda membuatnya. Satu set izin default digunakan untuk itu.

Izin Default dan umask

Izin default untuk direktori adalah 777, dan izin default untuk file adalah 666. Itu memberi setiap pengguna akses penuh ke semua direktori, dan kemampuan untuk membaca dan menulis file apa pun. Bit eksekusi tidak diatur pada file. Anda tidak dapat membuat file yang sudah memiliki bit eksekusi. Itu bisa menimbulkan risiko keamanan.

Cara Menggunakan Perintah stat di Linux
TERKAIT Cara Menggunakan Perintah stat di Linux

Namun, jika Anda membuat direktori baru dan file baru dan melihat izinnya, mereka tidak akan disetel ke 777 dan 666. Kami akan membuat file dan direktori, lalu gunakan stat piped through grep untuk mengekstrak baris dengan representasi Oktal dari izin mereka.

 sentuh umask-article.txt
 mkdir howtogeek
 stat umask-article.txt | grep "Akses: ("
 stat howtogeek | grep "Akses: (" 

izin default untuk direktori dan file, dan output stat untuk masing-masingnya

Mereka diatur ke 775 untuk direktori dan 664 untuk file. Mereka tidak disetel ke izin default global karena nilai lain memodifikasinya, yang disebut nilai umask.

Nilai umask

Nilai umask diatur secara global dengan satu nilai untuk root dan nilai yang berbeda untuk semua pengguna lain. Tapi itu bisa menjadi nilai baru bagi siapa saja. Untuk melihat apa pengaturan umask saat ini, gunakan perintah umask .

 umask 

Nilai umask untuk pengguna biasa

Dan untuk akar:

 umask 

Nilai umask untuk pengguna root

Izin pada direktori atau file yang baru dibuat adalah hasil dari nilai umask yang memodifikasi izin default global.

Sama seperti bit mode, nilai umask mewakili tiga set izin yang sama—pemilik, grup, dan lainnya—dan merepresentasikannya sebagai tiga digit Oktal. Terkadang Anda akan melihatnya ditulis sebagai empat digit, dengan digit pertama adalah nol. Itu adalah cara singkat untuk mengatakan "ini adalah bilangan oktal." Ini adalah tiga digit paling kanan yang dihitung.

Nilai umask tidak dapat menambahkan izin. Itu hanya dapat menghapus—atau menutupi— izin. Itu sebabnya izin default sangat liberal. Mereka dirancang untuk dikurangi ke tingkat yang masuk akal dengan penerapan nilai umask.

Satu set izin default tidak akan cocok untuk semua pengguna, juga tidak akan cocok untuk semua skenario. Misalnya, direktori dan file yang dibuat oleh root akan membutuhkan izin yang lebih ketat daripada rata-rata pengguna. Dan bahkan rata-rata pengguna tidak ingin semua orang di kategori lain dapat melihat dan mengubah file mereka.

Bagaimana umask Menutupi Izin

Mengurangi nilai mask dari izin default memberi Anda izin yang sebenarnya. Dengan kata lain, jika izin diatur dalam nilai umask, itu tidak akan diatur dalam izin yang diterapkan ke direktori atau file.

Nilai umask berfungsi sebagai kebalikan dari nilai izin biasa.

  • 0 : Tidak ada izin yang dihapus.
  • 1 : Bit eksekusi tidak disetel dalam izin.
  • 2 : Bit tulis tidak disetel dalam izin.
  • 4 : Bit baca tidak disetel dalam izin.

Izin default 777 untuk direktori dan 666 untuk file dimodifikasi oleh nilai umask 002 untuk menghasilkan izin akhirnya 775 dan 664 pada direktori dan file pengujian kami.

 stat umask-article.txt | grep "Akses: ("
 stat howtogeek | grep "Akses: (" 

Izin akhirnya pada direktori dan file

Ini menghapus izin menulis dari kategori lain pada direktori dan file.

jika root membuat direktori, nilai umask 022 mereka diterapkan. Izin menulis dihapus untuk kategori lain dan untuk kategori grup juga.

 sudo mkdir root-dir
 stat howtogeek | grep "Akses: (" 

Izin ketika root membuat direktori

Kita dapat melihat bahwa izin default 777 telah dikurangi menjadi 755.

TERKAIT: Cara Mengaudit Keamanan Sistem Linux Anda dengan Lynis

Mengubah Nilai umask Default

Ada nilai umask yang berbeda untuk shell login dan shell non-login. Shell login adalah shell yang memungkinkan Anda masuk, baik secara lokal maupun jarak jauh melalui SSH. Shell non-login adalah Shell di dalam jendela terminal saat Anda sudah masuk.

Berhati-hatilah jika Anda mengubah login shell umask. Jangan menambah izin dan menurunkan keamanan Anda. Jika ada, Anda harus cenderung menguranginya dan membuatnya lebih membatasi.

Di Ubuntu dan Manjaro, pengaturan umask dapat ditemukan di file-file ini:

  • Login Shell umask : Untuk nilai umask default shell login: /etc/profile
  • Non-Login Shell : Untuk nilai umask default shell non-login: /etc/bash.bashrc

Di Fedora, pengaturan umask dapat ditemukan di file-file ini:

  • Login Shell umask : Untuk log in nilai default umask shell: /etc/profile
  • Non-Login Shell : Untuk nilai umask default shell non-login: /etc/bashrc

Jika Anda tidak memiliki kebutuhan mendesak untuk mengubahnya, sebaiknya biarkan saja.

Cara yang lebih disukai adalah dengan menetapkan nilai umask baru untuk setiap akun pengguna individu yang perlu berbeda dari default. Pengaturan umask baru dapat dimasukkan ke dalam file ".bashrc" pengguna di direktori home mereka.

 gedit .bashrc 

Membuka file .bashrc di editor

Tambahkan pengaturan umask Anda di dekat bagian atas file.

Menambahkan nilai umask ke file .bashrc

Simpan file dan tutup editor. buka jendela terminal baru dan periksa nilai umask dengan perintah umask .

 umask 

Memeriksa nilai umask baru

Nilai baru aktif.

TERKAIT: Cara Menghubungkan ke Server SSH dari Windows, macOS, atau Linux

Perubahan Jangka Pendek pada umask

Jika Anda memiliki persyaratan jangka pendek untuk nilai umask yang berbeda, Anda dapat mengubahnya untuk sesi Anda saat ini menggunakan perintah umask . Mungkin Anda akan membuat pohon direktori dan beberapa file dan Anda ingin meningkatkan keamanannya.

Anda dapat mengatur nilai umask ke 077, lalu periksa nilai baru yang aktif.

 umask 077
 umask 

Menetapkan nilai umask sementara

Menyetel topeng agar memiliki nilai 7 di grup dan kategori lainnya berarti semua izin dicabut dari kategori tersebut. Tidak seorang pun kecuali Anda (dan root) yang dapat masuk ke direktori baru dan membaca serta mengedit file Anda.

 mkdir secure-dir
 ls -ld secure-dir 

Membuat direktori baru dalam satu sesi dengan nilai umask sementara

Satu-satunya izin adalah untuk pemilik direktori.

 mkdir secure-file.txt
 ls -ld secure-file.txt 

Membuat file baru dalam satu sesi dengan nilai umask sementara

File ini aman dari pengintaian dari pengguna lain. Menutup jendela terminal Anda akan membuang pengaturan umask sementara.

Cara Lain umask Digunakan

Linux mengizinkan beberapa proses untuk mewarisi nilai umask sistem, atau diberi pengaturan umask mereka sendiri. Misalnya, useradd menggunakan pengaturan umask untuk membuat direktori home pengguna baru.

Nilai umask dapat diterapkan ke sistem file juga.

 kurang /etc/fstab 

Melihat file /etc/fstab dengan less

Di komputer ini, sistem file “/ boot/efi” memiliki pengaturan umask 077 yang diterapkan padanya.

Pengaturan umask di file /etc/fstab

Melihat titik pemasangan sistem file dengan ls , kami dapat memverifikasi bahwa nilai umask telah menghapus semua izin dari semua orang selain dari pemilik, root.

 ls /boot/efi -ld 

Menggunakan ls untuk melihat izin pada titik pemasangan sistem file "/ boot./efi"

umask dan Izin Saling Membutuhkan

Izin default diterapkan ke direktori atau file setelah diubah oleh nilai umask. Akan sangat jarang Anda perlu mengubah nilai umask secara permanen untuk pengguna, tetapi untuk sementara menyetel nilai umask Anda untuk memberikan serangkaian izin yang lebih ketat saat Anda membuat kumpulan direktori atau dokumen sensitif adalah cara cepat dan mudah untuk meningkatkannya. keamanan.

TERKAIT: Cara Mengamankan Server Linux Anda dengan Firewall UFW