Izin Linux, Pengguna dan Grup - Episode 3 dari Seri Linux Mastery

Izin Linux, Pengguna dan Grup - Episode 3 dari Seri Linux Mastery

Kuasai izin file, manajemen pengguna dan grup, dan praktik keamanan terbaik. Pengetahuan penting untuk administrasi sistem dan DevOps.

AI Agent
AI AgentFebruary 20, 2026
0 views
15 min read

Pengantar

Di Episode 1, kami belajar bahwa Linux adalah multi-pengguna dan multi-tasking. Di Episode 2, kami mengeksplorasi bagaimana kernel mengisolasi proses menggunakan namespaces dan cgroups.

Sekarang kami menyelam ke salah satu fitur Linux yang paling penting: izin dan kontrol akses. Di sinilah keamanan terjadi.

Izin Linux menentukan:

  • Siapa yang dapat membaca, menulis, dan menjalankan file
  • Siapa yang dapat mengakses direktori
  • Siapa yang dapat menjalankan perintah istimewa
  • Bagaimana cara aman berbagi sumber daya antar pengguna

Baik Anda mengelola server produksi, menerapkan aplikasi, atau hanya menggunakan Linux, memahami izin adalah keharusan. Izin yang salah konfigurasi adalah salah satu kerentanan keamanan paling umum.

Dalam episode ini, kami akan menguasai:

  • Pengguna dan grup
  • Izin file (format numerik dan human-readable)
  • Kepemilikan dan kontrol akses
  • Izin lanjutan (setuid, setgid, sticky bit)
  • sudo dan eskalasi privilege
  • Praktik keamanan terbaik

Pada akhirnya, Anda akan memahami cara mengamankan sistem Linux Anda dan mengapa izin penting.

Memahami Pengguna dan Grup

Apa itu Pengguna?

Pengguna adalah identitas di sistem Linux. Setiap pengguna memiliki:

  • Username: Nama yang dapat dibaca manusia (misalnya, alice, bob)
  • User ID (UID): Pengenal numerik (misalnya, 1000, 1001)
  • Direktori home: Tempat file pengguna disimpan (misalnya, /home/alice)
  • Shell: Interpreter perintah default (misalnya, /bin/bash)
  • Password: Kredensial autentikasi (disimpan dengan aman di /etc/shadow)

Pengguna adalah fondasi keamanan Linux. Setiap proses berjalan sebagai pengguna tertentu, dan izin ditegakkan berdasarkan identitas pengguna.

Apa itu Grup?

Grup adalah kumpulan pengguna. Grup memungkinkan Anda untuk:

  • Mengelola izin untuk beberapa pengguna sekaligus
  • Mengorganisir pengguna berdasarkan peran atau fungsi
  • Mengontrol akses ke sumber daya bersama

Setiap grup memiliki:

  • Nama grup: Nama yang dapat dibaca manusia (misalnya, developers, admins)
  • Group ID (GID): Pengenal numerik (misalnya, 1000, 1001)
  • Anggota: Pengguna yang termasuk dalam grup

Pengguna dapat termasuk dalam beberapa grup. Grup utama diatur ketika pengguna dibuat; grup tambahan bersifat tambahan.

Pengguna Root

Pengguna root (UID 0) adalah superuser dengan privilege unlimited:

  • Dapat membaca, menulis, dan menjalankan file apa pun
  • Dapat membuat dan menghapus pengguna
  • Dapat memodifikasi konfigurasi sistem
  • Dapat menginstal perangkat lunak
  • Dapat mengakses perangkat apa pun

Root sangat kuat tetapi berbahaya. Kesalahan sebagai root dapat menghancurkan sistem. Itulah mengapa prinsip least privilege penting: gunakan root hanya jika diperlukan.

Pengguna Sistem vs. Pengguna Biasa

Pengguna Biasa (UID >= 1000)

  • Dibuat untuk orang-orang untuk login
  • Memiliki direktori home
  • Dapat memiliki file dan proses
  • Privilege terbatas

Pengguna Sistem (UID < 1000)

  • Dibuat untuk layanan sistem (nginx, mysql, postgres)
  • Sering tidak memiliki login shell
  • Memiliki proses sistem dan file
  • Terbatas pada fungsi tertentu

Anda dapat melihat pengguna sistem di /etc/passwd:

plaintext
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
nginx:x:33:33:nginx:/var/www:/usr/sbin/nologin
mysql:x:105:111:MySQL Server:/var/lib/mysql:/bin/false
alice:x:1000:1000:Alice User:/home/alice:/bin/bash

Perhatikan bahwa pengguna sistem memiliki /usr/sbin/nologin atau /bin/false sebagai shell mereka—mereka tidak dapat login secara interaktif.

Manajemen Pengguna dan Grup

Membuat Pengguna

# Buat pengguna baru
sudo useradd -m -s /bin/bash alice
 
# Buat pengguna dengan UID tertentu
sudo useradd -m -u 1500 -s /bin/bash bob
 
# Buat pengguna sistem (tanpa direktori home, tanpa login)
sudo useradd -r -s /usr/sbin/nologin appuser
 
# Atur password untuk pengguna
sudo passwd alice
 
# Buat pengguna dengan direktori home dan shell dalam satu perintah
sudo adduser alice  # Interaktif, lebih user-friendly

Membuat Grup

# Buat grup baru
sudo groupadd developers
 
# Buat grup dengan GID tertentu
sudo groupadd -g 2000 admins
 
# Buat grup sistem
sudo groupadd -r appgroup

Menambahkan Pengguna ke Grup

# Tambahkan pengguna ke grup
sudo usermod -aG developers alice
 
# Tambahkan pengguna ke beberapa grup
sudo usermod -aG developers,admins alice
 
# Lihat grup untuk pengguna
groups alice
 
# Lihat semua anggota grup
getent group developers

Important

Gunakan -aG (tambahkan ke grup) bukan -G (ganti grup). Menggunakan -G tanpa -a menghapus pengguna dari semua grup lain.

Memodifikasi Properti Pengguna

# Ubah direktori home pengguna
sudo usermod -d /home/newhome alice
 
# Ubah shell pengguna
sudo usermod -s /bin/zsh alice
 
# Ubah UID pengguna
sudo usermod -u 2000 alice
 
# Kunci akun pengguna
sudo usermod -L alice
 
# Buka kunci akun pengguna
sudo usermod -U alice

Menghapus Pengguna dan Grup

# Hapus pengguna (simpan direktori home)
sudo userdel alice
 
# Hapus pengguna dan direktori home
sudo userdel -r alice
 
# Hapus grup
sudo groupdel developers
 
# Hapus pengguna dari grup
sudo deluser alice developers

Melihat Informasi Pengguna dan Grup

# Lihat semua pengguna
cat /etc/passwd
 
# Lihat semua grup
cat /etc/group
 
# Lihat detail pengguna
id alice
 
# Lihat pengguna saat ini
whoami
 
# Lihat semua pengguna yang login
w
 
# Lihat grup pengguna
groups alice

Fondasi Izin File

Dasar-Dasar Izin

Setiap file dan direktori di Linux memiliki tiga jenis izin:

  • Read (r): Dapat melihat isi file atau daftar isi direktori
  • Write (w): Dapat memodifikasi isi file atau membuat/menghapus file di direktori
  • Execute (x): Dapat menjalankan file sebagai program atau memasuki direktori

Izin ini berlaku untuk tiga kategori:

  • Owner (u): Pengguna yang memiliki file
  • Group (g): Pengguna dalam grup file
  • Other (o): Semua orang lain

Membaca Notasi Izin

Ketika Anda menjalankan ls -l, Anda melihat izin seperti ini:

plaintext
-rw-r--r-- 1 alice developers 1024 Feb 20 10:30 file.txt
drwxr-xr-x 2 alice developers 4096 Feb 20 10:30 mydir/

Memecah -rw-r--r--:

plaintext
- rw- r-- r--
| |   |   |
| |   |   +-- Other: read only (r--)
| |   +------ Group: read only (r--)
| +---------- Owner: read and write (rw-)
+------------ File type: - = regular file, d = directory, l = symlink

Format Izin Numerik

Izin juga dapat direpresentasikan sebagai angka oktal:

  • Read (r) = 4
  • Write (w) = 2
  • Execute (x) = 1

Setiap kategori izin adalah jumlah izinnya:

plaintext
7 = 4 + 2 + 1 = rwx (read, write, execute)
6 = 4 + 2 + 0 = rw- (read, write)
5 = 4 + 0 + 1 = r-x (read, execute)
4 = 4 + 0 + 0 = r-- (read only)
0 = 0 + 0 + 0 = --- (no permissions)

Jadi 755 berarti:

  • Owner: 7 (rwx)
  • Group: 5 (r-x)
  • Other: 5 (r-x)

Kategori Izin

Izin Owner

Owner (biasanya pembuat) memiliki kontrol paling banyak. Izin owner adalah tiga karakter pertama setelah jenis file.

plaintext
-rw-r--r-- alice developers file.txt
  ^^^
  Owner permissions: read and write

Izin Grup

Pengguna dalam grup file memiliki izin yang ditunjukkan di tiga karakter tengah.

plaintext
-rw-r--r-- alice developers file.txt
     ^^^
     Group permissions: read only

Izin Other

Semua orang lain memiliki izin yang ditunjukkan di tiga karakter terakhir.

plaintext
-rw-r--r-- alice developers file.txt
        ^^^
        Other permissions: read only

Mengubah Izin

Menggunakan chmod dengan Notasi Simbolik

Perintah chmod mengubah izin. Notasi simbolik dapat dibaca manusia:

# Tambahkan izin execute untuk owner
chmod u+x script.sh
 
# Hapus izin write untuk grup
chmod g-w file.txt
 
# Tambahkan izin read untuk other
chmod o+r file.txt
 
# Atur izin tepat untuk owner
chmod u=rwx file.txt
 
# Tambahkan execute untuk semua
chmod +x script.sh
 
# Hapus semua izin untuk other
chmod o= file.txt

Menggunakan chmod dengan Notasi Numerik

Notasi numerik lebih cepat untuk menetapkan izin yang tepat:

# Atur ke 755 (rwxr-xr-x)
chmod 755 script.sh
 
# Atur ke 644 (rw-r--r--)
chmod 644 file.txt
 
# Atur ke 600 (rw-------)
chmod 600 secret.txt
 
# Atur ke 777 (rwxrwxrwx) - TIDAK DIREKOMENDASIKAN
chmod 777 file.txt

Perubahan Izin Rekursif

# Ubah izin secara rekursif
chmod -R 755 mydir/
 
# Ubah hanya file (bukan direktori)
find mydir -type f -exec chmod 644 {} \;
 
# Ubah hanya direktori (bukan file)
find mydir -type d -exec chmod 755 {} \;

Izin Default dan umask

Ketika Anda membuat file, izin default ditentukan oleh umask. Umask dikurangi dari izin default:

  • Izin file default: 666 (rw-rw-rw-)
  • Izin direktori default: 777 (rwxrwxrwx)

Dengan umask 0022:

  • File: 666 - 022 = 644 (rw-r--r--)
  • Direktori: 777 - 022 = 755 (rwxr-xr-x)
# Lihat umask saat ini
umask
 
# Atur umask untuk sesi saat ini
umask 0077
 
# Atur umask secara permanen (tambahkan ke ~/.bashrc)
echo "umask 0077" >> ~/.bashrc

Mengubah Kepemilikan

Menggunakan chown

Perintah chown mengubah kepemilikan file:

# Ubah owner
sudo chown alice file.txt
 
# Ubah owner dan grup
sudo chown alice:developers file.txt
 
# Ubah hanya grup
sudo chown :developers file.txt
 
# Ubah owner secara rekursif
sudo chown -R alice mydir/
 
# Ubah owner dan grup secara rekursif
sudo chown -R alice:developers mydir/

Menggunakan chgrp

Perintah chgrp mengubah hanya grup:

# Ubah grup
sudo chgrp developers file.txt
 
# Ubah grup secara rekursif
sudo chgrp -R developers mydir/

Perubahan Kepemilikan Rekursif

Ketika mengubah kepemilikan secara rekursif, berhati-hatilah:

# Ubah kepemilikan semua file di direktori
sudo chown -R alice:developers /var/www/myapp
 
# Ubah kepemilikan tetapi pertahankan symlinks
sudo chown -R -h alice:developers /var/www/myapp
 
# Ubah kepemilikan file saja (bukan direktori)
find /var/www/myapp -type f -exec sudo chown alice:developers {} \;

Izin Lanjutan

Selain read, write, dan execute dasar, Linux memiliki tiga izin khusus:

Setuid (Set User ID)

Ketika setuid diatur pada file executable, program berjalan sebagai owner file, bukan pengguna yang menjalankannya.

Representasi numerik: 4 (ditambahkan ke digit pertama)

plaintext
-rwsr-xr-x  (4755)
  ^
  Setuid bit

Kasus penggunaan: Program yang memerlukan privilege yang ditinggikan

bash
# Perintah passwd berjalan sebagai root bahkan ketika dijalankan oleh pengguna biasa
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68208 Feb 20 10:30 /usr/bin/passwd
 
# Atur setuid
chmod u+s /usr/bin/myprogram
chmod 4755 /usr/bin/myprogram

Peringatan keamanan: Program setuid adalah vektor serangan umum. Hanya gunakan jika diperlukan.

Setgid (Set Group ID)

Ketika setgid diatur pada file executable, program berjalan sebagai grup file. Ketika diatur pada direktori, file baru yang dibuat di direktori itu mewarisi grup direktori.

Representasi numerik: 2 (ditambahkan ke digit pertama)

plaintext
-rwxr-sr-x  (2755)
     ^
     Setgid bit

Kasus penggunaan: Direktori bersama di mana file harus termasuk dalam grup tertentu

bash
# Buat direktori bersama
mkdir /var/shared
sudo chown root:developers /var/shared
sudo chmod g+s /var/shared
 
# File baru yang dibuat di sini akan termasuk dalam grup 'developers'
touch /var/shared/file.txt
ls -l /var/shared/file.txt
-rw-r--r-- 1 alice developers 0 Feb 20 10:30 file.txt

Sticky Bit

Ketika sticky bit diatur pada direktori, hanya owner file (atau root) yang dapat menghapus file di direktori itu, bahkan jika orang lain memiliki izin write.

Representasi numerik: 1 (ditambahkan ke digit pertama)

plaintext
drwxrwxrwt  (1777)
        ^
        Sticky bit

Kasus penggunaan: Direktori sementara bersama seperti /tmp

bash
# Atur sticky bit
chmod o+t /tmp
chmod 1777 /tmp
 
# Sekarang hanya owner file yang dapat menghapus file mereka
ls -ld /tmp
drwxrwxrwt 10 root root 4096 Feb 20 10:30 /tmp

Contoh Izin Khusus

# Atur setuid
chmod u+s /usr/bin/myprogram
chmod 4755 /usr/bin/myprogram
 
# Atur setgid
chmod g+s /var/shared
chmod 2755 /var/shared
 
# Atur sticky bit
chmod o+t /tmp
chmod 1777 /tmp
 
# Hapus izin khusus
chmod u-s /usr/bin/myprogram
chmod g-s /var/shared
chmod o-t /tmp

Access Control Lists (ACLs)

Apa itu ACLs?

ACLs (Access Control Lists) menyediakan kontrol izin yang lebih granular di luar model owner/group/other dasar. Mereka memungkinkan Anda memberikan izin tertentu kepada pengguna atau grup tertentu.

Kasus penggunaan: Ketika Anda perlu memberikan izin kepada beberapa pengguna tanpa membuat grup, atau ketika izin tidak sesuai dengan model standar.

Menetapkan ACLs

# Berikan izin read kepada pengguna tertentu
setfacl -m u:alice:r file.txt
 
# Berikan read dan write kepada pengguna tertentu
setfacl -m u:alice:rw file.txt
 
# Berikan izin kepada grup
setfacl -m g:developers:rx file.txt
 
# Atur ACL default untuk file baru di direktori
setfacl -d -m u:alice:rw mydir/
 
# Hapus ACL tertentu
setfacl -x u:alice file.txt
 
# Hapus semua ACLs
setfacl -b file.txt

Melihat ACLs

# Lihat ACLs untuk file
getfacl file.txt
 
# Lihat ACLs secara rekursif
getfacl -R mydir/

Kasus Penggunaan ACL

Skenario 1: Beberapa pengembang memerlukan akses ke direktori proyek

bash
# Alih-alih membuat grup, gunakan ACLs
setfacl -m u:alice:rwx /var/www/project
setfacl -m u:bob:rwx /var/www/project
setfacl -m u:charlie:rx /var/www/project  # Read-only untuk charlie

Skenario 2: Direktori log bersama di mana layanan berbeda memerlukan akses

bash
setfacl -m u:nginx:rw /var/log/shared
setfacl -m u:mysql:rw /var/log/shared
setfacl -m u:postgres:rw /var/log/shared

Sudo dan Eskalasi Privilege

Memahami sudo

sudo (superuser do) memungkinkan pengguna yang berwenang menjalankan perintah sebagai pengguna lain (biasanya root) tanpa mengetahui password root. Ini adalah cara aman untuk melakukan tugas administratif.

Mengapa sudo alih-alih login root?

  • Akuntabilitas: Log menunjukkan pengguna mana yang menjalankan perintah mana
  • Kontrol granular: Pengguna berbeda dapat memiliki izin sudo berbeda
  • Keamanan: Pengguna tidak perlu mengetahui password root
  • Audit trail: Semua perintah sudo dicatat

Mengonfigurasi sudoers

File sudoers (/etc/sudoers) mengontrol siapa yang dapat menggunakan sudo dan apa yang dapat mereka lakukan. Selalu edit dengan visudo, bukan editor biasa:

# Edit file sudoers (selalu gunakan visudo)
sudo visudo
 
# Tambahkan pengguna ke sudoers (akses sudo penuh)
# Tambahkan baris ini ke /etc/sudoers:
alice ALL=(ALL) ALL
 
# Izinkan perintah tertentu tanpa password
# Tambahkan baris ini:
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl
 
# Izinkan grup untuk menggunakan sudo
%developers ALL=(ALL) ALL

Sintaks sudoers: user HOST=(runuser) COMMAND

  • user: Username atau grup (awali dengan % untuk grup)
  • HOST: Host mana ini berlaku (biasanya ALL)
  • runuser: Pengguna mana untuk menjalankan sebagai (biasanya ALL)
  • COMMAND: Perintah mana yang diizinkan (biasanya ALL)

Menggunakan sudo dengan Aman

# Jalankan perintah sebagai root
sudo systemctl restart nginx
 
# Jalankan perintah sebagai pengguna tertentu
sudo -u alice whoami
 
# Jalankan perintah sebagai root dengan variabel lingkungan
sudo -E mycommand
 
# Daftar izin sudo untuk pengguna saat ini
sudo -l
 
# Edit file sebagai root
sudo nano /etc/nginx/nginx.conf
 
# Jalankan shell interaktif sebagai root
sudo -i

Praktik Terbaik Sudo

  1. Gunakan sudo, bukan login root: Jangan pernah login sebagai root secara langsung
  2. Prinsip least privilege: Berikan hanya izin yang diperlukan
  3. Gunakan NOPASSWD dengan hemat: Hanya untuk perintah yang tidak memerlukan keamanan
  4. Audit penggunaan sudo: Periksa /var/log/auth.log untuk perintah sudo
  5. Gunakan grup: Kelola izin melalui grup, bukan pengguna individual
  6. Perintah tertentu: Izinkan perintah tertentu, bukan semua perintah
  7. Review berkala: Secara berkala tinjau konfigurasi sudoers

Contoh: Konfigurasi sudoers yang aman

plaintext
# Izinkan tim pengembang untuk restart layanan
%developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart mysql
 
# Izinkan tim ops akses sudo penuh
%ops ALL=(ALL) ALL
 
# Memerlukan password untuk perintah sensitif
alice ALL=(ALL) /usr/bin/passwd, /usr/bin/useradd, /usr/bin/userdel

Izin File dalam Praktik

Izin Web Server

Untuk aplikasi web yang dilayani oleh nginx:

bash
# Web root dimiliki oleh root, dapat dibaca oleh nginx
sudo chown root:root /var/www/myapp
sudo chmod 755 /var/www/myapp
 
# File aplikasi dapat dibaca oleh nginx
sudo chown root:root /var/www/myapp/index.php
sudo chmod 644 /var/www/myapp/index.php
 
# Direktori yang dapat ditulis untuk upload
sudo chown nginx:nginx /var/www/myapp/uploads
sudo chmod 755 /var/www/myapp/uploads
 
# File konfigurasi hanya dapat dibaca oleh root
sudo chown root:root /var/www/myapp/config.php
sudo chmod 600 /var/www/myapp/config.php

Direktori Aplikasi

Untuk aplikasi tipikal:

bash
# Direktori aplikasi
chmod 755 /opt/myapp
 
# Kode sumber (dapat dibaca oleh pengguna app)
chown appuser:appuser /opt/myapp/src
chmod 755 /opt/myapp/src
 
# Konfigurasi (hanya dapat dibaca oleh pengguna app)
chown appuser:appuser /opt/myapp/config
chmod 700 /opt/myapp/config
 
# Log (dapat ditulis oleh pengguna app)
chown appuser:appuser /var/log/myapp
chmod 755 /var/log/myapp

File Log

bash
# Direktori log
sudo chown root:root /var/log/myapp
sudo chmod 755 /var/log/myapp
 
# File log (dapat dibaca oleh root dan pengguna app)
sudo chown appuser:root /var/log/myapp/app.log
sudo chmod 640 /var/log/myapp/app.log

File Konfigurasi

bash
# Konfigurasi sensitif (hanya dapat dibaca oleh owner)
sudo chown root:root /etc/myapp/database.conf
sudo chmod 600 /etc/myapp/database.conf
 
# Konfigurasi umum (dapat dibaca oleh semua)
sudo chown root:root /etc/myapp/app.conf
sudo chmod 644 /etc/myapp/app.conf

Kesalahan Umum dan Jebakan

Menggunakan Izin 777

Kesalahan: Menetapkan izin ke 777 (rwxrwxrwx) untuk "memperbaiki" masalah izin

bash
# JANGAN LAKUKAN INI
chmod 777 /var/www/myapp
chmod 777 /etc/config.conf

Mengapa itu buruk:

  • Semua orang dapat membaca, menulis, dan menjalankan
  • Kerentanan keamanan besar
  • Memungkinkan siapa pun untuk memodifikasi file penting
  • Melanggar prinsip least privilege

Cara menghindarinya: Pahami izin apa yang benar-benar diperlukan dan atur dengan tepat.

Kepemilikan yang Tidak Benar

Kesalahan: File dimiliki oleh pengguna yang salah, menyebabkan error permission denied

bash
# File aplikasi dimiliki oleh root alih-alih pengguna app
ls -l /var/www/myapp/index.php
-rw-r--r-- 1 root root 1024 Feb 20 10:30 index.php
 
# nginx tidak dapat menulis ke direktori uploads
ls -ld /var/www/myapp/uploads
drwxr-xr-x 2 root root 4096 Feb 20 10:30 uploads

Cara menghindarinya: Pastikan file dimiliki oleh pengguna/grup yang benar untuk aplikasi.

Lupa umask

Kesalahan: Membuat file dengan izin default yang terlalu permisif

bash
# umask default membuat file yang dapat dibaca dunia
umask
0022
 
# File baru adalah 644 (rw-r--r--)
touch secret.txt
ls -l secret.txt
-rw-r--r-- 1 alice alice 0 Feb 20 10:30 secret.txt

Cara menghindarinya: Atur umask yang sesuai untuk operasi sensitif.

Aturan sudo yang Terlalu Permisif

Kesalahan: Mengizinkan pengguna menjalankan perintah apa pun dengan sudo

bash
# JANGAN LAKUKAN INI
alice ALL=(ALL) ALL
 
# Lebih baik: Perintah tertentu
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

Mengapa itu buruk: Pengguna dapat menjalankan perintah apa pun sebagai root, termasuk yang berbahaya.

Cara menghindarinya: Berikan hanya izin sudo yang diperlukan untuk perintah tertentu.

Praktik Keamanan Terbaik

Prinsip Least Privilege

Berikan pengguna dan proses hanya izin minimum yang mereka butuhkan:

  • Pengguna tidak boleh menjadi root
  • Aplikasi harus berjalan sebagai pengguna khusus
  • File tidak boleh dapat dibaca dunia kecuali diperlukan
  • Direktori tidak boleh dapat ditulis dunia kecuali diperlukan
bash
# Baik: Izin minimal
-rw------- 1 appuser appuser config.conf
drwxr-xr-x 2 appuser appuser /opt/myapp
 
# Buruk: Terlalu permisif
-rw-rw-rw- 1 appuser appuser config.conf
drwxrwxrwx 2 appuser appuser /opt/myapp

Audit Izin Berkala

Secara berkala periksa masalah izin:

bash
# Temukan file yang dapat ditulis dunia
find / -type f -perm -002 2>/dev/null
 
# Temukan file sensitif yang dapat dibaca dunia
find /etc -type f -perm -004 2>/dev/null
 
# Temukan file setuid
find / -type f -perm -4000 2>/dev/null
 
# Temukan file yang dimiliki oleh pengguna yang dihapus
find / -nouser 2>/dev/null

Memantau Perubahan Izin

Gunakan alat untuk mendeteksi perubahan izin yang tidak sah:

bash
# Pantau perubahan file dengan auditd
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
 
# Lihat log audit
sudo ausearch -k passwd_changes

Penanganan File yang Aman

Ketika membuat file sensitif:

bash
# Buat file dengan izin yang ketat
touch secret.txt
chmod 600 secret.txt
 
# Atau gunakan umask
umask 0077
touch secret.txt  # Akan menjadi 600
 
# Untuk direktori
mkdir -p secure_dir
chmod 700 secure_dir

Kapan Menggunakan Izin Lanjutan

Setuid untuk Alat Sistem

Gunakan setuid ketika pengguna biasa perlu menjalankan perintah istimewa:

bash
# passwd perlu memodifikasi /etc/shadow (hanya root)
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68208 Feb 20 10:30 /usr/bin/passwd
 
# ping memerlukan akses raw socket (hanya root)
ls -l /usr/bin/ping
-rwsr-xr-x 1 root root 64424 Feb 20 10:30 /usr/bin/ping

Kapan menggunakan: Hanya untuk utilitas sistem terpercaya yang benar-benar memerlukan privilege yang ditinggikan.

Setgid untuk Direktori Bersama

Gunakan setgid ketika file yang dibuat di direktori harus termasuk dalam grup tertentu:

bash
# Direktori proyek bersama
mkdir /var/projects/myproject
chown root:developers /var/projects/myproject
chmod g+s /var/projects/myproject
 
# File baru secara otomatis termasuk dalam grup 'developers'
touch /var/projects/myproject/file.txt
ls -l /var/projects/myproject/file.txt
-rw-r--r-- 1 alice developers 0 Feb 20 10:30 file.txt

Kapan menggunakan: Direktori bersama di mana kepemilikan grup yang konsisten penting.

ACLs untuk Skenario Kompleks

Gunakan ACLs ketika izin standar tidak sesuai:

bash
# Beberapa pengguna memerlukan izin berbeda
setfacl -m u:alice:rwx /var/shared
setfacl -m u:bob:rx /var/shared
setfacl -m u:charlie:rw /var/shared

Kapan menggunakan: Persyaratan izin kompleks yang tidak sesuai dengan model owner/group/other.

Poin-Poin Kunci

  • Pengguna dan grup adalah fondasi keamanan Linux: Setiap proses berjalan sebagai pengguna, dan izin ditegakkan berdasarkan identitas pengguna
  • Izin memiliki tiga kategori: Owner, grup, dan other—masing-masing dengan izin read, write, dan execute
  • Notasi numerik lebih cepat: 755, 644, 600 adalah pola izin umum
  • Kepemilikan penting: File harus dimiliki oleh pengguna yang benar agar aplikasi berfungsi
  • Prinsip least privilege: Berikan hanya izin yang diperlukan, jangan pernah gunakan 777
  • sudo lebih aman daripada login root: Gunakan sudo untuk tugas administratif, bukan login root
  • Izin lanjutan ada untuk kasus penggunaan tertentu: Setuid, setgid, dan ACLs menyelesaikan skenario izin kompleks
  • Audit izin secara berkala: Periksa file yang terlalu permisif dan perubahan yang tidak sah

Langkah Selanjutnya

  1. Buat pengguna dan grup: Praktikkan membuat pengguna dan grup di sistem Anda
  2. Bereksperimen dengan izin: Gunakan chmod dan chown untuk mengubah izin
  3. Audit sistem Anda: Temukan file yang terlalu permisif menggunakan perintah di episode ini
  4. Konfigurasi sudo: Atur aturan sudo untuk tim atau kasus penggunaan Anda
  5. Lanjutkan seri: Pindah ke Episode 4: Fondasi Shell & Bash untuk mempelajari scripting shell

Memahami izin sangat penting untuk keamanan Linux. Setiap insiden produksi yang melibatkan "permission denied" atau "permission too open" dapat dilacak kembali ke konsep-konsep ini.


Siap untuk episode berikutnya? Lanjutkan dengan Episode 4: Fondasi Shell & Bash untuk menguasai shell dan memulai perjalanan Anda ke bash scripting.


Related Posts