Kelola User, Group & Permission di Linux
Panduan Kelola User, Group, dan Permission (chmod, chown, ACL)
Hai, pernah nggak kamu mengalami situasi dimana beberapa orang harus sharing akses ke server yang sama, tapi kamu khawatir tentang keamanan datanya? Atau mungkin kamu bingung kenapa script yang sudah dibuat tidak bisa di-execute? Atau yang lebih serius, ada file konfigurasi penting yang ternyata bisa diubah oleh user biasa?
Kalau iya, kamu sedang menghadapi salah satu aspek paling fundamental dalam administrasi sistem Linux: manajemen user, group, dan permission. Ini seperti sistem keamanan gedung bertingkat - kamu perlu mengatur siapa yang boleh masuk lantai mana, ruangan mana yang bisa diakses, dan apa yang boleh dilakukan di dalamnya.
Memahami Konsep Dasar: User, Group, dan Permission
Bayangkan sebuah perusahaan:
User = Karyawan individu
Group= Departemen (IT, Marketing, HR)
Permission= Hak akses ke ruangan dan file
Setiap user pasti menjadi anggota minimal satu group (primary group), dan bisa jadi anggota multiple groups (secondary groups).
Permission di Linux dibagi menjadi tiga level:
· Owner (pemilik file)
· Group (anggota group yang terkait)
· Others (semua user lain)
Dan untuk setiap level, ada tiga jenis permission:
· r (read) - bisa baca file/list directory
· w (write) - bisa modifikasi file/hapus file di directory
· x (execute) - bisa jalankan file/masuk ke directory
Manajemen User: Membuat, Memodifikasi, dan Menghapus
Membuat User Baru:
```bash
sudo useradd -m -s /bin/bash john
```
· -m = buat home directory
· -s = set default shell
Set Password untuk User:
```bash
sudo passwd john
```
Cara Lebih Modern (useradd vs adduser):
```bash
# Di Ubuntu/Debian, adduser lebih user-friendly
sudo adduser john
```
Memodifikasi User:
```bash
sudo usermod -aG developers john # Tambah ke group
sudo usermod -s /bin/zsh john # Ganti shell
sudo usermod -L john # Lock account
sudo usermod -U john # Unlock account
```
Menghapus User:
```bash
sudo userdel john # Hapus user saja
sudo userdel -r john # Hapus user + home directory
```
Melihat Informasi User:
```bash
id john # Lihat UID, GID, dan groups
whoami # Lihat user saat ini
who # Lihat user yang logged in
w # Info detail user yang logged in
```
Manajemen Group: Organisasi yang Terstruktur
Membuat Group:
```bash
sudo groupadd developers
sudo groupadd admins
```
Menambah User ke Group:
```bash
sudo usermod -aG developers john
sudo usermod -aG admins john
```
· -aG = append to group (penting agar tidak remove existing groups)
Melihat Members Group:
```bash
getent group developers
```
Menghapus Group:
```bash
sudo groupdel developers
```
Mengganti Primary Group:
```bash
sudo usermod -g developers john
```
Understanding File Permissions dengan ls -l
Coba jalankan:
```bash
ls -l
```
Outputnya seperti:
```
-rwxr-xr-- 1 john developers 2048 Jan 15 10:30 script.sh
drwxr-x--- 2 john admins 4096 Jan 15 10:25 confidential/
```
Breakdown format:
· First character: - untuk file, d untuk directory, l untuk symbolic link
· Next 9 characters: Permission dalam 3 groups (owner|group|others)
· Number: Link count
· First name: Owner
· Second name: Group
· Size: Dalam bytes
· Date & Time: Last modification
· Name: Nama file/directory
Menguasai chmod: Mengubah Permission
Metode Numeric (Octal):
```bash
chmod 755 script.sh
```
· 7 = owner: rwx (4+2+1)
· 5 = group: r-x (4+0+1)
· 5 = others: r-x (4+0+1)
Angka permission:
· 4 = read (r)
· 2 = write (w)
· 1 = execute (x)
· 0 = no permission
Contoh kombinasi umum:
· 755 = rwxr-xr-x (executable untuk semua)
· 644 = rw-r--r-- (read-only untuk group & others)
· 750 = rwxr-x--- (executable, group bisa read/execute)
· 700 = rwx------ (hanya owner yang bisa akses)
Metode Symbolic:
```bash
chmod u+x script.sh # Tambah execute untuk owner
chmod g-w file.txt # Hapus write permission untuk group
chmod o=r file.txt | Set others hanya read
chmod a+x script.sh # Tambah execute untuk semua (a=all)
chmod u=rwx,g=rx,o= file.sh | Set specific untuk masing-masing
```
Recursive Permission:
```bash
chmod -R 755 directory/ # Apply ke semua file/subdirectory
```
Menguasai chown: Mengubah Ownership
Mengubah owner:
```bash
sudo chown john file.txt
```
Mengubah group:
```bash
sudo chgrp developers file.txt
# atau
sudo chown :developers file.txt
```
Mengubah owner dan group sekaligus:
```bash
sudo chown john:developers file.txt
```
Recursive ownership:
```bash
sudo chown -R john:developers project/
```
Special Permissions: setuid, setgid, sticky bit
setuid (Set User ID):
```bash
chmod u+s /usr/bin/passwd
```
Program dijalankan dengan privilege owner (biasanya root)
setgid (Set Group ID):
```bash
chmod g+s /shared/directory
```
File baru dalam directory mewarisi group directory (bukan primary group user)
sticky bit:
```bash
chmod +t /tmp
```
File dalam directory hanya bisa dihapus oleh ownernya (meski directory writable oleh others)
Advanced: Access Control Lists (ACL)
ACL memberikan kontrol permission yang lebih granular.
Cek apakah filesystem support ACL:
```bash
mount | grep acl
```
Install ACL tools:
```bash
# Ubuntu/Debian
sudo apt install acl
# CentOS/RHEL
sudo yum install acl
```
Melihat ACL:
```bash
getfacl file.txt
```
Mengatur ACL:
```bash
# Beri user john read/write access
setfacl -m u:john:rw file.txt
# Beri group developers read access
setfacl -m g:developers:r file.txt
# Hapus specific ACL entry
setfacl -x u:john file.txt
# Set default ACL untuk directory (diwarisi file baru)
setfacl -dm u:john:rw shared_dir/
```
Contoh ACL untuk collaborative directory:
```bash
mkdir /shared-project
sudo chown root:developers /shared-project
sudo chmod 2770 /shared-project # setgid + rwx untuk owner & group
setfacl -dm u::rwx,g::rwx,o::--- /shared-project # Default ACL
```
Workflow Praktis untuk Berbagai Scenario
Scenario 1: Web Server Directory
```bash
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} \; # File jadi 644
sudo find /var/www/html -type d -exec chmod 755 {} \; # Directory jadi 755
```
Scenario 2: Shared Folder untuk Team
```bash
# Buat shared directory
sudo mkdir /shared-team
sudo groupadd team-alpha
sudo chown root:team-alpha /shared-team
sudo chmod 2775 /shared-team # setgid untuk inherit group
# Tambah users ke group
sudo usermod -aG team-alpha user1
sudo usermod -aG team-alpha user2
# Set ACL untuk flexibility
setfacl -dm g:team-alpha:rwx /shared-team
```
Scenario 3: Secure Home Directory
```bash
# Pastikan home directory aman
sudo chmod 700 /home/john
sudo chown john:john /home/john
```
Scenario 4: Executable Script
```bash
chmod +x script.sh
# atau lebih spesifik
chmod 755 script.sh
```
Best Practices dan Security Considerations
1. Principle of Least Privilege: Beri hanya permission yang diperlukan
2. Regular Audit: Periodic check user accounts dan permissions
3. Use Groups: Lebih mudah manage permission via groups daripada individual users
4. Secure Defaults: Home directory harus 700, system files strict permission
5. Monitor sudo Access: Batasi user yang punya sudo privilege
Monitoring dan Maintenance
Cek user tanpa password:
```bash
sudo getent shadow | grep '^[^:]*::'
```
Cek user yang bisa sudo:
```bash
getent group sudo
getent group wheel # Untuk RHEL/CentOS
```
Cek file dengan permission tidak biasa:
```bash
# File world-writable
find / -perm -o=w ! -type l 2>/dev/null
# File dengan setuid
find / -perm -u=s -type f 2>/dev/null
# File dengan setgid
find / -perm -g=s -type f 2>/dev/null
```
Cek home directory permission:
```bash
ls -ld /home/*
```
Troubleshooting Common Issues
"Permission denied"
· Cek ownership: ls -l file
· Cek permission: ls -l file
· Cek group membership: groups username
Script tidak bisa di-execute
```bash
chmod +x script.sh
```
Tidak bisa delete file di directory
· Butuh write permission di directory, bukan di file
ACL tidak bekerja
· Pastikan filesystem mounted dengan acl option
· Cek di /etc/fstab
User tidak bisa login
· Cek account status: sudo passwd -S username
· Cek shell: getent passwd username
Kesimpulan
Manajemen user, group, dan permission adalah fondasi keamanan sistem Linux. Dengan memahami chmod, chown, dan ACL, kamu bisa:
· Mengamankan sistem dari akses tidak authorized
· Mengkolaborasikan work dalam team dengan aman
· Memecahkan masalah permission-related issues
· Mengoptimalkan workflow administratif
Yang penting diingat: selalu gunakan principle of least privilege, dokumentasi perubahan, dan lakukan regular audit. Dengan practice yang konsisten, management permission akan menjadi second nature dalam administrasi sistem Linux.
.jpg) Reviewed by Sabila
        on 
        
19.36
 
        Rating:
 
        Reviewed by Sabila
        on 
        
19.36
 
        Rating: 
 
.jpg)
 
 
 
 
 
Tidak ada komentar: