GNU/Linux >> Belajar Linux >  >> Linux

Cara Menjalankan Perintah Sudo Tanpa Kata Sandi

Saat bekerja dengan Linux, kami menemukan bahwa akses ke beberapa file atau melakukan operasi sensitif mengharuskan pengguna untuk memiliki hak istimewa yang lebih tinggi. Perintah sudo sementara meningkatkan hak istimewa pengguna yang memungkinkan pengguna untuk menjalankan perintah sensitif atau mengakses file tanpa batasan.

Sintaks dari perintah sudo adalah sebagai berikut:

$ sudo --help

Kami membahas empat cara untuk menjalankan perintah sudo tanpa harus memasukkan kata sandi setiap saat. Dua yang pertama melibatkan pengeditan sudoers dan sudoers.d file sementara dua yang terakhir melibatkan eksekusi perintah untuk meningkatkan hak pengguna ke root.

1. Mengedit File /etc/sudoers

Pertama, mari kita coba menjalankan perintah dengan sudo dan lihat apakah kita mendapatkan prompt kata sandi:

$ sudo systemctl start mariadb

Jalankan Perintah Sudo Tanpa Kata Sandi

Jika kita ingin pengguna Alice untuk mengeksekusi semua sudo perintah tanpa perlu sudo kata sandi untuk semua/semua host, kami mengedit file sudoers.

$ sudo visudo

dan gunakan NOPASSWD direktif seperti yang ditunjukkan:

alice ALL=(ALL) NOPASSWD: ALL

Jalankan Perintah Sudo Tertentu Tanpa Kata Sandi

Untuk mengizinkan pengguna Alice untuk menjalankan satu perintah sudo tertentu tanpa memasukkan kata sandi, Anda perlu menggunakan baris berikut ke file sudoers.

alice ALL=(ALL) NOPASSWD: /bin/systemctl start mariadb

Sekarang coba jalankan beberapa perintah dan lihat…

$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
$ cat /etc/sudoers

Dari sesi terminal di atas, kami memulai MariaDB service karena perubahan yang kami buat pada file sudoers, kami tidak memiliki prompt kata sandi. Perhatikan juga bahwa untuk perintah selanjutnya, kami memiliki prompt kata sandi.

Jalankan Perintah Sudo pada Host Tertentu Tanpa Kata Sandi

Untuk mengizinkan pengguna menjalankan perintah pada host tertentu sebagai root , daripada menggunakan SEMUA kita tulis:

alice linuxshelltips1=(root) NOPASSWD: /bin/systemctl start mariadb

Di atas memungkinkan Alice untuk menjalankan perintah yang terdaftar pada host dengan nama linuxshelltips1 tanpa memasukkan kata sandi.

Untuk mengizinkan tiga perintah dieksekusi dengan sudo hak istimewa untuk host linuxshelltips1 dan tidak memiliki prompt kata sandi, kami mencantumkannya sebagai berikut:

alice linuxshelltips1=(ALL) NOPASSWD: /bin/systemctl start mariadb, /bin/systemctl status mariadb, /bin/cat /etc/sudoers

Di sini kami mengizinkan pengguna Alice untuk memulai dan memeriksa status mariadb layanan tanpa memasukkan kata sandi saat berada di host dengan nama host linuxshelltips1 . Pengguna juga dapat menggabungkan /etc/sudoers file tanpa memasukkan kata sandi.

Ketiga perintah dijalankan tanpa memerlukan kata sandi. Namun, ketika kami mencoba menghentikan layanan mariadb, kami dimintai kata sandi karena kami tidak menentukannya di file sudoers.

Jalankan Perintah Sudo Tanpa Kata Sandi untuk Pengguna Grup

Kami juga dapat mengizinkan perintah sudo berjalan tanpa memasukkan kata sandi untuk sekelompok pengguna, misalnya group1 ke pengguna mana Alice milik.

%group1 ALL=(ALL) NOPASSWD: ALL

Kami juga dapat menggabungkan pengguna, grup, dan perintah. Misalnya, jika kita hanya ingin pengguna atau grup tertentu menjalankan perintah tertentu, kita tempel baris berikut di file sudoers:

alice,%group2 ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Alice dan semua pengguna yang tergabung dalam grup2 dapat menjalankan semua perintah systemctl, cat, dan kill dengan sudo dan tidak memiliki prompt kata sandi.

Kami juga dapat mengizinkan pengguna tertentu (alice, bob) untuk menjalankan perintah tertentu (systemctl, cat, kill) dengan mencantumkannya sebagai berikut:

bob,alice, ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Setelah menyimpan file, alice dan bob dapat menjalankan perintah systemctl, cat, dan kill pada semua host tanpa dimintai kata sandi.

Perhatikan bagaimana kami mencantumkan perintah di /bin/ direktori, seperti; bin/systemctl, atau /bin/cat. Sebagai gantinya, kita dapat menyertakan seluruh direktori dan diakhiri dengan ‘/’ karakter. Ini berarti bahwa pengguna dapat menjalankan perintah apa pun di /bin direktori. Namun, ini tidak berlaku untuk perintah di subdirektori /bin direktori.

Misalnya, untuk mengizinkan Alice untuk menjalankan semua perintah di /bin/ direktori yang kita tulis:

alice ALL=(ALL) NOPASSWD: /bin/

Alice sekarang dapat menjalankan semua perintah pada semua host yang memerlukan hak sudo yang terletak di /bin/ direktori tanpa memerlukan kata sandi.

2. Mengedit File /etc/sudoers.d

Atau, lebih aman untuk membuat perubahan pada /etc/sudoers.d alih-alih file sudoers. Hal ini membuat pengelolaan hak istimewa sudo lebih mudah dikelola dan membuat file sudoers tidak tersentuh.

Perhatikan bahwa semua yang telah kita diskusikan di bagian sebelumnya dapat diterapkan di sini, satu-satunya perbedaan adalah kita akan bekerja dengan sudoers.d file untuk tujuan keamanan.

Misalnya, mari buat file untuk alice memungkinkannya untuk menjalankan perintah sudo pada host tertentu tanpa memasukkan kata sandi.

$ sudo nano /etc/sudoers.d/alice

Setelah file terbuka, kita paste baris berikut:

alice linxshelltips=(root) NOPASSWD: /bin/

Pengguna sekarang dapat menjalankan semua perintah sudo di /bin/ direktori tanpa memasukkan kata sandi pada host dengan nama host linuxshelltips .

Kami juga dapat menentukan perintah sudo yang dapat dieksekusi oleh sekelompok pengguna sebagai berikut:

$ sudo nano /etc/sudoers.d/groups

Kami menempelkan baris berikut untuk mengizinkan semua anggota grup1 untuk menjalankan semua perintah sudo di semua host tanpa memasukkan kata sandi.

%group1 ALL=(ALL) NOPASSWD: ALL

Mengelola hak istimewa sudo dengan cara ini memungkinkan kita mengelolanya dengan mudah tanpa khawatir akan merusak sesuatu.

3. Memperbaiki File Sudoers

Perhatikan bagaimana kami menggunakan visudo untuk mengedit file sudoers? Ini adalah konvensi karena kami ingin menghindari melanggar sistem. Saat kita menjalankan visudo itu memeriksa file untuk memastikan bahwa kami tidak mengacaukan apa pun, misalnya dalam hal sintaksis.

Jika sebaliknya kami menggunakan editor teks biasa dan membuat kesalahan, ini akan mencegah kami mengedit file lagi karena kami memerlukan hak sudo untuk mengedit file.

Menggunakan visudo juga mencegah beberapa pengeditan pada file sudoers sekaligus, yaitu, jika pengguna lain mengedit file, pengguna lain tidak akan diizinkan untuk mengedit file.

Dengan asumsi file sudoers kacau dan kami terkunci. Kami menggunakan pkexec perintah yang merupakan alternatif dari perintah sudo.

$ pkexec visudo

Setelah kami memiliki akses ke file sudoers, kami dapat memperbaiki kesalahannya. Misalnya, untuk memperbaiki /etc/sudoers.d/alice file, kami menulis:

$ pkexec visudo /etc/sudoers.d/alice

4. Menggunakan Perintah 'sudo -s'

Untuk menjalankan perintah ini tanpa memasukkan kata sandi setiap saat, kami menjalankan perintah:

$ sudo -s

Ketika kita memasukkan kata sandi sekali, untuk semua perintah sudo berikutnya di sesi terminal ini, kita tidak perlu memasukkannya lagi.

Sekarang, jika kita mencoba menjalankan perintah sudo, kita tidak akan diminta untuk memasukkan kata sandi:

$ sudo systemctl start mariadb.service

Kami keluar dari mode ini dengan mengeluarkan keluar perintah:

$ exit

5. Menggunakan Perintah 'sudo su'

Cara lain untuk menjalankan perintah sudo tanpa dimintai kata sandi adalah dengan menjalankan perintah sudo su untuk menjadi pengguna root. Setelah perintah ini dijalankan, dan kita memasukkan kata sandi satu kali, maka untuk semua perintah sudo berikutnya, kita tidak perlu memasukkan kata sandi untuk menjalankannya.

$ sudo su

Sekarang, kami memiliki hak akses root sehingga setiap perintah sudo berikutnya yang kami jalankan tidak akan mengharuskan kami untuk memasukkan kata sandi.

Umumnya, untuk menjalankan perintah sudo tanpa kata sandi, kami menggunakan sintaks berikut saat mengedit sudoers.d berkas:

user_list host_list=effective_user_list tag_list command_list

Dimana,

  • daftar_pengguna dapat berupa pengguna, grup, alias tertentu.
  • daftar_host adalah nama host dari host tempat pengguna dapat menjalankan perintah sudo tanpa kata sandi.
  • daftar_pengguna_efektif menentukan daftar pengguna yang berjalan sebagai pengguna saat ini atau sebagai alias dari pengguna saat ini.
  • daftar_tag menentukan tag seperti NOPASSWD .
  • daftar_perintah menentukan daftar perintah sudo yang dapat dijalankan oleh pengguna atau grup tanpa memerlukan kata sandi.

Menjalankan perintah sudo tanpa prompt untuk memasukkan kata sandi dianggap sebagai risiko keamanan. Perintah sandi tidak hanya memberi kita kesempatan untuk mengonfirmasi perintah sebelum dijalankan, tetapi juga mencegah pengguna yang tidak berwenang melakukan tindakan di luar hak istimewa mereka.

Misalnya, ‘sudo rm -rf /’ perintah menghapus seluruh sistem file. Perintah ini tidak dapat diubah dan oleh karena itu, adalah bijaksana untuk meminta kata sandi karena memberi kita kesempatan untuk mengevaluasi tindakan ini.


Linux
  1. Bagaimana Cara Menjalankan Program Tertentu Sebagai Root Tanpa Prompt Kata Sandi?

  2. Ssh – Bagaimana Menjalankan Ssh-add Secara Otomatis, Tanpa Prompt Kata Sandi?

  3. Ssh – Perlu Tty Untuk Menjalankan Sudo Jika Saya Bisa Sudo Tanpa Kata Sandi?

  1. Ubah Kata Sandi Root Dengan Sudo, Tanpa Su?

  2. Bagaimana cara meneruskan kata sandi ke su/sudo/ssh tanpa mengesampingkan TTY?

  3. Bagaimana cara menjalankan skrip sebagai pengguna lain tanpa kata sandi?

  1. MySQLdump tanpa kata sandi di cronjob

  2. Kemungkinan:sudo tanpa kata sandi

  3. Jalankan ifconfig tanpa sudo