Bagaimana cara mengatur `sudo` tanpa kata sandi di Linux?

156

Bagaimana sudoakses tanpa kata sandi diatur pada RHEL (Fedora, CentOS, dll) atau distribusi Ubuntu? (Jika sama di seluruh distro, itu lebih baik!)

Pengaturan: peralatan pribadi dan / atau laboratorium / pelatihan tanpa mempedulikan akses yang tidak sah (yaitu, perangkat berada di jaringan non-publik, dan setiap / semua pengguna sepenuhnya dipercaya, dan konten perangkat adalah "plain-vanilla") .

warren
sumber
1
Jawaban dari @Richipal adalah actullay yang bekerja paling baik dengan sedikit usaha: tampaknya aturan sudoers berlaku dalam urutan terbalik.
1
2
Aturan a1an diterapkan dalam urutan yang sama seperti yang tercantum dalam file sudoers, dan ketika diterapkan, mereka semacam saling menimpa. Oleh karena itu jika saya tidak ingin aturan berubah sama sekali saya akan meletakkannya di akhir file sehingga diterapkan pada akhirnya dan tidak dapat diganti.
rsjethani

Jawaban:

173

EDIT terima kasih atas komentar medina: Menurut halaman manual, Anda harus dapat menulis

ALL            ALL = (ALL) NOPASSWD: ALL

untuk memungkinkan semua pengguna menjalankan semua perintah tanpa kata sandi.


Untuk referensi, saya meninggalkan jawaban saya sebelumnya:

Jika Anda menambahkan satu baris formulir

%wheel         ALL = (ALL) NOPASSWD: ALL

untuk /etc/sudoers(menggunakan visudoperintah, tentu saja), itu akan memungkinkan semua orang dalam grup wheelmenjalankan perintah apa pun tanpa memberikan kata sandi. Jadi saya pikir solusi terbaik adalah dengan menempatkan semua pengguna Anda di beberapa grup dan meletakkan garis seperti itu di sudoers- jelas Anda harus mengganti wheeldengan grup yang sebenarnya Anda gunakan.

Atau, Anda dapat menentukan alias pengguna,

User_Alias     EVERYONE = user1, user2, user3, ...

dan gunakan itu:

EVERYONE       ALL = (ALL) NOPASSWD: ALL

meskipun Anda harus memperbarui /etc/sudoerssetiap kali Anda menambah atau menghapus pengguna.

David Z
sumber
2
Tidak ALLberfungsi daripada *menentukan semua pengguna? Lihat contoh di sudoers(5).
medina
1
@medina: begitulah, saya melewatkannya ketika saya membaca halaman manual. Saya akan mengedit.
David Z
6
di bawah Ubuntu, membuat file di bawah /etc/sudoers.d dan memasukkan entri ini di dalamnya maka itu akan menghentikan Anda harus mengedit sudoers
Xetius
1
Di CentOS7, entri ini ada secara default, hanya dikomentari.
killjoy
1
Hanya berhasil menggunakannya dalam centOS dengan menyalin / menempel, gagal setiap upaya untuk mengetik langsung konfigurasi. Tetapi hasilnya tampaknya identik kecuali untuk spasi ...
MUY Belgium
96

Saya mencoba solusi di atas tetapi tidak berhasil. Solusi berikut ini berfungsi untuk saya Edit file / etc / sudoers dan tambahkan baris berikut

username ALL=(ALL) NOPASSWD: ALL

The key adalah dengan menambahkan setelah baris terakhir yang mengatakan

#includedir /etc/sudoers.d
Richipal
sumber
1
//, Ini sepertinya cara yang lebih baik untuk melakukannya, terutama ketika aplikasi tertentu akan menambahkan aturan mereka sendiri untuk pengguna sistem, Richipal. Info lebih lanjut tentang sudoers.d: sudo.ws/man/1.8.13/sudoers.man.html
Nathan Basanese
1
//, apakah Anda bersedia menambahkan beberapa diagnostik dari Gearoid Murphy ke jawaban Anda?
Nathan Basanese
1
Terima kasih atas klarifikasi ini. Menambahkannya setelah baris #includedir /etc/sudoers.d tampaknya penting di CentOS 7 sedangkan tampaknya berfungsi dengan baik untuk memiliki baris sebelumnya dalam file di CentOS 6.
dmohr
3
Masalah dengan mengabaikan NOPASSWD% wheel tampaknya muncul dari /etc/sudoers.d/USERNAMEmengesampingkan izin NOPASSWD grup. Menerapkan NOPASSWD dalam /etc/sudoers.d/USERNAMEmenyelesaikan masalah.
belut ghEEz
1
Besar untuk yang satu ini, setelah memasukkan penting
Theodore Howell
27

Saya mencoba semua jawaban di halaman ini, tanpa hasil yang bermanfaat. Akhirnya saya menemukan jawabannya, gunakan perintah ini untuk mencantumkan hak sudo Anda:

sudo -l

Ini akan memberi Anda output seperti ini:

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL

Ini menunjukkan bahwa saya dikonfigurasi dengan hak akses root tetapi saya masih merupakan bagian dari grup (admin) yang cocok dengan aturan sudo yang mengharapkan kata sandi ("(SEMUA) SEMUA"). Ini memaksa sudo untuk meminta saya. Aturan yang dimaksud adalah pengguna admin:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Begitu saya berkomentar, saya bisa sudo tanpa kata sandi. Saya harap ini berguna bagi orang lain.

Murphy Gearoid
sumber
1
Ahhh, terima kasih! Ini membuat saya gila ... dalam kasus saya, pengguna saya adalah bagian dari grup "sudo" serta "admin" (yang saya buat), dan izin pada masing-masingnya tidak cocok, karena mereka ada dalam kasus Anda . Sekarang ini berfungsi! :)
neezer
14
Mengomentari garis keluar adalah instrumen yang tumpul. Anda mungkin tertarik mendengar bahwa "sudo membaca file sudoers dan menerapkan izin secara berurutan dari atas ke bawah. Jadi baris terakhir dalam file tersebut akan menimpa konflik sebelumnya" menurut ubuntuforums.org/showthread.php?t=1132821 - - dan ini berhasil untuk saya.
David J.
10

Di dalam /etc/sudoersada contoh hanya itu di bagian bawah file:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
Ignacio Vazquez-Abrams
sumber
2
sampel itu tidak ada pada saya - tetapi terima kasih!
warren
1
Sukai jawaban ringkas Anda
Tn. Pei
6

Ada cara lain untuk melakukannya tanpa menyentuh file sudoers.

  • Edit /etc/pam.d/sudan batalkan komentar pada baris di bawah ini:

    auth           sufficient      pam_wheel.so trust use_uid
    
  • Tambahkan pengguna ke wheelgrup.

topdog
sumber
2

Ada cara lain untuk melakukannya tanpa menyentuh file sudoers.

  • Edit /etc/pam.d/sudodan tambahkan baris di bawah ini:

    auth cukup pam_wheel.so percaya use_uid
  • Tambahkan pengguna ke wheelgrup.

Alat peraga untuk "topdog" dan "Daniel Serodio" untuk jawaban asli sehubungan dengan "su" daripada "sudo". Saya menggunakan itu sebagai referensi dan tanpa malu-malu menyalin, dan mengubah pos mereka.

noabody
sumber
1
Saya pikir daripada menyalin kata demi kata, akan lebih baik untuk memberi kredit pada mereka, tetapi lebih jelas tentang bagaimana sebenarnya jawaban Anda berbeda. Saya menganggap ini memungkinkan tanpa kata sandi su, bukan / serta tanpa kata sandi sudo? Ngomong-ngomong, penambahan Daniel hanya memformat.
mwfearnley