Bagaimana cara menambah kata sandi sudo mengingat batas waktu?

61

Saya sudah tahu bahwa saya perlu menyetel file / etc / sudoers tetapi saya ingin melihat informasi lengkap dan juga solusi yang tidak mengharuskan saya menggunakan vieditor.

Perbarui: tidak pernah mencoba mengedit file dengan sesuatu yang lain selain visudo.

Sorin
sumber
1
Anda dapat mengatur EDITOR env var sambil menggunakan visudo :: sudo env EDITOR = nano visudo
Good Person

Jawaban:

86

Jalankan sudo visudodan tambahkan baris ini:

Defaults    timestamp_timeout=-1

Lihat man 5 sudoers. -1menyebabkan kata sandi tidak pernah habis. Anda dapat mengubah nomor menjadi apa pun yang Anda suka dalam hitungan menit.

Halaman manual untuk sudomengatakan bahwa sudo -v"memperpanjang batas waktu sudo selama 5 menit".

Menjalankan 'sudo visudo' alih-alih mengedit file secara langsung menyebabkan sistem memvalidasi file sudoers sebelum melakukan perubahan. Misalnya, jika Anda meninggalkan karakter tersesat di suatu tempat, ketika Anda menyimpan dan keluar, itu akan mengatakan "ada kesalahan dalam file sudoers, apa yang ingin Anda lakukan?" ... karenanya memberi Anda kesempatan untuk kembali dan mengedit. Ini sebenarnya baru saja terjadi pada saya 10 menit yang lalu.

lhf
sumber
20
Ya, tetapi visudojalankan beberapa pemeriksaan kewarasan dasar pada file sudoers sebelum menyimpan. Jika Anda mengacaukan file dengan menggunakan visecara langsung, Anda dapat mengunci diri dari menggunakan sudo sehingga sangat sulit untuk membatalkan perubahan.
nohillside
4
Hak istimewa seperti itu pada sistem lain, jadi tidak ada hubungannya dengan Apple. visudomembungkus editor default sistem (saya kira default pengguna root jika root telah menimpa default), jadi tidak ada hubungannya dengan vi bar nama. Di sistem saya (bukan apple btw) saya mendapatkan nano. Coba export EDITOR='/bin/nano'atau editor apa pun yang Anda suka kemudian gunakan visudo.
Chris
4
Um ... Anda tidak dapat menggunakan root untuk memperbaikinya, karena Anda tidak dapat melakukan root, karena Anda baru saja mengisi file sudo Anda ... Itulah intinya.
daviewales
1
Dalam peran profesional, Anda mungkin memiliki akses ke sudo tetapi tidak memiliki kata sandi root. Server Anda mungkin berada di pusat data di seluruh negara sehingga sulit untuk mengakses mode pengguna tunggal. Tetapi, jika Anda dikatakan profesional, Anda mungkin tidak akan diberi peringatan seperti itu. Intinya adalah Anda harus belajar dari para profesional. Jangan mencari cara untuk menghindari membentuk kebiasaan yang baik. Maka kami harus mendengar teriakan panik Anda di Stack Exchange dan IRC.
Bruno Bronosky
1
(Mungkin sudah jelas bagi semua orang, tetapi menambahkan): timestamp_timeout dalam hitungan menit, mungkin termasuk komponen fraksional.
pengguna
3

Berhati - hatilah dalam memodifikasi /etc/sudoerssecara langsung!

Misalnya, saya langsung mencoba saran di atas:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

yang mengacaukan /etc/sudoersfile saya (pada CentOS Virtualbox VM). Seharusnya:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Untungnya, saya memiliki akses ke akun root, masuk sebagai root, menggunakan visudodan memperbaiki masalah! Jadi, saya setuju dengan komentar di atas visudosebagai gantinya.

pengguna304227
sumber
1

Semua informasi untuk sudoers dapat ditemukan dari terminal dengan perintah

man sudoers

Anda bahkan dapat pengguna teks sederhana untuk mengedit file, namun privs menyulitkan. sudoers adalah-r--r----- (Octal 0440)

Ini menunjukkan bahwa Apple benar-benar tidak ingin Anda mengacaukan file tersebut. Ini benar-benar adalah inti keamanan OS.

Pilihan untuk mengedit adalah vi, emacs, atau BBEdit favorit pribadi saya.

Andrei Freeman
sumber
5
Ada alasan mengapa hak istimewa itu ditetapkan. Mereka diatur dalam upaya untuk memaksa Anda menggunakan visudodaripada mengedit file sendiri. Juga, ini tidak ada hubungannya dengan OS X. Ini standar * nix. Juga, jika Anda ingin menggunakan editor non-default, cukup atur $EDITORvariabel lingkungan sebelum menelepon visudo. mis EDITOR=nano sudo visudo.
daviewales
1

Nonaktifkan sudo timeout dengan perintah ini:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Untuk mengaktifkan kembali batas waktu sudo dengan metode ini:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers
patpat
sumber
8
Dari halaman manual sudoers: File sudoers harus selalu diedit oleh perintah visudo yang mengunci file dan melakukan pengecekan tata bahasa. Sangat penting bahwa sudoers bebas dari kesalahan sintaksis karena sudo tidak akan berjalan dengan file sudoers yang salah secara sintaksis.
Matteo
@ Matteo Yah Anda bisa melakukan apa saja di properti Anda sendiri asalkan Anda mengetahui konsekuensinya. Dalam beberapa situasi ini tidak masalah, misalnya saya menggunakannya pada pembuatan mac baru yang tidak memiliki data berharga sebagai bagian dari skrip otomatisasi. Saya menyarankan edit untuk jawaban ini untuk memberikan peringatan. Idealnya sudoharus memiliki cara satu-baris untuk mengubah ini tanpa harus mengedit file!
samthebest
1
Hati-hati, ini saran yang berbahaya. Gunakan visudo saja.
Will Sheppard