Pertanyaan Jalankan sudo tanpa kata sandi?


Terinspirasi oleh ini pertanyaan....

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

CATATAN: Saya ingin menjalankan perintah sudo tanpa otentikasi melalui kata sandi; hanya ketika mereka dieksekusi melalui terminal.
Saya tidak ingin menghapus lapisan keamanan tambahan ini dari fungsi lain seperti saat menggunakan 'pusat perangkat lunak Ubuntu' atau menjalankan skrip bash dengan men-drag-drop file something.sh ke terminal.


220
2018-06-06 12:30


asal


jadi Anda hanya ingin dimintai kata sandi di terminal dan untuk hal-hal lain tidak, atau sebaliknya? dalam dua hal, saya pikir itu adalah pelanggaran keamanan yang tinggi - Dr_Bunsen
Saya ingin sistem itu tidak menanyakan kata sandi hanya ketika di terminal ... untuk tujuan lain sistem harus menanyakan kata sandi. Persyaratan ini hanya sementara, dan untuk digunakan saat mengkonfigurasi n menginstal server baru .. selama instalasi server baru, itu benar-benar memerlukan waktu berjam-jam untuk mengkonfigurasi dengan perintah sudo .. mengeluarkan kata sandi setiap 15 menit. sakit kepala. Saya tidak ingin menggunakan akun root. - Z9iT
Anda perlu membaca diskusi di: askubuntu.com/questions/135428/… - david6
Pastinya Anda bisa memperpanjang timeout. Juga, jika Anda sering melakukan pengaturan server baru Anda harus berpikir tentang mengotomatisasi proses. Anda tidak dibayar untuk mengetik, Anda dibayar untuk memecahkan masalah dan untuk mendapatkan pekerjaan. - MauganRa
Terkait: Bagaimana menjalankan perintah sudo tanpa kata sandi? - Eliah Kagan


Jawaban:


sudo -i adalah cara untuk pergi jika Anda tidak ingin mengetikkan 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 mengalihkan Anda ke root menggunakan Anda sudo kata sandi pengguna, ketika Anda menutup konsol atau mengetik exit Anda kembali ke pengguna normal Anda.


63
2018-06-06 13:36



Apakah ini benar bahwa saya memasukkan kata sandi hanya sekali ... dan sampai waktu saya tidak keluar; cuaca 5 jam. atau 15 .... sistem tidak akan meminta otentikasi dengan kata sandi ketika perintah sudo apa pun dikeluarkan. - Z9iT
@ Z9iT sampai Anda mengetik exit atau sampai Anda menutup jendela emulator terminal. - Bruno Pereira
Terima kasih .. Menerima jawaban ini karena server tujuan mengeluarkan perintah sudo tanpa autentikasi kata sandi untuk n-jam hingga waktu kita tidak keluar. Tidak mengubah file sistem adalah nilai plus. - Z9iT
Ini tidak benar-benar menjawab pertanyaan, karena Anda masih perlu memasukkan kata sandi untuk menjadi root pada saat itu. - Adam F
Tidak jika Anda menjalankan mesin virtual di lingkungan yang aman dan Anda hanya ingin melakukan sesuatu dengan segera dan Anda tidak ingin berurusan dengan kata sandi. Jawaban ini tidak menjawab pertanyaan, sementara itu bisa dibilang informasi bermanfaat. Saya setuju dengan Adam F - Jonathan Komar


Pendekatan untuk memecahkan masalah Anda adalah menempatkan pengguna Anda dalam file sudoers, seperti yang Anda lihat.

Buka jendela terminal dan ketik:

sudo visudo

Di bagian bawah file, ketik yang diikuti:

$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 memiliki), tekan ctl + x untuk keluar nano (tetapi perhatikan bahwa screenshot di bawah ini menunjukkan vim), dan itu akan meminta Anda untuk menyimpan).

sudoers file]

Setelah ini, Anda bisa, di jendela terminal, ketik sudo <Whatever you want>, tanpa diminta kata sandinya.

Ini hanya berlaku, untuk sudo perintah di jendela terminal. Misalnya, ketika Anda mencoba memasang paket di pusat perangkat lunak, Anda akan diminta memasukkan kata sandi, seperti yang dapat Anda lihat di Screenshot berikutnya.

gui password prompt

Saya pikir ini yang Anda inginkan.


438
2018-06-06 13:20



Ini direkomendasikan untuk digunakan sudo visudo bukannya mengeditnya secara langsung. Juga mengubah izin dari sudoers dapat mengunci diri Anda. Saat mengedit dengan vim, gunakan :wq! untuk menulis ke file hanya-baca dan keluar dari editor. Dengan cara itu, izin 644 tidak diperlukan. - Lekensteyn
Ini adalah risiko keamanan yang serius, siapa pun yang mengambil alih akun apa pun dengan hak sudo dapat mengendalikan sistem lengkap dan mengunci akses lebih lanjut ke komputer ini, sungguh tidak disarankan. - Bruno Pereira
@ wil93 Anda kehilangan intinya: naskah yang membutuhkan sudo install crapware tidak akan meminta kata sandi dalam kasus ini dan mungkin mengacaukan semua yang Anda miliki, dan Anda tidak perlu secara fisik di samping mesin untuk mendistribusikan skrip terakhir kali saya memeriksanya ... Ini hanyalah sebuah contoh. - Bruno Pereira
@BrunoPereira Jika Anda berencana untuk menjalankan skrip yang tidak dipercaya bahwa adalah risiko keamanan (bahkan jika sudo meminta kata sandi, skrip berbahaya selalu bisa dilakukan rm -rf ~mengacaukan beberapa hal). Secara keseluruhan, saya tidak akan menyebut «risiko keamanan serius» penghapusan sederhana dari kata sandi prompt dari sudo. - wil93
Setujui dengan @ wil93. Saat menjalankan skrip tidak tepercaya, memasukkan kata sandi tidak lebih dari kesempatan untuk membatalkan proses, sementara saya meragukan itu tidak berguna bagi kebanyakan orang. Intinya adalah Anda tahu darimana naskah itu berasal dan apa fungsinya. - Chad


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

sudo visudo

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

(Vi instruksi spesifik dicatat dengan (vi!). Abaikan ini jika Anda menggunakan nano.)

Gunakan tombol panah untuk pindah ke ujung Defaults garis.

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

Sekarang ketik:

,timestamp_timeout=X

di mana X adalah waktu habis waktu habis dalam beberapa menit. Jika Anda menentukan 0, Anda akan selalu ditanya kata sandinya. Jika Anda menentukan nilai negatif, batas waktu tidak akan pernah kedaluwarsa. Misalnya. Defaults env_reset,timestamp_timeout=5.

(vi!) tekan Escape untuk kembali ke mode perintah. Sekarang, jika Anda senang dengan penyuntingan Anda, ketik :w  Memasukkan untuk menulis file dan :q  Memasukkan untuk keluar dari vi. Jika Anda melakukan kesalahan, mungkin cara termudah adalah mengulang dari awal, untuk keluar tanpa menyimpan (klik Melarikan diri untuk memasuki mode perintah) dan kemudian ketik: q! Memasukkan.

Memukul Ctrl+X, kemudian Y, kemudian Memasukkan untuk menyimpan file Anda dan keluar dari nano.

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

man sudoers
man vi

Setel ulang nilai waktu habis menggunakan:

sudo -k

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

Edit file sudoers

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

<username> ALL=NOPASSWD: ALL

Menggantikan <username> dengan nama pengguna Anda (tanpa <>). Ini mengasumsikan 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 mana pun Anda berada. Pastikan saja Anda berada di grup itu. Ini dapat diperiksa dengan masuk ke Sistem -> Administrasi -> Pengguna dan Grup.

Contoh:

michael ALL=NOPASSWD: ALL

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

Logout, dan kemudian masuk kembali. Sekarang ini seharusnya 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 memerlukan login root 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

Nonaktifkan 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

System-wide group sudo

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

Logout, dan kemudian kembali.

Setel ulang waktu habis sudo

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

sudo -k

30
2017-10-30 01:15



Saya memposting ini sebelum saya menambahkan, untuk cara sistem yang luas dalam melakukan ini dan yang lain baca di sini: - user209328
Ini adalah jawaban yang terlambat, tetapi yang paling komprehensif dalam hal opsi yang diberikannya kepada Anda. - jenming


Cara yang 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 dalam kasus perubahan file sudoers distribusi.

Sebagai contoh:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Akan membuatnya sangat jelas yang mana pengguna diberikan izin.

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

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

Silahkan lihat /etc/sudoers.d/README  untuk informasi lebih lanjut.


10
2018-02-01 15:54



perintah echo gagal, meskipun saya root. tetapi, saya menambahkan file dan mengeditnya secara langsung dan ini bekerja pada ubuntu terbaru (sedangkan menambahkan pengguna ke sudoers secara langsung tidak!) - scape
Cara yang benar adalah melakukannya tee perintah. - woto


Nice one-liner untuk menghapus sudo meminta pengguna saat ini

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

5
2018-06-27 17:50



Saya pikir Anda hanya bisa melakukan: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, saja visudo kebutuhan sudo setelah semua (dan bahkan env tidak akan diperlukan dalam konfigurasi default, IIRC). - muru
ada begitu banyak yang bisa salah di sini (semua kesalahan pengguna, tentu saja), yang lebih disukai, menurut pendapat saya yang sangat sederhana, untuk mengedit file sudoer secara langsung (sudo visudo), saat menguji hasilnya (dengan editor masih terbuka), bagi pengguna baru yang mungkin tergoda untuk mencoba "satu-liner" ini. - michael
Terima kasih untuk umpan baliknya! Saya hanya dengan cepat mencoba script-ify penghapusan sudo password prompt di VMs pengujian volatile saya. Jangan sungkan untuk menyarankan peningkatan :) - Eric Landry


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

Pendekatan lain adalah meninggalkan file sudoers Anda sebagaimana adanya dan, sambil melakukan sesuatu yang rumit untuk ratusan ribu server Anda, masukkan sudo bash. Itu akan memberi Anda shell yang akan diotentikasi sebagai root sampai Anda keluar.


4
2018-06-06 13:27



sudo -s atau sudo -i mungkin keduanya lebih baik daripada ide sudo bash, karena mereka memastikan lingkungan adalah waras dan hal-hal. - Darael
"waras dan hal-hal" pada umumnya tidak berada dalam ranah "ide yang lebih baik", bisakah seseorang memberikan penjelasan teknis mengapa sudo -s atau sudo -i lebih baik daripada sudo bash? (Sunting: Ini pertanyaan yang relevan askubuntu.com/questions/376199/… ) - Nuzzolilo
sejumlah sudo perintah (terutama memikirkan sudo pip ...) membutuhkan sudo -H (mengatur RUMAH) agar perintah berjalan dengan benar. Dalam kasus lain, sudo -E (pertahankan env) mungkin diperlukan. Lari sudo bash mungkin akan bekerja dalam banyak kasus, tetapi tidak semuanya, dan ketika tidak, tidak akan jelas mengapa. - michael
sudo su adalah cara tradisional untuk berganti peran dan mulai bertindak sebagai admin sys. - user1656671


Dari Pengguna Super ada jawaban yang bagus:

Gunakan tombol -S yang membaca kata sandi dari STDIN:

echo <password> | sudo -S <command>

Menggantikan <password> dengan kata sandi Anda.


1
2018-05-17 00:12