Di Linux dan sistem operasi mirip Unix lainnya, hanya pengguna root yang dapat menjalankan semua perintah dan melakukan operasi tertentu pada sistem seperti menginstal dan memperbarui, menghapus paket, membuat pengguna dan grup , memodifikasi file konfigurasi sistem yang penting dan sebagainya.
Namun, administrator sistem yang mengasumsikan peran pengguna root dapat mengizinkan pengguna sistem normal lainnya dengan bantuan perintah sudo dan beberapa konfigurasi untuk menjalankan beberapa perintah serta melakukan sejumlah operasi sistem vital termasuk yang disebutkan di atas.
Atau, administrator sistem dapat membagikan kata sandi pengguna root sehingga pengguna sistem normal memiliki akses ke akun pengguna root melalui perintah su .
sudo memungkinkan pengguna yang diizinkan untuk menjalankan perintah sebagai root (atau pengguna lain), sebagaimana ditentukan oleh kebijakan keamanan:
- Itu membaca dan mem-parsing /etc/sudoers , mencari pengguna dengan izin aksesnya,
- kemudian meminta pengguna yang meminta kata sandi (biasanya kata sandi pengguna, tetapi juga bisa menjadi kata sandi pengguna target. Atau dapat dilewati dengan tag NOPASSWD),
- setelah itu, sudo membuat proses turunan di mana ia memanggil setuid () untuk beralih ke pengguna target
- selanjutnya, ia mengeksekusi shell atau perintah yang diberikan sebagai argumen dalam proses di atas.
Di bawah ini adalah lima / etc / sudoers konfigurasi file untuk mengubah perilaku perintah sudo menggunakan entri Defaults
$ sudo cat /etc/sudoers
dibawah ini adalah isi file sudoers file
# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # defaults env_reset defaults mail_badpass defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" defaults logfile="/var/log/sudo.log" defaults lecture="always" defaults badpass_message="Password is wrong, please try again" defaults passwd_tries=5 defaults insults defaults log_input,log_output
Untuk cakupan panduan ini, kami akan nol ke tipe Default pertama dalam formulir di bawah ini. Parameter dapat berupa flag, nilai integer, string, atau daftar.
Anda harus mencatat bahwa flag secara implisit adalah boolean dan dapat dimatikan menggunakan ‘!’operator, dan daftar memiliki dua operator penugasan tambahan, +=(tambahkan ke daftar) dan -=(hapus dari daftar).
Defaults parameter OR Defaults parameter=value OR Defaults parameter -=value Defaults parameter +=value OR Defaults !parameter
Tetapkan PATH Dengan Aman
Ini adalah jalur yang digunakan untuk setiap perintah yang dijalankan dengan sudo, ini memiliki dua hal penting:
Digunakan ketika administrator sistem tidak mempercayai pengguna sudo untuk memiliki variabel lingkungan PATH yang aman
Untuk memisahkan “jalur root” dan “jalur pengguna”, hanya pengguna yang ditentukan oleh exempt_group yang tidak terpengaruh oleh pengaturan ini.
Untuk mengaturnya, tambahkan baris:
secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / snap / bin"
Aktifkan sudo pada Sesi Login Pengguna TTY
Untuk memungkinkan sudo dipanggil dari tty asli tetapi tidak melalui metode seperti skrip cron atau cgi-bin , tambahkan baris:
defaults requiretty
Jalankan Perintah Sudo Menggunakan pty
Beberapa kali, penyerang dapat menjalankan program jahat (seperti virus atau malware) menggunakan sudo, yang akan kembali melakukan proses latar belakang yang tetap ada di perangkat terminal pengguna bahkan ketika program utama telah selesai dijalankan.
Untuk menghindari skenario seperti itu, Anda dapat mengonfigurasi sudo untuk menjalankan perintah lain hanya dari psuedo-pty menggunakan use_ptyparameter, apakah pencatatan I / O dihidupkan atau tidak sebagai berikut:
use_pty default
Buat File Log Sudo
Secara default, sudo mencatat melalui syslog (3). Namun, untuk menentukan file log khusus, gunakan parameter logfile seperti:
File log default = "/var/log/sudo.log" Untuk log hostname dan tahun empat digit dalam file log kustom, penggunaan log_host dan log_year parameter masing-masing sebagai berikut:
log_host default, log_year, logfile = "/var/log/sudo.log"
Log Sudo Command Input / Output
log_input dan log_output parameter memungkinkan sudo untuk menjalankan perintah dalam pseudo-tty dan log semua input pengguna dan semua output dikirim ke layar reseptif.
Direktori log I / O default adalah / var / log / sudo-io , dan jika ada nomor urut sesi, ia disimpan dalam direktori ini. Anda dapat menentukan direktori khusus melalui parameter iolog_dir .
Log_input default, log_output Ada beberapa urutan pelarian yang didukung seperti %{seq}yang meluas ke nomor urutan basis-36 yang meningkat secara monoton, seperti 000001, di mana setiap dua digit digunakan untuk membentuk direktori baru, misalnya 00/00/01 seperti pada contoh di bawah ini:
$ cd /var/log/sudo-io / $ ls $ cd 00/00/01 $ ls $ cat log