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.


Kelola User, Group & Permission di Linux Kelola User, Group & Permission di Linux Reviewed by Sabila on 19.36 Rating: 5

Tidak ada komentar: