Bagaimana cara membuat izin pengguna super bertahan lebih lama daripada menggunakan sudo?

25

Apakah ada cara di mana saya dapat membuat sudoperintah memberi saya izin untuk jangka waktu yang lebih lama dari waktu default?

Bisa jadi susah karena harus tetap memasukkan sudokata sandi, ketika membutuhkan instalasi banyak paket, jadi alangkah baiknya jika ada perintah atau konfigurasi yang dapat dilakukan untuk memengaruhi masa penggunaannya.

TellMeWhy
sumber
3
Jadi, tidak ada yang menggunakan sulagi? Pernah?
Mr Lister
9
@ Tuan sudo -idan Anda memiliki shell root, siap untuk siapa saja untuk membantu shoothing diri di kaki selama sebanyak waktu seperti ...
Rmano
1
@DevRobot, apakah Anda punya sumber untuk itu? Saya merasa agak sulit untuk percaya bahwa Canonical akan menghapus perintah yang begitu penting, dan saya tidak dapat menemukannya di google.
DJMcMayhem
9
@DevRobot sumembutuhkan root untuk memiliki kata sandi. Secara default, pengguna root Ubuntu tidak memiliki kata sandi. Karena itu, Anda tidak dapat sumelakukan root. suberfungsi sebagaimana dimaksud di sini. Coba dengan pengguna yang memiliki kata sandi.
muru
3
@uru sudo subekerja dengan baik, meskipun sedikit berulang.
coteyr

Jawaban:

27

Perilaku sudodikonfigurasi dalam /etc/sudoersfile. Ada timestamp_timeoutopsi yang bertanggung jawab untuk menyusun ulang kata sandi pengguna setelah jangka waktu tertentu.

Dari man sudoers

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.

Untuk mengubah pengaturan itu lakukan hal berikut:

  1. Dalam menjalankan terminal sudo visudo. visudodigunakan khusus untuk mengedit /etc/sudoersfile dan secara default menggunakan nanoeditor teks.
  2. Temukan garis yang dimulai dengan Defaults. Tambahkan baris berikut

    Defaults        timestamp_timeout=x
    

    di mana x adalah jumlah menit yang Anda inginkan di antara reprompts

  3. Simpan file dengan Ctrl+O

Sergiy Kolodyazhnyy
sumber
12

Dari man sudoers:

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “sudo -v” and “sudo -k” respec‐
                       tively.

Seperti yang Anda lihat, batas waktu default sudoadalah 15 menit. Anda dapat mengubah nilai ini di /etc/sudoers.

Anda tidak langsung mengedit /etc/sudoers, melainkan gunakan visudountuk melakukannya.

Dari man visudo:

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

Jadi, ketikkan sudo visudoterminal, yang akan membuka /etc/sudoersfile dalam nanoteks-editor.

Cari baris ini:

Defaults    env_reset

Dan tambahkan di mana X adalah waktu yang ingin Anda atur dalam menit.timestamp_timeout=X

Jadi sebagai contoh:

Defaults    env_reset,timestamp_timeout=5

Jika Anda menentukan 0, Anda akan selalu ditanya kata sandi. Jika Anda menentukan nilai negatif, batas waktu tidak akan pernah berakhir.

Setelah selesai, simpan dan keluar.

Lihat RootSudoTimeout

Ron
sumber
Pukul aku 29 detik =)
Sergiy Kolodyazhnyy
1
Anda baik -_- b Saya menggunakan laptop. . . mungkin saya perlu kopi lagi
Sergiy Kolodyazhnyy
Misalnya, Anda juga dapat menetapkan -1 ke batas waktu - jika Anda tidak pernah ingin prompt kata sandi dipicu.
Michał Żywiecki
8

Coba ini .

  1. Jalankan perintah berikut di Terminal:

    sudo visudo
    
  2. Gulir ke bawah ke garis yang terlihat seperti ini:

    Defaults        env_reset
    
  3. Ubah ke misalnya:

    Defaults        env_reset,timestamp_timeout=30
    

Ubah 30 ke waktu, dalam hitungan menit, yang Anda ingin menunggu sebelum waktu habis. Anda juga dapat mengubahnya menjadi 0 jika Anda menginginkan kata sandi setiap kali Anda menjalankan sudo, atau -1 jika Anda tidak pernah menginginkan kata sandi. Tekan Ctrl+ Xuntuk menyelesaikan pengeditan, Y untuk menyimpan perubahan, dan Enter untuk keluar.

Berikut adalah sumbernya: http://lifehacker.com/make-sudo-sessions-last-longer-in-linux-1221545774

Michał Żywiecki
sumber
5

Anda dapat mengedit /etc/sudoersfile (dengan sudo visudo: hati-hati) dan tambahkan baris seperti

Defaults:myname timestamp_timeout=15 

di mana mynameid pengguna Anda. Nilai batas waktu dalam hitungan menit. Anda dapat menggunakan nilai -1 untuk tidak pernah kedaluwarsa, lalu ketik sudo -kuntuk mematikan autentikasi, sehingga Anda perlu kata sandi lagi.

Atau Anda dapat menambahkan entri untuk mengatakan perintah tertentu tidak memerlukan kata sandi sama sekali.

meuh
sumber
1
+1 untuk menyebutkan sudo -ksecara manual membatalkan otentikasi yang di-cache.
Byte Commander
5

Saya tidak percaya bahwa perintah yang paling sederhana:

sudo -s

tidak disebutkan di sini. Switch "-s" memberi Anda konsol dengan izin root, yang bertahan sampai Anda keluar. Tidak perlu kabur dengan pengaturan default.

Oliver Friedrich
sumber
1
Mengapa down ini dipilih?
coteyr
3
Saya tidak downvote, tapi ini mengalahkan satu keuntungan menggunakan sudo: setiap perintah dicatat (sehingga Anda dapat melihat apa yang Anda lakukan) Anda kehilangan logging itu ketika Anda membuka shell root.
guntbert
1
@ guntbert pasti setiap perintah dicatat, tetapi dalam sejarah pengguna root.
Oliver Friedrich
@BeowulfOF belum tentu - sejarah bash adalah sesuatu yang sama sekali berbeda dari log sistem.
guntbert
1
Sungguh, @ guntbert, jika Anda menggunakan auth log seperti ini, Anda memiliki masalah yang berbeda.
Oliver Friedrich
1

Semua jawaban lain sejauh ini tampaknya berpusat pada perubahan batas waktu default untuk berapa lama sebelum Anda harus mengetik kata sandi lagi sudo. Namun, jika Anda hanya ingin dapat menjalankan perintah sebagai root tanpa menambahkan setiap perintah dengan sudo, Anda bisa mendapatkan shell root dengan:

sudo -i

atau

sudo bash

atau

sudo <your preferred shell here>

Sementara semua ini hanya memulai proses tunggal sebagai root, proses tunggal yang dimaksud kebetulan adalah sebuah shell yang akan memungkinkan Anda untuk memulai sebanyak mungkin proses lain yang Anda inginkan sebagai root tanpa perlu mengetik sudoatau kata sandi. :)

Tentu saja, dengan kekuatan besar datang tanggung jawab besar, jangan lakukan hal-hal bodoh, dll.

reirab
sumber
1
HATI-HATI HATI dengan ini. Akibatnya Anda akan menjalankan shell root.
hmayag
4
Mengapa ini diturunkan?
coteyr
@ hmayag Ya, jika Anda memulai shell root, Anda memang akan menjalankan shell root. Karenanya alasan untuk peringatan di akhir.
reirab
@coteyr Mungkin karena alasan yang sama dengan jawaban BeoWulf.
guntbert
1

Setelah melihat satu terlalu banyak pertanyaan dari pengguna yang memodifikasi file konfigurasi dan bingung tentang mengapa perubahan mereka ditimpa setelah peningkatan paket, saya akan perhatikan bahwa jika Anda ingin memodifikasi timestamp_timeout, lebih baik melakukannya dengan membuat file /etc/sudoers.ddaripada memodifikasi /etc/sudoerssecara langsung.

Jadi, Anda harus melakukannya

sudo visudo -f /etc/sudoers.d/timeout

(nama file bisa apa saja yang Anda inginkan asalkan tidak mengandung titik ( .) atau diakhiri dengan tilde ( ~)). Alih-alih membuka /etc/sudoersdi editor pilihan Anda, itu akan terbuka /etc/sudoers.d/timeout, biasanya sebagai file kosong karena tidak ada. Letakkan

Defaults timestamp_timeout=X

di dalamnya, dan simpan seperti biasa. Kemudian jika versi baru /etc/sudoerskeluar, Anda tidak harus memilih antara menginstal versi yang lebih baru atau menyimpan perubahan - Anda akan memiliki keduanya secara otomatis.

fkraiem
sumber
1

Jika Anda mencari solusi yang tidak mengubah file konfigurasi , misalnya ketika Anda ingin token bertahan lebih lama untuk sesi tertentu, atau itu berlaku hanya setelah tindakan eksplisit, Anda dapat mencoba hal berikut:

# Work as is with Bash 4.1.2(1)-release and later, this might require some adaptation for other shells
(while [ true ]; do sudo -v; sleep $((60*4)); done)&

Pada dasarnya kode sebelumnya menyegarkan token sudo setiap 4 menit , melalui proses yang diluncurkan di latar belakang.

Memang, menurut sudomanual: "batas waktu prompt kata sandi default untuk kebijakan keamanan sudoers adalah 5 menit ." Jadi tergantung pada kebijakan khusus sistem, Anda mungkin men-tweak jumlah waktu loop melewati tidur antara dua siklus.

psychoslave
sumber