Kata pengantar
Ini adalah pertanyaan yang cukup rumit terkait dengan file Sudoers dan perintah sudo secara umum.
CATATAN: Saya telah membuat perubahan ini pada mesin khusus yang menjalankan Ubuntu Desktop 13.04, yang saya gunakan murni untuk tujuan pembelajaran. Saya mengerti ini adalah risiko keamanan yang sangat besar untuk mengaktifkan sudo NOPASSWD.
Pertanyaan
Awalnya, perubahan saya hanya pada file sudoers (/ etc / sudoers) adalah satu baris, spesifikasi pengguna yang seharusnya mengaktifkan 'nicholsonjf' untuk menjalankan semua perintah dengan sudo tanpa harus memasukkan kata sandi (lihat baris yang dimulai dengan 'nicholsonjf '):
# 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_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
nicholsonjf ALL=NOPASSWD: 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.d
Namun, ini tidak berhasil, dan saya masih diminta kata sandi saya setiap kali saya menjalankan perintah sebagai 'nicholsonjf'. Saya hanya dapat mulai menjalankan perintah sudo sebagai 'nicholsonjf' setelah saya menghapus 'nicholsonjf' dari grup sudo dan admin.
Adakah yang bisa menjelaskan mengapa ini berhasil?
Apakah karena pengguna 'nicholsonjf' mewarisi hak sudo dari dua spesifikasi grup 'admin' dan 'sudo' (terlihat di bawah dalam file sudoers), yang mengesampingkan spesifikasi pengguna 'nicholsonjf' karena mereka lebih jauh turun dalam file konfigurasi?
Jawaban:
Baris yang Anda tambahkan diganti. Dari
man sudoers
:Dalam kasus Anda
nicholsonjf
adalah anggota grupsudo
sehingga baginya baris ini berlaku:Jika Anda ingin mengganti entri,
/etc/sudoers
cukup masukkan entri baru setelahnya.Entri baru akan terlihat seperti
myuser ALL=(ALL) NOPASSWD: ALL
untuk satu pengguna, atau%sudo ALL=(ALL) NOPASSWD: ALL
untuk grup.sumber
NOPASSWD
jawaban ini ...%sudo ALL=(ALL) NOPASSWD:ALL
nicholsonjf ALL=NOPASSWD: ALL
sudah benar. Itu hanya di tempat yang salah seperti yang saya jelaskan dalam jawaban. ------Runas
Spesifikasi - dalam kasus Anda(ALL)
- adalah opsional. Jika Anda menghilangkan spesifikasi, Anda dapat menjalankan perintah sebagairoot
dan Anda tidak dapat menggunakan-u
dan-g
opsisudo
.Untuk satu pengguna, tambahkan baris ini di akhir
sudoers
file Anda menggunakansudo visudo
Untuk grup
sumber
%sudo ALL=NOPASSWD: ALL
dan berhasil. Apakah saya satu-satunya yang menemukan Formulir Extended Backus-Naur benar-benar sulit untuk dipahami?sudo
tanpa kata sandi sebagai pengguna tanpa hak sudo. Misalnyasudo -u root -i
berhasil, tetapisudo -u git -i
tidak.Untuk tidak pernah meminta pengguna saat ini untuk kata sandi saat pengguna itu
sudo
melakukannyaini akan membuat file bernama
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password
dan akan berarti bahwa pengguna yang Anda jalankan perintah itu tidak akan diminta kata sandi ketika menjalankansudo
perintah. Anda masih akan dimintai kata sandi dalam konteks lain, seperti menginstal hal-hal dari aplikasi grafis Perangkat Lunak Ubuntu .Keuntungan melakukannya dengan cara ini daripada menambahkan baris dalam
echo
perintah untuk/etc/sudoers
menggunakansudo visudo
(seperti yang disarankan oleh jawaban lain) adalah/etc/sudoers
kadang-kadang dimodifikasi oleh pembaruan sistem, sedangkan file di/etc/sudoers.d
tidaksudo visudo
metode adalah rentan terhadap kesalahan (yang dibuktikan dengan pertanyaan ini), sedangkan copy / paste sebuah perintah jauh lebih sulit untuk mengacaukanMenurut
sudo cat /etc/sudoers.d/README
fitur ini (memasukkan file sudoer tambahan/etc/sudoers.d
) telah diaktifkan secara default sejak Debian 1.7.2p1-1, yang keluar pada akhir 1990-an (Ubuntu didasarkan pada Debian ).sumber
Seperti Vince telah disebutkan dalam komentar , Anda dapat menggunakan baris ini:
(Hal ini berbeda dari garis yang ditunjukkan dalam mereka jawaban , dan memecahkan masalah bagi saya.)
sumber
supergroup
dalam jawaban Fedir dengansudo
. Bagaimana selanjutnya, pengguna lain untuk grupwheel
? Atau grup lain yang kebetulan digunakan pengguna?supergroup
dalam jawaban Fedir dengansudo
." Apa? Menggantisupergroup
dengansudo
dalam garis%supergroup ALL=(ALL) NOPASSWD:ALL
menghasilkan%sudo ALL=(ALL) NOPASSWD:ALL
, bukan%sudo ALL=NOPASSWD: ALL
.supergroup
dengansudo
. Ini adalah jawabannya sendiri, bukan posting terima kasih atau salinan dari jawaban lain. Tapi ya, saya setuju: kecuali mereka bermaksud demikian , ini tidak akan sebaik bagi kebanyakan pengguna seperti metode dalam jawaban lainnya. (Tapi, terutama mengingat pertanyaannya mengatakan "semua perintah," bukan "semua pengguna target," Saya tidak berpikir ini berlaku bahkan tidak berusaha untuk menjawab pertanyaan yang diajukan.)