Bayangkan skenario ini. Anda mengelola server Linux yang diakses oleh banyak pengguna. Semua pengguna memiliki sudo
hak. 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 sebuah contoh.
Jalankan Perintah Sebagai Pengguna Lain Melalui Sudo
Saat ini saya masuk sebagai pengguna "senthil". Mari saya tunjukkan kepada Anda pengguna yang saat ini masuk dengan whoami
perintah.
$ whoami senthil
Sekarang saya akan menjalankan "echo
. sederhana" " perintah dengan sudo
sebagai pengguna target "kumar" saat login sebagai "senthil":
$ sudo -u kumar bash -c 'echo "My Username is $USER, and my user ID is $UID"'
Anda akan diminta untuk memasukkan kata sandi pengguna saat ini (yaitu "senthil" dalam kasus ini). Setelah diautentikasi, echo
perintah akan dijalankan sebagai pengguna "kumar" dan menampilkan nama pengguna dan id pengguna "kumar".
Contoh keluaran:
[sudo] password for senthil: My Username is kumar, and my user ID is 1001
Apa yang sebenarnya baru saja kita lakukan adalah menjalankan "echo
" perintahkan sebagai pengguna "kumar" saat kita masuk sebagai "senthil". Inilah sebabnya mengapa Anda melihat nama pengguna dan id pengguna kumar, tetapi tidak melihat nama senthil.
Mari kita verifikasi apakah uid pengguna "kumar" benar dengan id
perintah.
$ id kumar uid=1001(kumar) gid=1001(kumar) groups=1001(kumar),10(wheel)
Ya, uid dari kumar benar di kedua output.
Di sini, -u
flag 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 tanda kutip tunggal.
Jika Anda tidak menggunakan bash -c
pilihan, echo
perintah akan mengembalikan nama pengguna dan uid pengguna saat ini, bukan pengguna target.
$ sudo -u kumar echo "My Username is $USER, and my user ID is $UID"
My Username is senthil, and my user ID is 1000
Demikian pula, Anda dapat menjalankan perintah apa pun sebagai pengguna yang berbeda.
Harap perhatikan bahwa dalam contoh perintah kami sebelumnya, saya tidak memasukkan sudo
kata sandi untuk pengguna target. Mengapa? Karena, echo
perintah tidak memerlukan sudo
kata sandi.
Jika Anda menjalankan perintah yang memerlukan sudo
izin sebagai pengguna lain, Anda harus memasukkan kata sandi. Ini contoh lain.
$ sudo -u kumar bash -c 'sudo dnf --refresh update'
Contoh keluaran:
[sudo] password for senthil: [sudo] password for 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 - Extras 316 B/s | 3.9 kB 00:12 Dependencies resolved. Nothing to do. Complete!
Apakah Anda memperhatikan bahwa saya memasukkan sudo
kata sandi untuk kedua pengguna? Ya. Karena, kita menjalankan "sudo dnf update
", yang membutuhkan hak istimewa yang lebih tinggi. Itu sebabnya diperlukan untuk memasukkan sudo
kata sandi 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 $HOME
direktori 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'
Jalankan Perintah Tanpa Kata Sandi Sudo
Terkadang, Anda mungkin berada dalam situasi di mana Anda tidak ingin memasukkan kata sandi sudo untuk setiap perintah. Dalam kasus seperti itu, Anda dapat melewati permintaan kata sandi untuk perintah tertentu dengan menambahkan NOPASSWD
opsi di /etc/sudoers
berkas.
Katakanlah Anda ingin mengizinkan pengguna tertentu untuk menjalankan dnf perintah tanpa kata sandi sudo. Untuk melakukannya, pertama-tama temukan jalur dnf
perintah menggunakan which
atau whereis
perintah.
$ 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 dnf
perintahnya adalah /usr/bin/dnf
.
Sekarang, edit /etc/sudoers
file menggunakan perintah:
$ sudo visudo
Perhatian: Harap dicatat bahwa Anda tidak boleh mengedit sudoers
secara manual file menggunakan editor teks apa pun. Selalu gunakan visudo
perintah untuk mengedit sudoers
. dengan aman berkas.
Tambahkan baris berikut di akhir file untuk mengizinkan pengguna bernama "kumar" menjalankan dnf
perintah tanpa kata sandi sudo.
kumar ALL=NOPASSWD:/usr/bin/dnf
Simpan file dan keluar.
Mulai sekarang, pengguna "kumar" dapat menjalankan dnf
perintah tanpa sudo
kata sandi.
[[email protected] ~]$ sudo -u kumar bash -c 'sudo dnf --refresh update' [sudo] password for 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 - Extras 302 B/s | 3.9 kB 00:13 Dependencies resolved. Nothing to do. Complete!
Lihat? Kita tidak perlu memasukkan sudo
kata sandi untuk "kumar".
Untuk mencabut perilaku ini, cukup hapus baris di atas.
Penafian: Anda harus sangat berhati-hati saat menerapkan metode ini. Metode ini dapat digunakan untuk tujuan produktif dan destruktif. Katakan misalnya, jika Anda mengizinkan pengguna untuk mengeksekusi 'rm'
perintah tanpa sudo
sandi, mereka dapat secara tidak sengaja atau sengaja menghapus file penting. Jangan lakukan ini kecuali benar-benar diperlukan.
Kesimpulan
Dalam tutorial singkat ini, kami membahas cara mengizinkan pengguna menjalankan perintah sebagai pengguna lain melalui sudo di Linux. Kami juga mempelajari cara menonaktifkan sudo password prompt untuk pengguna tertentu saat menjalankan perintah tertentu dengan memodifikasi sudoers
berkas.
Seperti yang saya peringatkan, Anda harus berhati-hati saat menguji metode ini pada sistem produksi. Anda mungkin secara tidak 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.
Bacaan Terkait:
- Jalankan Perintah Pada Sistem Linux Jarak Jauh Melalui SSH
- Cara Menjalankan Perintah Tertentu Tanpa Kata Sandi Sudo Di Linux