Pertemuan 3

Manajemen Hak Akses File dan Direktori di Linux

Mengelola permission file sistem Linux dengan chmod, chown, dan chgrp

Tujuan Pembelajaran

Setelah menyelesaikan praktikum ini, mahasiswa mampu:

  • Memahami konsep hak akses file dan direktori dalam sistem Linux
  • Menggunakan perintah chmod, chown, dan chgrp untuk mengelola hak akses
  • Menerapkan hak akses numerik (octal) dan simbolik
  • Mengkonfigurasi hak akses untuk keamanan sistem yang tepat

Teori Pendukung

Konsep Dasar Hak Akses Linux
User/Owner (u)

Pemilik file/direktori

Group (g)

Anggota grup pemilik

Others (o)

Pengguna lain

Jenis Hak Akses
Simbol Nilai File Direktori
r (read) 4 Membaca isi file Melihat daftar file
w (write) 2 Mengubah isi file Membuat/hapus file
x (execute) 1 Menjalankan file Masuk ke direktori
Representasi Hak Akses
Format Simbolik
rwxr-xr--
rwx (user) | r-x (group) | r-- (others)
Format Numerik (Octal)
754
7 (user) | 5 (group) | 4 (others)
Konversi Numerik ke Simbolik
Numerik Simbolik Kalkulasi Deskripsi
7 rwx 4+2+1 Read + Write + Execute
6 rw- 4+2+0 Read + Write
5 r-x 4+0+1 Read + Execute
4 r-- 4+0+0 Read only
3 -wx 0+2+1 Write + Execute
2 -w- 0+2+0 Write only
1 --x 0+0+1 Execute only
0 --- 0+0+0 No access

Perintah Manajemen Hak Akses

1. ls -l - Melihat Hak Akses
ls -l filename
ls -la # Lihat semua file termasuk hidden

# Contoh output:
-rwxr-xr-x 1 user group 2048 Dec 19 10:30 script.sh
drwxr-xr-x 2 user group 4096 Dec 19 10:30 directory

# Penjelasan output:
-rwxr-xr-x # Permission (file: -, directory: d)
1 # Jumlah hard links
user # Owner
group # Group owner
2. chmod - Mengubah Hak Akses
Metode Simbolik
chmod [who][operator][permissions] file

# Who: u(user), g(group), o(others), a(all)
# Operator: +(add), -(remove), =(set)
# Permissions: r(read), w(write), x(execute)

# Contoh:
chmod u+x script.sh # Tambah execute untuk owner
chmod go-w file.txt # Hapus write untuk group dan others
chmod a+r file.txt # Tambah read untuk semua
chmod u=rwx,g=rx,o=r file.txt # Set specific permissions
Metode Numerik
chmod [mode] file

# Contoh:
chmod 755 script.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 700 secret.txt # rwx------ (hanya owner)
chmod 750 directory # rwxr-x--- (owner full, group read/execute)
3. chown - Mengubah Kepemilikan
chown [owner][:group] file

# Contoh:
chown user1 file.txt # Ubah owner
chown :group1 file.txt # Ubah group
chown user1:group1 file.txt # Ubah owner dan group
chown -R user1:group1 directory # Rekursif (semua file dalam direktori)
4. chgrp - Mengubah Group
chgrp [group] file

# Contoh:
chgrp developers script.sh
chgrp -R www-data /var/www # Rekursif
5. umask - Default Permissions
umask # Lihat current umask
umask 022 # Set umask baru

# Perhitungan default permission:
# File: 666 - umask
# Directory: 777 - umask
# Contoh umask 022:
# File: 666 - 022 = 644 (rw-r--r--)
# Directory: 777 - 022 = 755 (rwxr-xr-x)

Langkah-langkah Praktikum

A. Persiapan Environment
# Login sebagai root
sudo -i

# Buat struktur direktori dan file untuk praktikum
mkdir -p /praktikum3/{data,backup,scripts}
touch /praktikum3/data/file1.txt /praktikum3/data/file2.log
touch /praktikum3/scripts/script.sh

# Isi konten file
echo "Ini adalah file1.txt" > /praktikum3/data/file1.txt
echo "Ini adalah script.sh" > /praktikum3/scripts/script.sh
echo "#!/bin/bash" >> /praktikum3/scripts/script.sh
echo "echo 'Hello World'" >> /praktikum3/scripts/script.sh
B. Analisis Hak Akses Default
# Lihat hak akses default
ls -l /praktikum3/
ls -l /praktikum3/data/
ls -l /praktikum3/scripts/

# Analisis output ls -l:
drwxr-xr-x 2 root root 4096 Mar 15 10:00 data
-rw-r--r-- 1 root root 20 Mar 15 10:00 file1.txt

# Kolom 1: jenis file dan hak akses
# Kolom 2: jumlah hard link
# Kolom 3: pemilik (user)
# Kolom 4: grup pemilik
# Kolom 5: ukuran file
C. Menggunakan Perintah chmod
Metode Simbolik
# File hanya bisa dibaca oleh semua
chmod a-w /praktikum3/data/file1.txt
ls -l /praktikum3/data/file1.txt

# Berikan izin execute untuk owner
chmod u+x /praktikum3/scripts/script.sh
ls -l /praktikum3/scripts/script.sh

# Hanya owner yang boleh write, semua boleh read
chmod go-w /praktikum3/data/file2.log
ls -l /praktikum3/data/file2.log
Metode Numerik
# Hak akses 755 (rwxr-xr-x)
chmod 755 /praktikum3/scripts/script.sh
ls -l /praktikum3/scripts/script.sh

# Hak akses 644 (rw-r--r--)
chmod 644 /praktikum3/data/file1.txt
ls -l /praktikum3/data/file1.txt

# Hak akses 700 (rwx------) - hanya owner
chmod 700 /praktikum3/backup/
ls -ld /praktikum3/backup/ # -d untuk lihat direktori sendiri
D. Menggunakan chown dan chgrp
# Buat user dan grup baru
useradd -m user1
useradd -m user2
groupadd kelompok1
usermod -aG kelompok1 user1
usermod -aG kelompok1 user2

# Ubah kepemilikan file
chown user1 /praktikum3/data/file1.txt
ls -l /praktikum3/data/file1.txt

# Ubah grup file2.log
chgrp kelompok1 /praktikum3/data/file2.log
ls -l /praktikum3/data/file2.log

# Ubah owner dan grup sekaligus
chown user1:kelompok1 /praktikum3/scripts/script.sh
ls -l /praktikum3/scripts/script.sh
E. Testing Hak Akses
# Login sebagai user1
su - user1

# Test akses file
cat /praktikum3/data/file1.txt # Sebagai owner
echo "Test oleh user1" >> /praktikum3/data/file1.txt
/praktikum3/scripts/script.sh # Test execute script
ls /praktikum3/backup/ # Test akses direktori

# Kembali ke root
exit

Special Permissions

1. SUID (Set User ID)
Perhatian: SUID bisa berbahaya jika tidak dikonfigurasi dengan benar!
# SUID menyebabkan program dijalankan dengan hak owner
chmod u+s file
chmod 4755 file # Numerik: tambah 4000

# Contoh: /usr/bin/passwd
ls -l /usr/bin/passwd
# Output: -rwsr-xr-x 1 root root ...
# 's' di user execute position menunjukkan SUID
2. SGID (Set Group ID)
# SGID pada file: dijalankan dengan hak group
# SGID pada direktori: file baru mewarisi group parent
chmod g+s directory
chmod 2755 directory # Numerik: tambah 2000
3. Sticky Bit
# Sticky bit pada direktori: hanya owner yang bisa hapus file
chmod +t directory
chmod 1755 directory # Numerik: tambah 1000

# Contoh: /tmp directory
ls -ld /tmp
# Output: drwxrwxrwt ...
# 't' di others execute position menunjukkan sticky bit
Special Permissions Numeric Values
Permission Simbol Nilai Contoh
SUID s atau S 4 4755
SGID s atau S 2 2755
Sticky Bit t atau T 1 1755

Implementasi Keamanan File Sensitif

# Buat file password sensitif
echo "username: secretpassword" > /praktikum3/secret.txt

# Atur hak akses yang aman: hanya root yang boleh baca/tulis
chmod 600 /praktikum3/secret.txt
chown root:root /praktikum3/secret.txt

# Verifikasi
ls -l /praktikum3/secret.txt
# Output: -rw------- 1 root root ...
Best Practices untuk Keamanan File
Rekomendasi Permission
  • Config files: 644 (rw-r--r--)
  • Scripts: 755 (rwxr-xr-x)
  • Sensitive data: 600 (rw-------)
  • Web root: 755 untuk direktori, 644 untuk file
  • Home directories: 700 (rwx------)
Permission Berbahaya
  • 777 - Semua orang bisa everything
  • 666 - Semua orang bisa baca/tulis
  • SUID pada script - Security risk
  • World-writable system files
  • Execute permission pada data files

Tugas dan Evaluasi

  1. Apa perbedaan antara hak akses 755 dan 750?
  2. Mengapa file script perlu memiliki hak akses execute?
  3. Apa yang terjadi jika direktori tidak memiliki hak akses x (execute)?
  4. Bagaimana cara memberikan hak akses rw-r----- dalam format numerik?
  5. Scenario: Anda memiliki file konfigurasi /etc/aplikasi.conf yang hanya boleh dibaca oleh root dan anggota grup admin. Tulis perintah lengkapnya!

Quick Reference

Common Permission Patterns
Numerik Simbolik Keterangan
777 rwxrwxrwx Full access for everyone (dangerous)
755 rwxr-xr-x Owner full, others read/execute
750 rwxr-x--- Owner full, group read/execute, others none
644 rw-r--r-- Owner read/write, others read only
640 rw-r----- Owner read/write, group read only
600 rw------- Owner read/write only
400 r-------- Owner read only
Important Directories and Their Permissions
/ # 755 (rwxr-xr-x)
/etc # 755 (rwxr-xr-x)
/home # 755 (rwxr-xr-x)
/tmp # 1777 (rwxrwxrwt) - dengan sticky bit
/var # 755 (rwxr-xr-x)
/root # 550 (r-xr-x---) - hanya root dan group root