Terinspirasi oleh pertanyaan ini ....
Saya 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 akun root ; bagaimana saya bisa menjalankan perintah sudo yang tidak akan meminta kata sandi pengguna untuk mengotentikasi.
CATATAN: Saya ingin menjalankan perintah sudo tanpa mengautentikasi 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 menyeret-jatuhkan file something.sh ke terminal.
command-line
password
sudo
root
Bhavesh Diwan
sumber
sumber
Jawaban:
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 mengalihkan Anda untuk melakukan root menggunakan
sudo
kata sandi pengguna Anda , ketika Anda menutup konsol atau mengetikexit
Anda kembali ke pengguna normal Anda.sumber
exit
atau sampai Anda menutup jendela terminal emulator.Anda dapat mengonfigurasi
sudo
untuk tidak pernah meminta kata sandi Anda.Buka jendela Terminal dan ketik:
Di bagian bawah file, tambahkan baris berikut:
Di mana
$USER
nama pengguna Anda di sistem Anda. Simpan dan tutup file sudoers (jika Anda belum mengubah editor terminal default Anda (Anda akan tahu jika sudah), tekan ctl + x untuk keluarnano
dan itu akan meminta Anda untuk menyimpan).Pada Ubuntu 19.04, file tersebut sekarang akan terlihat seperti
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 lunaksumber
sudo visudo
daripada mengeditnya secara langsung. Juga mengubah izin sudoers dapat mengunci diri. Saat mengedit denganvim
, gunakan:wq!
untuk menulis ke file hanya-baca dan keluar dari editor. Dengan cara itu, izin 644 tidak diperlukan.sudo install crapware
tidak akan meminta kata sandi dalam hal ini dan mungkin mengacaukan semua yang Anda miliki, dan Anda tidak perlu secara fisik di sebelah mesin untuk mendistribusikan skrip terakhir kali saya memeriksa. .. Ini hanya sebuah contoh.rm -rf ~
beberapa hal mengacaukan). Secara keseluruhan, saya tidak akan menyebut «risiko keamanan serius» penghapusan kata sandi yang sederhana dari sudo.Waktu tunggu root sudo adalah cara termudah dan teraman untuk melakukan ini. Saya akan memberikan semua contoh, tetapi berhati-hatilah karena Anda berisiko melakukan hal ini meskipun cara ini jauh lebih aman:
Ini membuka editor dan mengarahkannya ke file sudoers - default Ubuntu untuk nano, sistem lain menggunakan Vi. Anda sekarang adalah pengguna super yang mengedit salah satu file paling penting di sistem Anda. Tanpa stres!
(Instruksi spesifik dicatat dengan (vi!) . Abaikan ini jika Anda menggunakan nano.)
Gunakan tombol panah untuk pindah ke ujung
Defaults
garis.(vi!) tekan tombol A (kapital "a") untuk bergerak di akhir baris saat ini dan masuk ke mode pengeditan (tambahkan setelah karakter terakhir di baris).
Sekarang ketik:
di mana X adalah batas waktu habis dalam hitungan menit. Jika Anda menentukan 0, Anda akan selalu ditanya kata sandi. Jika Anda menentukan nilai negatif, batas waktu tidak akan pernah berakhir. Misalnya
Defaults env_reset,timestamp_timeout=5
.(vi!) tekan Escape untuk kembali ke mode perintah. Sekarang, jika Anda senang dengan pengeditan Anda, ketik
:w
Enteruntuk menulis file dan:q
Enteruntuk keluar vi. Jika Anda melakukan kesalahan, mungkin cara termudah adalah mengulang dari awal, keluar tanpa menyimpan (tekan Escapeuntuk masuk ke mode perintah) dan kemudian ketik: q! Enter.Tekan Ctrl+ X, lalu Y, Enteruntuk menyimpan file Anda dan keluar dari nano.
Anda mungkin ingin membaca sudoers dan halaman manual untuk informasi tambahan.
Setel ulang nilai batas waktu menggunakan:
Instruksi ini untuk menghapus prompt kata sandi saat menggunakan perintah sudo. Perintah sudo masih perlu digunakan untuk akses root.
Edit file sudoers
Buka jendela Terminal. Ketikkan
sudo visudo
. Tambahkan baris berikut ke END file (jika tidak pada akhirnya itu dapat dibatalkan oleh entri yang lebih baru):Ganti
<username>
dengan nama pengguna Anda (tanpa<>
). Ini dengan asumsi bahwa Ubuntu telah membuat grup dengan nama yang sama dengan nama pengguna Anda, yang tipikal. Anda dapat menggunakan pengguna grup atau grup lain yang Anda gunakan secara bergantian. Pastikan Anda berada di dalam grup itu. Ini dapat diperiksa dengan masuk ke Sistem -> Administrasi -> Pengguna dan Grup.Contoh:
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 membutuhkan login root persisten, alternatif terbaik adalah mensimulasikan shell login Root menggunakan perintah berikut:
Namun, jika Anda harus mengaktifkan login root, Anda dapat melakukannya seperti ini:
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 grup seluruh sistem
Logout, lalu kembali.
Setel ulang waktu tunggu sudo
Anda dapat memastikan sudo meminta kata sandi lain kali dengan menjalankan:
sumber
sudo env EDITOR=/bin/nano visudo
untuk mengedit dengan andalsudoers
di nano. (pembaruan-alternatif dapat digunakan untuk mengatur editor juga)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 jika file distribusi sudoer berubah.
Untuk membuat pengguna yang saat ini masuk sebagai sudoer dan membuat
sudo
mereka tidak meminta kata sandi, gunakanini akan membuat file bernama
/etc/sudoers.d/$USER
(di mana$USER
nama pengguna pengguna yang Anda masuki saat Anda menjalankan perintah itu), membuatnya menjadi jelas pengguna mana yang diberikan izin.Jika Anda ingin melakukan itu untuk pengguna yang berbeda, ganti saja kedua instance
$USER
dengan beberapa nama pengguna lain pada perintah di atas.Demikian pula, satu file dapat digunakan untuk mengelola beberapa arahan:
Lihat
/etc/sudoers.d/README
danman sudoers
untuk informasi lebih lanjut.sumber
tee
perintah.sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
sudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
redirection shell dieksekusi di shell asli, jadi itu hanya bisa bekerja di root shell.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Satu baris yang bagus untuk menghapus sudo meminta pengguna saat ini
sumber
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
hanyavisudo
perlusudo
setelah semua (dan bahkanenv
tidak akan diperlukan dalam konfigurasi default, IIRC).sudo visudo
), saat menguji hasilnya (dengan editor masih terbuka), untuk para pengguna baru yang mungkin tergoda untuk mencoba "satu garis" ini.sudo chmod 440 /etc/sudoers.d/$(logname)
memperbaiki izin file seperti yang dinyatakan dalam README di direktori itu.Tentu saja apa yang ingin Anda lakukan tidak disarankan. Setelah beberapa saat, meskipun masuk
sudo
menjadi begitu otomatis sehingga kegunaannya berkurang.Pendekatan lain adalah membiarkan file sudoers Anda apa adanya dan, sambil melakukan sesuatu yang rumit pada sekian ratus server Anda, masukkan
sudo bash
. Itu akan memberi Anda shell yang akan diautentikasi sebagai root sampai Anda keluar.sumber
sudo -s
atausudo -i
mungkin keduanya adalah ide yang lebih baik daripadasudo bash
, karena mereka memastikan lingkungan itu waras dan benda.sudo
perintah (terutama memikirkansudo pip ...
) memerlukansudo -H
(set HOME) agar perintah dapat berjalan dengan baik. Dalam kasus lain,sudo -E
(simpan env) mungkin diperlukan. Menjalankansudo bash
mungkin akan berhasil dalam kebanyakan kasus, tetapi tidak dalam semua, dan ketika tidak, itu tidak akan jelas mengapa.Dari Super User datang jawaban yang bagus:
Gunakan saklar -S yang membaca kata sandi dari STDIN:
Ganti
<password>
dengan kata sandi Anda.sumber
echo
sehingga tidak muncul dalam sejarah?Satu liner
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
sumber
Ini adalah solusi satu baris yang juga mengubah izin file seperti yang dinyatakan dalam
/etc/sudoer.d/README
:sumber
Memperluas gagasan @upteryx.
Inilah cara saya menerapkan pengguna non-root, tanpa kata sandi dalam Docker Image yang singkat untuk digunakan dalam pipa CICD:
sumber