Jalankan Perintah Sebagai Pengguna Lain Melalui Sudo Di Linux

Gambarkan skenario ini. Anda mengelola server Linux yang diakses oleh banyak pengguna. Semua pengguna memiliki hak sudo. Anda ingin menguji perintah Linux tertentu dengan pengguna yang berbeda. Bagaimana Anda melakukannya? Masuk sebagai satu pengguna dan uji perintah, lalu keluar dan masuk kembali sebagai pengguna lain dan uji perintah? Ya, itu adalah salah satu cara untuk melakukannya. Namun, ada cara sederhana untuk menjalankan perintah sebagai pengguna lain melalui sudo di Linux. Baca terus untuk mengetahuinya.

Untuk tujuan panduan ini, saya telah membuat dua akun pengguna yaitu “senthil” dan “kumar” di mesin uji AlmaLinux 8 saya. Saya akan menggunakan “senthil” sebagai pengguna saat ini dan “kumar” sebagai pengguna target.

Saya ingin pengguna “senthil” dapat menjalankan perintah apa pun sebagai pengguna “kumar” di host mana pun, tanpa benar-benar masuk sebagai “kumar” . Dipahami? Baiklah, izinkan saya menunjukkan kepada Anda sebuah contoh. Perintah
Run Sebagai Pengguna Lain Melalui Sudo

Saya saat ini login sebagai pengguna “senthil”. Izinkan saya menunjukkan kepada Anda pengguna yang saat ini masuk dengan perintah whoami.

$ whoami senthil

Sekarang saya akan menjalankan perintah “echo” sederhana dengan sudo sebagai pengguna target “kumar” saat masuk sebagai “senthil”:

$ sudo -u kumar bash -c 'echo "Nama Pengguna saya adalah $USER, dan ID pengguna saya adalah $UID"'

Anda akan diminta untuk memasukkan kata sandi pengguna saat ini (yaitu “senthil” dalam kasus ini). Setelah diautentikasi, perintah echo akan dijalankan sebagai pengguna “kumar” dan menampilkan nama pengguna dan id pengguna “kumar”.

Contoh keluaran:

[sudo] kata sandi untuk senthil: Nama pengguna saya adalah kumar, dan ID pengguna saya adalah 1001

Apa yang kita sebenarnya yang baru saja kita lakukan adalah kita menjalankan perintah “echo” sebagai pengguna “kumar” saat kita login sebagai “senthil”. Inilah sebabnya mengapa Anda melihat nama pengguna dan id pengguna kumar, tetapi tidak senthil’s.

Mari kita verifikasi apakah uid pengguna “kumar” benar dengan perintah id.

$ id kumar uid=1001(kumar) gid=1001(kumar ) groups=1001(kumar),10(wheel)

Di sini, flag -u digunakan untuk menjalankan perintah yang diberikan sebagai pengguna lain (yaitu kumar dalam kasus ini) dan bash -c digunakan untuk menyebutkan nama perintah. Anda harus menyebutkan perintah dalam kutipan tunggal.

Jika Anda tidak menggunakan opsi bash -c, perintah echo akan mengembalikan nama pengguna dan uid pengguna saat ini alih-alih pengguna target.

$ sudo -u kumar echo "Nama Pengguna Saya adalah $USER, dan ID pengguna saya adalah $UID"Nama pengguna saya senthil, dan ID pengguna saya adalah 1000

Demikian pula, Anda dapat menjalankan perintah apa pun sebagai pengguna yang berbeda.

Harap dicatat bahwa dalam contoh perintah kami sebelumnya, saya tidak memasukkan kata sandi sudo untuk pengguna target. Mengapa? Karena, gema tidak memerlukan kata sandi Sudo.

Jika Anda menjalankan perintah yang memerlukan izin sudo sebagai pengguna lain, Anda harus memasukkan kata sandi. Berikut ini contoh lain.

$ sudo -u kumar bash -c 'sudo dnf --refresh update'

Output sampel:

[sudo] kata sandi untuk senthil: [sudo] kata sandi untuk kumar: AlmaLinux 8 - BaseOS 344 B/s | 4.3 kB 00:12 AlmaLinux 8 - AppStream 388 B/s | 4.7 kB 00:12 AlmaLinux 8 - Ekstra 316 B/s | 3.9 kB 00:12 Ketergantungan diselesaikan. Tidak ada hubungannya. Selesai!

Apakah Anda memperhatikan bahwa saya memasukkan kata sandi sudo untuk kedua pengguna? Ya. Karena, kita akan menjalankan “sudo dnf update”, yang membutuhkan hak istimewa yang lebih tinggi. Itu sebabnya diperlukan untuk memasukkan kata sandi sudo untuk pengguna target. Untuk perintah normal mis. ls, uname dll., kita tidak perlu memasukkan kata sandi pengguna target.

Tidak hanya perintah Linux, Anda juga dapat menerapkan metode ini untuk menjalankan skrip. Katakanlah Anda ingin menjalankan skrip cadangan yang disimpan di direktori $HOME pengguna lain. Anda cukup menjalankan skrip dari pengguna saat ini sebagai pengguna lain dengan menggunakan perintah ini:

$ sudo -u kumar bash -c '~/backup_script_name'

Run Perintah Tanpa Sudo Password

Terkadang, Anda mungkin berada dalam situasi di mana Anda tidak ingin untuk memasukkan kata sandi sudo untuk setiap perintah. Dalam kasus seperti itu, Anda dapat melewati prompt kata sandi untuk perintah tertentu dengan menambahkan opsi NOPASSWD di file /etc/sudoers.

Misalkan Anda ingin mengizinkan pengguna menjalankan perintah dnf apa pun tanpa kata sandi sudo. Untuk melakukannya, pertama-tama temukan jalur perintah dnf menggunakan which atau whereis commands.

$ which dnf /usr/bin/dnf
$ whereis dnf dnf: /usr/bin/dnf /etc/dnf /usr/share/man/ man8/dnf.8.gz

Seperti yang Anda lihat, jalur eksekusi perintah dnf adalah /usr/bin/dnf.

Sekarang, edit file /etc/sudoers menggunakan perintah:

$ sudo visudo

Heads Up: Harap dicatat bahwa Anda tidak boleh mengedit secara manual file sudoers menggunakan editor teks apa pun. Selalu gunakan perintah visudo untuk mengedit file sudoers dengan aman.

Tambahkan baris berikut di akhir file untuk memungkinkan pengguna menjalankan perintah dnf tanpa kata sandi sudo.

kumar ALL=NOPASSWD:/usr/bin/dnf

Simpan file dan keluar.

Mulai sekarang , pengguna “kumar” dapat menjalankan perintah dnf tanpa sudo password.

[[email protected] ~]$ sudo -u kumar bash -c 'sudo dnf --refresh update' [sudo] kata sandi untuk senthil: AlmaLinux 8 - BaseOS 358 B/s | 4.3 kB 00:12 AlmaLinux 8 - AppStream 324 B/s | 4.7 kB 00:14 AlmaLinux 8 - Ekstra 302 B/s | 3.9 kB 00:13 Ketergantungan diselesaikan. Tidak ada hubungannya. Selesai!

Lihat? Kita tidak perlu memasukkan kata sandi sudo untuk “kumar”.

Untuk mencabut perilaku ini, cukup hapus baris di atas.
Disclaimer: Anda harus sangat berhati-hati saat menerapkan metode ini. Metode ini dapat digunakan untuk tujuan produktif dan destruktif. Katakanlah misalnya, jika Anda mengizinkan pengguna untuk menjalankan perintah ‘rm’ tanpa kata sandi sudo, mereka dapat secara tidak sengaja atau sengaja menghapus file penting. Jangan lakukan ini kecuali benar-benar diperlukan.
Conclusion

Dalam tutorial singkat ini, kita membahas bagaimana mengizinkan pengguna untuk menjalankan perintah sebagai pengguna lain melalui sudo di Linux. Kami juga mempelajari cara mengizinkan menonaktifkan sudo password prompt untuk pengguna tertentu saat menjalankan perintah tertentu dengan memodifikasi file sudoers.

Seperti yang saya peringatkan, Anda harus berhati-hati saat menguji metode ini pada sistem produksi. Anda mungkin tanpa sadar mengizinkan pengguna menjalankan perintah berbahaya (mis. rm) tanpa harus memasukkan kata sandi sudo. Anda harus selalu berhati-hati saat menguji tip Linux semacam ini.

Related Baca:
Mengeksekusi Perintah Pada Sistem Linux Jarak Jauh Melalui SSHCara Menjalankan Perintah Tertentu Tanpa Kata Sandi Sudo Di Linux