Cara Mengubah Pengguna di Linux: Panduan Lengkap
Linux adalah sistem operasi multi-pengguna menurut desain, dan mengelola identitas pengguna adalah salah satu keterampilan paling fundamental yang perlu dikuasai oleh administrator sistem. Baik Anda mengelola lingkungan VPS Hosting, mengonfigurasi server web, atau memecahkan masalah izin file setelah deployment, memahami cara mengubah pengguna di Linux sangat penting.
Frasa “ubah pengguna” di Linux sebenarnya mencakup beberapa operasi yang berbeda, masing-masing dengan alat, risiko, dan praktik terbaik sendiri:
- Beralih ke akun lain di shell (misalnya, dari
johnkeroot) untuk sesi interaktif - Menjalankan perintah tunggal sebagai pengguna berbeda tanpa sepenuhnya beralih sesi
- Mengubah pengguna mana yang menjalankan layanan atau proses — penting untuk pengerasan keamanan
- Mengubah kepemilikan file dan direktori — penting setelah migrasi, pemulihan, atau deployment
- Memodifikasi atribut akun pengguna — mengganti nama pengguna, mengubah UID, atau menyesuaikan keanggotaan grup
Panduan ini mencakup semua skenario ini secara mendalam, menjelaskan kapan menggunakan setiap pendekatan, cara melakukannya dengan aman, dan kesalahan mana yang harus dihindari — sehingga Anda dapat mengelola pengguna Linux dengan percaya diri tanpa merusak izin, layanan, atau akses.
Daftar Isi
- Beralih ke Pengguna Lain (Shell Interaktif)
- Jalankan Perintah Tunggal sebagai Pengguna Lain
- Ubah Pengguna yang Menjalankan Layanan (systemd)
- Ubah Kepemilikan File dengan chown
- Konfirmasi Identitas Anda Saat Ini
- Modifikasi Atribut Akun Pengguna
- Lembar Referensi Cepat
Beralih ke Pengguna Lain (Shell Interaktif)
Ketika Anda membutuhkan sesi terminal interaktif penuh sebagai pengguna lain — untuk administrasi sistem, menguji perilaku aplikasi di bawah akun berbeda, atau mengakses akun layanan — Linux menyediakan dua alat utama: su dan sudo.
Menggunakan su (Beralih Pengguna)
Perintah su menggantikan identitas pengguna Anda saat ini dengan pengguna lain:
su - usernameBendera - (juga ditulis sebagai -l atau --login) penting: ini memuat lingkungan login lengkap pengguna target, termasuk direktori home mereka, PATH, profil shell, dan variabel lingkungan. Tanpa bendera -, Anda mewarisi banyak lingkungan saat ini, yang dapat menyebabkan perilaku halus dan membingungkan — terutama saat menjalankan skrip atau layanan.
Untuk beralih langsung ke root:
su -> Catatan keamanan: Pada banyak distribusi Linux modern, akun root dinonaktifkan secara default (terutama pada sistem berbasis Ubuntu). Dalam kasus ini, su ke root akan gagal, dan sudo adalah pendekatan yang benar.
Menggunakan sudo -i (Disukai untuk Shell Root/Admin)
sudo -iIni memberikan Anda shell login root yang setara dengan su -, tetapi mengautentikasi menggunakan hak istimewa sudo Anda sendiri daripada memerlukan kata sandi root. Ini adalah pendekatan yang direkomendasikan pada sebagian besar distribusi modern karena:
- Ini menghindari kebutuhan untuk berbagi atau mengetahui kata sandi root
- Semua tindakan dicatat melalui jejak audit sudo
- Ini menghormati konfigurasi dan pembatasan sudoers Anda
Beralih ke Pengguna Lain dengan Shell Login melalui sudo
sudo -iu usernameIni menggabungkan -i (shell login) dan -u (pengguna target), memberikan Anda lingkungan login yang bersih sebagai pengguna yang ditentukan — tanpa memerlukan kata sandi pengguna tersebut.
Jalankan Perintah Tunggal sebagai Pengguna Lain
Seringkali Anda tidak memerlukan sesi interaktif penuh — Anda hanya perlu menjalankan satu perintah dengan identitas berbeda. Ini adalah pola eskalasi hak istimewa yang paling umum dan paling aman.
Menggunakan sudo -u
sudo -u username whoamisudo -u postgres psqlContoh kedua sangat umum dalam administrasi database — beralih ke pengguna sistem postgres untuk mengakses PostgreSQL tanpa autentikasi kata sandi.
Jalankan Perintah dengan Lingkungan Login yang Bersih
sudo -iu username command_hereIni memastikan perintah berjalan dengan lingkungan lengkap pengguna target, bukan variabel sesi Anda saat ini.
Jalankan Perintah sebagai Root
sudo systemctl restart nginxIni adalah pola standar untuk tugas administratif: jalankan perintah istimewa tunggal tanpa membuka shell root.
Ubah Pengguna yang Menjalankan Layanan (systemd)
Pada hampir semua distribusi Linux modern, systemd mengelola layanan. Untuk keamanan, setiap layanan harus berjalan di bawah akun pengguna khusus yang tidak istimewa daripada root. Menjalankan layanan sebagai root adalah risiko keamanan yang signifikan — jika layanan dikompromikan, penyerang mendapatkan akses root ke seluruh sistem.
Ini sangat penting pada Server Khusus dan lingkungan VPS produksi di mana beberapa layanan mungkin berjalan secara bersamaan.
Periksa Konfigurasi Layanan Saat Ini
systemctl cat myservice.serviceCari direktif User= dan Group= di bagian [Service]:
[Service]
User=www-data
Group=www-dataTimpa Pengguna Layanan (Metode Aman)
Daripada mengedit file unit asli (yang mungkin ditimpa pada upgrade paket), gunakan systemctl edit untuk membuat penggantian drop-in:
sudo systemctl edit myservice.serviceIni membuka editor di mana Anda menambahkan:
[Service]
User=myuser
Group=mygroupSimpan file, kemudian terapkan perubahan:
sudo systemctl daemon-reload
sudo systemctl restart myservice.serviceVerifikasi Layanan Berjalan sebagai Pengguna yang Benar
systemctl status myservice.serviceps -eo user,pid,cmd | grep myservicePeriksa Pengguna Proses yang Sedang Berjalan
ps -eo user,pid,cmd | grep nginxps -p <PID> -o user,group,cmd> Penting: Linux tidak memungkinkan Anda mengubah pengguna dari proses yang sudah berjalan di tempat. Anda harus memulai ulang proses (atau mengonfigurasi manajer layanan untuk meluncurkannya di bawah pengguna yang benar) agar perubahan berlaku.
Ubah Kepemilikan File dengan chown
Kepemilikan file adalah bagian inti dari model izin Linux. Setelah migrasi, deployment, backup, atau pemulihan, kepemilikan dapat berakhir ditugaskan kepada pengguna yang salah — menyebabkan kesalahan izin ditolak, aplikasi web yang rusak, atau data yang tidak dapat diakses. Perintah chown adalah alat utama Anda untuk memperbaiki ini.
Ini adalah tugas umum saat menyiapkan lingkungan Shared Web Hosting atau men-deploy aplikasi web di VPS.
Ubah Pemilik File
sudo chown username file.txtUbah Pemilik dan Grup
sudo chown username:groupname file.txtPerubahan Kepemilikan Rekursif (Gunakan dengan Hati-hati)
sudo chown -R username:groupname /var/www/siteBendera -R menerapkan perubahan secara rekursif ke semua file dan subdirektori. Gunakan ini dengan hati-hati — menerapkannya ke jalur yang salah (misalnya, / atau /etc) dapat merusak seluruh sistem Anda.
Pertahankan Symlink
sudo chown -h username:groupname symlinkTanpa -h, chown mengikuti tautan simbolis dan mengubah kepemilikan file target, bukan symlink itu sendiri. Gunakan -h ketika Anda secara khusus ingin mengubah kepemilikan symlink.
Pratinjau Kepemilikan Sebelum Membuat Perubahan
Untuk pohon direktori besar, selalu pratinjau sebelum menerapkan chown rekursif:
find /path -maxdepth 2 -printf '%u:%g %pn' | headIni menunjukkan pemilik dan grup saat ini untuk dua tingkat atas pohon direktori, memungkinkan Anda mengonfirmasi cakupan perubahan sebelum berkomitmen.
Konfirmasi Identitas Anda Saat Ini
Sebelum membuat perubahan, selalu verifikasi siapa Anda dan konteks apa yang Anda operasikan. Ini mencegah perubahan yang tidak disengaja dibuat di bawah akun yang salah.
Periksa Pengguna Anda Saat Ini
whoamiDapatkan Informasi Identitas Lengkap (Pengguna, Grup, UID)
idContoh output:
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)Lihat Siapa yang Masuk ke Sistem
whowPeriksa Pengguna Asli Saat Menggunakan sudo
Ketika Anda meningkatkan dengan sudo, dua variabel lingkungan relevan:
echo $USER # The current effective user (root)
echo $SUDO_USER # The original user who invoked sudo (e.g., alice)Perbedaan ini penting dalam skrip — $SUDO_USER memberi tahu Anda siapa yang benar-benar menjalankan perintah.
Modifikasi Atribut Akun Pengguna
Kadang-kadang “ubah pengguna” berarti memodifikasi akun itu sendiri: mengganti namanya, mengubah UID, atau menyesuaikan keanggotaan grup. Ini adalah perubahan permanen di seluruh sistem yang dapat mempengaruhi login, izin file, dan akses layanan.
> Praktik terbaik: Sebelum membuat modifikasi akun, pastikan pengguna logout dan tidak ada proses yang berjalan di bawah akun tersebut.
Ganti Nama Pengguna (Ubah Nama Pengguna)
sudo usermod -l newname oldnameIni mengubah nama login tetapi tidak secara otomatis mengganti nama direktori home. Untuk juga memindahkan dan mengganti nama direktori home:
sudo usermod -d /home/newname -m newnameJika pengguna memiliki grup utama dengan nama yang sama dengan nama pengguna lama mereka (yang merupakan default pada sebagian besar distribusi), perbarui nama grup juga:
sudo groupmod -n newname oldnameUbah UID Pengguna
sudo usermod -u 2001 username> Kritis: Setelah mengubah UID, semua file yang sebelumnya dimiliki oleh UID lama akan muncul dimiliki oleh ID numerik yang tidak dikenal. Anda harus memperbaiki ini segera:
sudo find / -user oldUID -exec chown -h username {} ;Ganti oldUID dengan UID numerik sebelumnya. Perintah ini mencari seluruh sistem file untuk file dengan UID lama dan menetapkan ulang kepemilikan mereka ke nama pengguna baru.
Tambahkan Pengguna ke Grup
Kasus penggunaan paling umum adalah memberikan akses sudo kepada pengguna:
Debian/Ubuntu:
sudo usermod -aG sudo usernameRHEL / AlmaLinux / Rocky Linux:
sudo usermod -aG wheel usernameBendera -a sangat penting — ini menambahkan pengguna ke grup tanpa menghapusnya dari grup yang ada. Menghilangkan -a akan mengganti semua keanggotaan grup dengan hanya grup yang ditentukan.
Verifikasi Keanggotaan Grup
id usernameLembar Referensi Cepat
Berikut adalah referensi terpadu untuk semua operasi pengguna-switching dan manajemen yang tercakup dalam panduan ini:
| Tugas | Perintah |
|---|---|
| Beralih ke pengguna lain (shell login) | su - username |
| Beralih ke pengguna lain melalui sudo | sudo -iu username |
| Buka shell root | sudo -i |
| Jalankan perintah sebagai pengguna lain | sudo -u username command |
| Jalankan perintah sebagai postgres | sudo -u postgres psql |
| Periksa pengguna saat ini | whoami |
| Periksa identitas lengkap dan grup | id |
| Periksa penyeru sudo asli | echo $SUDO_USER |
