GNU/Linux >> Belajar Linux >  >> AlmaLinux

Jalankan Perintah Sebagai Pengguna Lain Melalui Sudo Di Linux

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

AlmaLinux
  1. Contoh Perintah sudo di Linux

  2. Bagaimana saya bisa menjalankan serangkaian perintah dalam subkulit bash sebagai pengguna lain menggunakan sudo?

  3. Cara membatasi perintah pengguna di Linux

  1. Jalankan container di Linux tanpa Sudo di Podman

  2. 20 perintah Linux penting untuk setiap pengguna

  3. Jalankan perintah cd sebagai superuser di Linux

  1. Menggunakan Sudo untuk mendelegasikan izin di Linux

  2. Menjelajahi perbedaan antara perintah sudo dan su di Linux

  3. Cara Membuat Pengguna Sudo di Rocky Linux 8