ABDURROZAK
HOME ABOUT ME MICROSITE KONTAK PERSEMBAHAN HELP
ABDURROZAK.MY.ID // DEBIAN LINUX SERVER FUNDAMENTAL

USER, GROUP &PERMISSION MANAGEMENT

Volume 05 dari seri Debian Linux Server Fundamental. Panduan komprehensif manajemen user, group, dan permission di Linux. Setiap command dijelaskan detail dengan syntax, parameter, contoh penggunaan, dan output. Dari konsep dasar user/group hingga sudo dan privilege escalation.

VOLUME05 / 17
SUB-BAB8
BACA90 MENIT
USER100%
ABDUR ROZAK, S.Kom. Web Developer & System Administrator - abdurrozak.my.id
VOLUME 05 / 17

USER, GROUP & PERMISSION MANAGEMENT

Panduan lengkap user, group, dan permission management di Debian Linux. 8 sub-bab mencakup konsep user & group, membuat dan menghapus user, password management, permission rwx, chmod, chown, chgrp, hingga sudo dan privilege escalation. Setiap command disertai penjelasan detail dan contoh praktis.
SUB-BAB8 LEVELUser & Permission WAKTU90 MENIT
01
SUB-BAB 01 KONSEP

KONSEP USER & GROUP

Apa Itu User?

User (pengguna) adalah akun yang digunakan untuk mengakses sistem Linux. Setiap user memiliki identitas unik (username), home directory, shell, dan permission tertentu. Linux adalah sistem multi-user, artinya banyak user bisa login dan menggunakan sistem secara bersamaan.

Jenis User di Linux

JENIS USERUIDKARAKTERISTIK
root0Superuser, akses penuh ke sistem
System User1-999User untuk service/daemon (sshd, www-data, dll)
Regular User1000+User biasa untuk manusia

Konsep Group

Group adalah kumpulan user yang dikelompokkan untuk memudahkan manajemen permission. Setiap user memiliki:

PRIMARY GROUP
Group utama user (biasanya sama dengan username)
SUPPLEMENTARY GROUPS
Group tambahan yang user bisa jadi member

File Konfigurasi User & Group

FILEFUNGSIISI
/etc/passwdInformasi userusername, UID, GID, home, shell
/etc/shadowPassword user (encrypted)Hash password, expiry
/etc/groupInformasi groupgroup name, GID, members
/etc/gshadowPassword groupGroup password

Melihat Informasi User

bash
# Lihat isi /etc/passwd admin@web-server:~$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin admin:x:1000:1000:Admin User:/home/admin:/bin/bash # Format: username:password:UID:GID:comment:home:shell # Lihat user yang sedang login admin@web-server:~$ who admin tty1 2026-09-07 10:30 # Lihat siapa saya admin@web-server:~$ whoami admin # Lihat ID user dan group admin@web-server:~$ id uid=1000(admin) gid=1000(admin) groups=1000(admin),27(sudo) # Lihat group user admin@web-server:~$ groups admin sudo # Lihat group untuk user tertentu admin@web-server:~$ groups username username : username developers

Melihat Informasi Group

bash
# Lihat isi /etc/group admin@web-server:~$ cat /etc/group root:x:0: sudo:x:27:admin developers:x:1001:admin,developer1,developer2 # Format: groupname:password:GID:members # Lihat semua group admin@web-server:~$ cut -d: -f1 /etc/group root daemon sudo developers
TIPS: File /etc/passwd bisa dibaca semua user, tapi /etc/shadow hanya bisa dibaca oleh root. Ini untuk keamanan password.
KOMPETENSI SUB-BAB 01
  • Memahami konsep user dan group di Linux
  • Membedakan root, system user, dan regular user
  • Mampu melihat informasi user dan group
  • Memahami file konfigurasi /etc/passwd, /etc/shadow, /etc/group
02
SUB-BAB 02 USER MANAGEMENT

MEMBUAT & MENGHAPUS USER

Membuat User Baru

useradd
Buat user baru
sudo useradd [options] username
OPTIONFUNGSICONTOH
-mBuat home directoryuseradd -m username
-sSet default shelluseradd -s /bin/bash username
-gSet primary groupuseradd -g developers username
-GTambah ke supplementary groupsuseradd -G sudo,docker username
-cComment (full name)useradd -c "John Doe" username
-dSet home directory customuseradd -d /custom/home username
-eSet expiry dateuseradd -e 2026-12-31 username
bash
# Buat user sederhana admin@web-server:~$ sudo useradd -m -s /bin/bash newuser # Buat user dengan full name admin@web-server:~$ sudo useradd -m -s /bin/bash -c "John Doe" john # Buat user dengan group dan supplementary groups admin@web-server:~$ sudo useradd -m -s /bin/bash -g developers -G sudo,sudo docker dev1 # Buat user dengan expiry date admin@web-server:~$ sudo useradd -m -s /bin/bash -e 2026-12-31 tempuser # Verifikasi user dibuat admin@web-server:~$ id newuser uid=1001(newuser) gid=1001(newuser) groups=1001(newuser) admin@web-server:~$ ls -la /home/newuser total 24 drwxr-xr-x 2 newuser newuser 4096 Sep 7 10:30 . drwxr-xr-x 4 root root 4096 Sep 7 10:30 .. -rw-r--r-- 1 newuser newuser 220 Sep 7 10:30 .bash_logout -rw-r--r-- 1 newuser newuser 3771 Sep 7 10:30 .bashrc -rw-r--r-- 1 newuser newuser 807 Sep 7 10:30 .profile
TIPS: Option -m penting untuk membuat home directory dengan file konfigurasi default (.bashrc, .profile, dll). Tanpa -m, user tidak punya home directory.

Modifikasi User

usermod
Modifikasi user yang sudah ada
sudo usermod [options] username
bash
# Tambah user ke group sudo admin@web-server:~$ sudo usermod -aG sudo username ↳ -a = append (tambah tanpa hapus dari group lain) ↳ -G = supplementary group # Tambah user ke multiple groups admin@web-server:~$ sudo usermod -aG sudo,docker,developers username # Ganti shell user admin@web-server:~$ sudo usermod -s /bin/zsh username # Ganti home directory admin@web-server:~$ sudo usermod -d /new/home -m username ↳ -m = move konten home lama ke home baru # Lock account (tidak bisa login) admin@web-server:~$ sudo usermod -L username # Unlock account admin@web-server:~$ sudo usermod -U username # Set expiry date admin@web-server:~$ sudo usermod -e 2026-12-31 username # Verifikasi perubahan admin@web-server:~$ id username uid=1001(username) gid=1001(username) groups=1001(username),27(sudo),998(docker) admin@web-server:~$ grep username /etc/passwd username:x:1001:1001:User Name:/home/username:/bin/zsh
PERINGATAN: Gunakan -aG (append) saat menambah ke supplementary group. Jika hanya pakai -G, user akan dihapus dari semua supplementary group lain!

Menghapus User

userdel
Hapus user
sudo userdel [options] username
bash
# Hapus user saja (home directory tetap ada) admin@web-server:~$ sudo userdel username # Hapus user + home directory admin@web-server:~$ sudo userdel -r username ↳ -r = remove home directory dan mail spool # Hapus user + home directory (force) admin@web-server:~$ sudo userdel -rf username ↳ -f = force, bahkan jika user sedang login # Verifikasi user dihapus admin@web-server:~$ id username id: 'username': no such user admin@web-server:~$ ls /home/username ls: cannot access '/home/username': No such file or directory
PERINGATAN: userdel -r akan hapus home directory user beserta semua file di dalamnya. Pastikan backup data penting sebelum hapus user!

Best Practice User Management

DO
Gunakan username lowercase, buat user terpisah untuk service, gunakan sudo bukan login root langsung
DON'T
Jangan gunakan username sederhana (admin, user), jangan share account, jangan biarkan password kosong
KOMPETENSI SUB-BAB 02
  • Mampu membuat user baru dengan berbagai option
  • Mampu modifikasi user (group, shell, home, expiry)
  • Mampu menghapus user dengan aman
  • Memahami best practice user management
03
SUB-BAB 03 PASSWORD

PASSWORD MANAGEMENT

Mengatur Password User

passwd
Ubah password user
passwd [options] [username]
bash
# Ubah password sendiri admin@web-server:~$ passwd Changing password for admin. Current password: •••••••• New password: •••••••• Retype new password: •••••••• passwd: password updated successfully # Ubah password user lain (sebagai root) admin@web-server:~$ sudo passwd username New password: •••••••• Retype new password: •••••••• passwd: password updated successfully # Lock password (user tidak bisa login dengan password) admin@web-server:~$ sudo passwd -l username # Unlock password admin@web-server:~$ sudo passwd -u username # Expire password (user harus ganti password saat login berikutnya) admin@web-server:~$ sudo passwd -e username # Lihat status password admin@web-server:~$ sudo passwd -S username username P 09/07/2026 0 99999 7 -1 ↳ P = password aktif, L = locked, NP = no password # Set password expiry admin@web-server:~$ sudo chage -M 90 username ↳ -M = maximum days (password harus diganti setiap 90 hari) admin@web-server:~$ sudo chage -l username Last password change : Sep 07, 2026 Password expires : Dec 06, 2026 Password inactive : never Account expires : never
OPTIONFUNGSI
-lLock password
-uUnlock password
-eExpire password (force change)
-SShow password status
-dDelete password (set kosong)

Password Policy

Untuk keamanan, terapkan password policy yang kuat:

Password Policy
Konfigurasi password policy
bash
# Install libpam-pwquality untuk password strength check admin@web-server:~$ sudo apt install libpam-pwquality # Edit konfigurasi admin@web-server:~$ sudo nano /etc/security/pwquality.conf # Tambah/edit baris: minlen = 12 minclass = 3 maxrepeat = 3 reject_username # Edit login.defs untuk password aging admin@web-server:~$ sudo nano /etc/login.defs # Edit baris: PASS_MAX_DAYS 90 PASS_MIN_DAYS 1 PASS_WARN_AGE 7
SETTINGARTI
minlen = 12Minimum panjang password 12 karakter
minclass = 3Minimal 3 dari 4 class (upper, lower, digit, other)
maxrepeat = 3Maksimal 3 karakter sama berurutan
reject_usernameTolak password yang mengandung username

Tips Password Kuat

GUNAKAN
Passphrase (kalimat panjang), kombinasi huruf/angka/simbol, password manager
HINDARI
Password pendek, kata kamus, informasi personal, reuse password
BEST PRACTICE
Ganti password berkala, gunakan 2FA, jangan share password
KOMPETENSI SUB-BAB 03
  • Mampu ubah password user
  • Mampu lock/unlock/expire password
  • Mampu konfigurasi password policy
  • Memahami best practice password security
04
SUB-BAB 04 PERMISSION

PERMISSION rwx

Konsep Permission

Setiap file dan directory di Linux memiliki permission (hak akses) yang menentukan siapa yang bisa membaca, menulis, atau mengeksekusi. Permission dibagi menjadi 3 kategori:

KATEGORISIMBOLARTI
User (Owner)uPemilik file/directory
GroupgGroup pemilik file/directory
OtheroSemua orang lain

Jenis Permission

PERMISSIONSIMBOLANGKAFILEDIRECTORY
Readr4Lihat isi fileList isi directory
Writew2Modifikasi fileTambah/hapus file di directory
Executex1Jalankan file sebagai programMasuk ke directory (cd)
No Permission-0Tidak ada aksesTidak ada akses

Membaca Permission

bash
# Lihat permission file admin@web-server:~$ ls -l file.txt -rw-r--r-- 1 admin admin 1234 Sep 7 10:30 file.txt # Breakdown: - rwx rwx rwx ^ ^^^ ^^^ ^^^ | | | └─ other (semua orang lain) | | └─ group (group owner) | └─ user (owner) └─ file type (- = file, d = directory, l = symlink) # Contoh lain: admin@web-server:~$ ls -ld /home drwxr-xr-x 4 root root 4096 Sep 7 10:30 /home # d = directory # rwx = owner (root) bisa read, write, execute # r-x = group (root) bisa read, execute (tidak write) # r-x = other bisa read, execute (tidak write) admin@web-server:~$ ls -l script.sh -rwxr-xr-x 1 admin admin 1234 Sep 7 10:30 script.sh # File executable (script)

Numeric Permission

Permission bisa direpresentasikan dalam bentuk angka (octal):

PERMISSIONBINEROCTALSIMBOL
rwx1117rwx
rw-1106rw-
r-x1015r-x
r--1004r--
-wx0113-wx
-w-0102-w-
--x0011--x
---0000---
contoh numeric
# Contoh: -rw-r--r-- = 644 rw- = 6 (owner) r-- = 4 (group) r-- = 4 (other) -rwxr-xr-x = 755 rwx = 7 (owner) r-x = 5 (group) r-x = 5 (other) drwxr-xr-x = 755 (directory) rwx = 7 (owner) r-x = 5 (group) r-x = 5 (other)

Permission Umum

PERMISSIONNUMERICUSE CASE
rw-r--r--644File biasa (readable semua, writable hanya owner)
rwxr-xr-x755Directory atau executable script
rw-------600File privat (hanya owner bisa akses)
rwx------700Directory privat
rw-r-----640File group-restricted
rwxrwxr-x775Collaborative directory
rw-rw-r--664File collaborative
TIPS: Untuk directory, execute permission (x) berarti bisa masuk ke directory (cd). Tanpa execute permission, tidak bisa akses isi directory meskipun punya read permission.
KOMPETENSI SUB-BAB 04
  • Memahami konsep permission rwx
  • Mampu membaca permission dari ls -l
  • Memahami numeric permission (octal)
  • Mengetahui permission umum untuk file dan directory
05
SUB-BAB 05 CHMOD

CHMOD - MENGUBAH PERMISSION

chmod - Change Mode

chmod
Ubah permission file/directory
chmod [options] mode file

Metode 1: Numeric (Octal)

bash - numeric
# Set permission dengan angka admin@web-server:~$ chmod 755 script.sh ↳ 7 = rwx (owner), 5 = r-x (group), 5 = r-x (other) admin@web-server:~$ chmod 644 file.txt ↳ 6 = rw- (owner), 4 = r-- (group), 4 = r-- (other) admin@web-server:~$ chmod 600 secret.txt ↳ Hanya owner bisa read/write admin@web-server:~$ chmod 700 private-dir/ ↳ Hanya owner bisa akses directory # Verifikasi admin@web-server:~$ ls -l script.sh -rwxr-xr-x 1 admin admin 1234 Sep 7 10:30 script.sh

Metode 2: Symbolic

bash - symbolic
# Tambah permission admin@web-server:~$ chmod u+x script.sh ↳ u = user (owner), +x = tambah execute admin@web-server:~$ chmod g+w file.txt ↳ g = group, +w = tambah write admin@web-server:~$ chmod o+r file.txt ↳ o = other, +r = tambah read # Hapus permission admin@web-server:~$ chmod g-w file.txt ↳ -w = hapus write admin@web-server:~$ chmod o-x script.sh ↳ -x = hapus execute # Set permission (replace) admin@web-server:~$ chmod u=rwx,g=rx,o=r file.txt ↳ Set sekaligus: owner=rwx, group=rx, other=r # Untuk semua (user, group, other) admin@web-server:~$ chmod a+x script.sh ↳ a = all (u+g+o), +x = tambah execute untuk semua # Recursive (untuk directory dan isinya) admin@web-server:~$ chmod -R 755 directory/ ↳ -R = recursive, terapkan ke semua isi directory # Verifikasi admin@web-server:~$ ls -l file.txt -rwxr-xr-- 1 admin admin 1234 Sep 7 10:30 file.txt
OPTIONFUNGSI
-RRecursive (untuk directory)
-vVerbose (tampilkan perubahan)
-cChange (hanya tampilkan jika ada perubahan)

Tips chmod

GUNAKAN NUMERIC
Untuk set permission lengkap (755, 644, dll). Lebih cepat dan jelas.
GUNAKAN SYMBOLIC
Untuk modifikasi partial (tambah/hapus permission tertentu). Lebih fleksibel.
PERINGATAN: Hati-hati dengan chmod -R 777! Ini memberikan akses penuh ke semua orang dan sangat tidak aman. Gunakan permission yang sesuai kebutuhan.
KOMPETENSI SUB-BAB 05
  • Mampu gunakan chmod dengan numeric mode
  • Mampu gunakan chmod dengan symbolic mode
  • Mampu gunakan chmod recursive
  • Memahami kapan menggunakan numeric vs symbolic
06
SUB-BAB 06 CHOWN

CHOWN - MENGUBAH OWNER

chown - Change Owner

chown
Ubah owner dan/atau group file
sudo chown [options] owner[:group] file
bash
# Ubah owner saja admin@web-server:~$ sudo chown newuser file.txt # Ubah owner dan group sekaligus admin@web-server:~$ sudo chown newuser:newgroup file.txt # Ubah group saja (owner tetap) admin@web-server:~$ sudo chown :newgroup file.txt ↳ Atau gunakan: sudo chgrp newgroup file.txt # Recursive (untuk directory dan isinya) admin@web-server:~$ sudo chown -R newuser:newgroup directory/ ↳ -R = recursive, terapkan ke semua isi directory # Recursive dengan reference (gunakan owner/group dari file referensi) admin@web-server:~$ sudo chown -R --reference=reference.txt directory/ # Verifikasi admin@web-server:~$ ls -l file.txt -rw-r--r-- 1 newuser newgroup 1234 Sep 7 10:30 file.txt # Ubah owner untuk semua file di directory admin@web-server:~$ sudo chown -R www-data:www-data /var/www/html/
OPTIONFUNGSI
-RRecursive (untuk directory)
-vVerbose (tampilkan perubahan)
-cChange (hanya tampilkan jika ada perubahan)
--reference=fileGunakan owner/group dari file referensi

Contoh Penggunaan

bash - contoh
# Scenario 1: Setup web directory admin@web-server:~$ sudo mkdir /var/www/mysite admin@web-server:~$ sudo chown -R www-data:www-data /var/www/mysite admin@web-server:~$ sudo chmod -R 755 /var/www/mysite # Scenario 2: Transfer file ownership admin@web-server:~$ sudo chown developer:developers project/ # Scenario 3: Fix permission setelah copy admin@web-server:~$ sudo cp -r /home/user1/data /home/user2/ admin@web-server:~$ sudo chown -R user2:user2 /home/user2/data
TIPS: Hanya root yang bisa mengubah owner file. User biasa hanya bisa mengubah group file yang mereka miliki (ke group yang mereka jadi member).
KOMPETENSI SUB-BAB 06
  • Mampu ubah owner file/directory
  • Mampu ubah owner dan group sekaligus
  • Mampu gunakan chown recursive
  • Memahami kapan perlu sudo untuk chown
07
SUB-BAB 07 CHGRP

CHGRP - MENGUBAH GROUP

chgrp - Change Group

chgrp
Ubah group file
sudo chgrp [options] group file
bash
# Ubah group file admin@web-server:~$ sudo chgrp developers file.txt # Ubah group directory admin@web-server:~$ sudo chgrp developers project/ # Recursive admin@web-server:~$ sudo chgrp -R developers project/ # Verifikasi admin@web-server:~$ ls -l file.txt -rw-r--r-- 1 admin developers 1234 Sep 7 10:30 file.txt # Atau gunakan chown untuk ubah group admin@web-server:~$ sudo chown :developers file.txt
OPTIONFUNGSI
-RRecursive (untuk directory)
-vVerbose (tampilkan perubahan)
-cChange (hanya tampilkan jika ada perubahan)

chown vs chgrp

COMMANDFUNGSICONTOH
chownUbah owner (dan/atau group)chown user:group file
chgrpUbah group sajachgrp group file
TIPS: chown :group file
sama dengan chgrp group file
. Keduanya bisa digunakan untuk mengubah group.
KOMPETENSI SUB-BAB 07
  • Mampu ubah group file/directory dengan chgrp
  • Mampu gunakan chgrp recursive
  • Memahami perbedaan chown dan chgrp
08
SUB-BAB 08 SUDO

SUDO & PRIVILEGE ESCALATION

Konsep sudo

sudo (Super User DO) memungkinkan user biasa menjalankan command dengan privilege root (atau user lain) tanpa harus login sebagai root. Ini lebih aman karena:

AUDIT TRAIL
Setiap command sudo dicatat (siapa, kapan, apa)
LIMITED ACCESS
Bisa batasi command apa yang boleh dijalankan

Menggunakan sudo

sudo
Jalankan command sebagai root
sudo command
bash
# Jalankan command sebagai root admin@web-server:~$ sudo apt update [sudo] password for admin: •••••••• Hit:1 http://deb.debian.org/debian bookworm InRelease # Buka root shell admin@web-server:~$ sudo -i [sudo] password for admin: •••••••• root@web-server:~# ↳ Sekarang login sebagai root # Jalankan command sebagai user lain admin@web-server:~$ sudo -u username command # Lihat command apa yang boleh dijalankan admin@web-server:~$ sudo -l User admin may run the following commands on web-server: (ALL : ALL) ALL # Keluar dari root shell root@web-server:~# exit admin@web-server:~$
OPTIONFUNGSI
-iLogin shell sebagai root
-u userJalankan sebagai user tertentu
-lList command yang boleh dijalankan
-kKill timestamp (minta password lagi)
-vValidate timestamp (perpanjang timeout)

Konfigurasi sudoers

/etc/sudoers
File konfigurasi sudo
bash
# Edit sudoers (SELALU gunakan visudo!) admin@web-server:~$ sudo visudo # Atau edit file di /etc/sudoers.d/ admin@web-server:~$ sudo visudo -f /etc/sudoers.d/custom # Format: # user host=(runas) commands # Contoh: # admin ALL=(ALL:ALL) ALL # %sudo ALL=(ALL:ALL) ALL # developer ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl # Penjelasan: # admin = user # ALL = dari host manapun # (ALL:ALL) = bisa run as user dan group manapun # ALL = semua command # Contoh lain: # %developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx # Group developers bisa restart nginx tanpa password
PERINGATAN: SELALU gunakan visudo untuk edit sudoers! visudo melakukan syntax check sebelum save. Edit manual bisa lock out semua user dari sudo!

Tambah User ke Group sudo

Tambah ke sudo
Beri akses sudo ke user
bash
# Tambah user ke group sudo admin@web-server:~$ sudo usermod -aG sudo username # Verifikasi admin@web-server:~$ groups username username : username sudo # User perlu logout dan login lagi agar perubahan berlaku # Atau buat file di /etc/sudoers.d/ admin@web-server:~$ sudo visudo -f /etc/sudoers.d/username # Isi file: username ALL=(ALL:ALL) ALL

Best Practice sudo

DO
Gunakan sudo bukan login root, batasi command yang boleh dijalankan, gunakan visudo
DON'T
Jangan beri ALL=(ALL) NOPASSWD: ALL ke user biasa, jangan edit sudoers manual
TIPS: Untuk keamanan maksimal, buat user terpisah untuk tugas admin. Jangan gunakan user biasa untuk semua hal dengan sudo.
KOMPETENSI SUB-BAB 08
  • Memahami konsep sudo dan privilege escalation
  • Mampu gunakan sudo untuk jalankan command sebagai root
  • Mampu konfigurasi sudoers dengan visudo
  • Mampu tambah user ke group sudo
  • Memahami best practice sudo
VOLUME 05 SELESAI

SELAMAT!

Kamu telah menyelesaikan Volume 05 - User, Group & Permission Management. Dari konsep user & group, membuat dan menghapus user, password management, permission rwx, chmod, chown, chgrp, hingga sudo dan privilege escalation. Kamu sekarang menguasai user dan permission management di Linux. Di Volume 06, kita akan dalami Package Management dengan apt. Sampai jumpa!
SUB-BAB8 LEVELUser & Permission NEXTPackage Management
ABDURROZAK.MY.ID // TERHUBUNG

JARINGAN SOSIAL

Temukan saya di berbagai platform digital

Dibuat dengan oleh Abdur Rozak, S.Kom. - abdurrozak.my.id