Jalankan sudo tanpa kata sandi?

Terinspirasi oleh ini pertanyaan....

Saya adalah satu-satunya orang yang menggunakan sistem saya dengan 12.04.
Setiap kali saya mengeluarkan sudo perintah; sistem meminta kata sandi pengguna (yang bagus dengan caranya sendiri).
Namun saya berpikir; tanpa mengaktifkan akar akun; Bagaimana Saya bisa menjalankan perintah sudo yang tidak akan meminta kata sandi pengguna untuk diautentikasi.

Catatan: saya ingin menjalankan perintah sudo tanpa mengautentikasi melalui kata sandi; hanya ketika mereka dieksekusi melalui terminal.
Saya tidak ingin menghapus lapisan keamanan ekstra ini dari fungsi lain seperti saat menggunakan 'Ubuntu software center' atau menjalankan skrip bash dengan drag-drop something.sh file ke terminal.

Anda dapat mengkonfigurasi sudo untuk tidak pernah meminta kata sandi Anda.

Buka jendela Terminal dan ketik:

sudo visudo

Di bagian bawah file, Tambahkan baris berikut:

$USER ALL=(ALL) NOPASSWD: ALL

Dimana $USER adalah nama pengguna Anda di sistem Anda.Simpan dan tutup file sudoers (jika Anda belum mengubah editor terminal default Anda (Anda akan tahu jika Anda memilikinya), tekan Ctl + x untuk keluar nano dan itu akan meminta Anda untuk menyimpan).

Pada Ubuntu 19.04, file sekarang akan terlihat seperti

## 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_resetDefaults    mail_badpassDefaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"# Host alias specification# User alias specification# Cmnd alias specification# User privilege specificationroot    ALL=(ALL:ALL) ALL# Members of the admin group may gain root privileges%admin ALL=(ALL) ALL# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL# See sudoers(5) for more information on "#include" directives:#includedir /etc/sudoers.dYOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

Setelah ini Anda dapat mengetik sudo <whatever you want> di jendela Terminal tanpa diminta kata sandi.

Ini hanya berlaku, untuk menggunakan sudo perintah di terminal. Anda masih akan dimintai kata sandi jika Anda (misalnya) mencoba menginstal paket dari Pusat perangkat lunak

sudo -i adalah cara untuk pergi jika Anda tidak ingin mengetik kata sandi setiap 10 menit saat melakukan modifikasi di sistem Anda (atau sistem lain), dan Anda tidak ingin memodifikasi file sistem apa pun.

Ini akan beralih Anda untuk membasmi menggunakan Anda sudo kata sandi pengguna, saat Anda menutup konsol atau mengetik exit Anda kembali ke pengguna normal Anda.

Cara yang lebih disukai untuk memberikan izin individu (atau grup) adalah dengan menambahkan file di bawah /etc/sudoers.d

Ini memisahkan perubahan lokal dari kebijakan default dan menghemat waktu jika file sudoers distribusi berubah.

Untuk membuat pengguna yang aat ini masuk ebagai sudoer dan membuat sudo tidak meminta mereka untuk password, menggunakan

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

ini akan membuat file bernama /etc/sudoers.d/$USER (dimana $USER adalah nama pengguna pengguna yang anda masuki seperti saat Anda menjalankan perintah itu), memperjelas pengguna mana yang diberi izin.

Jika Anda ingin melakukannya untuk pengguna yang berbeda, cukup ganti kedua contoh $USER dengan beberapa nama pengguna lain dalam perintah di atas.

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

Demikian pula, satu file dapat digunakan untuk mengelola beberapa arahan:

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

Lihat /etc/sudoers.d/README dan man sudoers untuk informasi lebih lanjut.

Root sudo Timeout adalah cara termudah dan teraman untuk melakukan ini. Saya akan menjelaskan semua contoh tetapi diperingatkan itu sangat berisiko dengan cara apa pun Anda melakukan ini meskipun cara ini jauh lebih aman:

sudo visudo

Ini membuka editor dan mengarahkannya ke file sudoers-default Ubuntu ke nano, sistem lain menggunakan Vi. Anda sekarang adalah pengguna super yang mengedit salah satu file terpenting di sistem Anda. Tidak stres!

(Vi instruksi khusus dicatat dengan (en!). Abaikan ini jika Anda menggunakan nano.)

Gunakan tombol panah untuk bergerak ke akhir Defaults line.

(en!) tekan tombol A (modal "a") untuk bergerak di akhir baris saat ini dan masuk ke mode pengeditan (tambahkan setelah karakter terakhir di baris).

Sekarang ketik:

,timestamp_timeout=X

di mana X adalah batas waktu kedaluwarsa dalam hitungan menit. Jika Anda menentukan 0 Anda akan selalu diminta password. Jika Anda menentukan nilai negatif, batas waktu tidak akan pernah kedaluwarsa. Misalnya. Defaults env_reset,timestamp_timeout=5.

(en!) tekan Escape untuk kembali ke mode perintah. Sekarang, jika Anda senang dengan pengeditan Anda, ketik :w Enter untuk menulis file dan :q Enter untuk keluar vi. jika Anda membuat kesalahan, mungkin cara termudah adalah untuk mengulang dari awal, untuk keluar tanpa menyimpan (hit Escape untuk masuk ke mode perintah) dan kemudian ketik :q! Enter.

Hit Ctrl+X, lalu Y, lalu Enter untuk menyimpan file Anda dan keluar dari nano.

Anda mungkin ingin membaca halaman manual sudoers dan vi untuk informasi tambahan.

man sudoersman vi

Setel ulang nilai batas waktu menggunakan:

sudo -k

Instruksi ini adalah untuk menghapus prompt untuk kata sandi saat menggunakan perintah sudo. Perintah sudo masih perlu digunakan untuk akses root.

Mengedit berkas sudoers

Buka jendela Terminal. Ketik sudo visudo. Tambahkan baris berikut ke akhir file (jika tidak pada akhirnya dapat dibatalkan oleh entri selanjutnya):

<username> ALL=NOPASSWD: ALL

Ganti <username> dengan nama pengguna Anda (tanpa <>). Ini dengan asumsi bahwa Ubuntu telah membuat grup dengan nama yang sama dengan nama pengguna Anda, yang khas. Anda dapat secara bergantian menggunakan pengguna grup atau grup lain yang Anda ikuti. Pastikan Anda berada dalam kelompok itu. Hal ini dapat diperiksa dengan pergi ke System -> Administrasi -> Pengguna dan kelompok.

Contoh:

michael ALL=NOPASSWD: ALL

Jenis dalam ^X (Ctrl+X) untuk keluar. Ini akan meminta opsi untuk menyimpan file, ketik Y untuk menyimpan.

Keluar, lalu masuk kembali. Ini sekarang memungkinkan Anda untuk menjalankan perintah sudo tanpa diminta kata sandi.

Akun root

Mengaktifkan akun root

Mengaktifkan akun root jarang diperlukan. Hampir semua yang perlu Anda lakukan sebagai administrator Sistem Ubuntu dapat dilakukan melalui sudo atau gksudo. Jika Anda benar-benar membutuhkan login root yang persisten, alternatif terbaik adalah mensimulasikan shell login Root menggunakan perintah berikut:

sudo -i

Namun, jika Anda harus Aktifkan login root, Anda dapat melakukannya seperti ini:

sudo passwd root

Menonaktifkan kembali akun root Anda

Jika karena alasan tertentu Anda telah mengaktifkan akun root Anda dan ingin menonaktifkannya lagi, gunakan perintah berikut di terminal:

sudo passwd -dl root

Sudo grup seluruh sistem

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Log out, dan kemudian kembali.

Reset sudo timeout

Anda dapat memastikan sudo meminta kata sandi lain kali dengan menjalankan:

sudo -k

Tentu saja apa yang ingin Anda lakukan tidak disarankan. Setelah beberapa saat, meskipun memasuki sudo menjadi begitu otomatis sehingga kegunaannya berkurang.

Pendekatan lain adalah membiarkan file sudoers Anda Apa Adanya Dan, saat melakukan sesuatu yang rumit ke sekian ratus server Anda, masukkan sudo bash . Itu akan memberi Anda shell yang akan diautentikasi sebagai root sampai Anda keluar.

Bagus satu-kapal untuk menghapus sudo meminta untuk pengguna saat ini

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

Ini adalah solusi satu baris yang juga mengubah izin file seperti yang dinyatakan dalam /etc/sudoers.d/README:

sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' && sudo chmod 440 /etc/sudoers.d/$(logname)

Satu liner

sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'

Dari Super User datang jawaban yang bagus:

Gunakan sakelar-S yang membaca kata sandi dari STDIN:

echo <password> | sudo -S <command>

Ganti <password> dengan kata sandi Anda.

  • Memperluas ide @ upteryx.

  • Ini adalah bagaimana saya menerapkan pengguna non-root, tanpa kata sandi dalam gambar Docker singkat untuk digunakan dalam pipeline CICD:

RUN \    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \    echo "Customized the sudoers file for passwordless access to the foo user!" && \    echo "foo user:";  su - foo -c id

jadi Anda hanya ingin dimintai kata sandi di terminal dan untuk hal-hal lain tidak, atau sebaliknya?! dalam kedua cara, saya pikir itu adalah pelanggaran keamanan yang tinggi

Yang pasti Anda dapat memperpanjang batas waktu. Juga, jika Anda sering melakukan setup server baru Anda harus berpikir tentang mengotomatisasi proses. Anda tidak dibayar untuk mengetik, Anda dibayar untuk memecahkan masalah dan untuk mendapatkan sh*t dilakukan.

Saya ingin sistem yang mungkin tidak meminta password hanya ketika di terminal… untuk tujuan lain sistem harus meminta password.

Persyaratan ini hanya sementara, dan untuk digunakan saat mengkonfigurasi n menginstal server baru… selama instalasi server baru, itu benar-benar mengambil jam mengkonfigurasi dengan perintah sudo… mengeluarkan password setiap 15 menit. adalah sakit kepala. Saya tidak ingin menggunakan akun root.

Anda perlu membaca diskusi di: root - What are the benefits of sudo over su? - Ask Ubuntu

Terkait :[ bagaimana cara menjalankan perintah sudo tanpa kata sandi?] (aws - How to run sudo command with no password? - Ask Ubuntu)