Saya perlu sudo tanpa kata sandi, untuk skrip. Di mana saya salah?

9

Saya berada di grup sudo:

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

Di sudores saya, saya tampaknya memiliki pengaturan yang sesuai:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

dan itu adalah baris terakhir tanpa komentar di sana.

Tetapi ketika saya mencoba git pull, saya ingin mengetik ulang kata sandi saya:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

Ini bukan masalah ketika saya login konsol, tetapi tidak dapat diterima dalam skrip. Jadi, bagaimana saya bisa mengizinkan siapa pun di grup sudo git pull sebagai www-data tanpa mengetik ulang kata sandi?

Ketika saya meletakkan nama saya secara langsung:

molot ALL=(ALL) NOPASSWD: ALL

ini bekerja untuk saya. Tapi, jelas, tidak untuk pengguna maria atau lainnya dari grup sudo. Sejauh yang saya mengerti manual , baik nama pengguna dan nama grup harus berfungsi dalam file pertama.

Mołot
sumber
Bisa Anda tidak sudo -u www-data ./your_script.sh? Apa tujuan naskah?
jimbobmcgee
@ jimbobmcgee itu adalah git hook, jadi tidak, saya tidak bisa menambahkan apa pun padanya. Itu disebut oleh pengguna yang mendorong perubahan git dan saya tidak menemukan jalan nyata di sekitarnya.
Mołot
Bidang pertama (jika pemahaman cepat saya tentang sudoersformat file sudah benar) adalah nama pengguna dari pengguna yang memohon. Sudahkah Anda mencoba menggantinya dengan wildcard *, atau pengguna mana saja yang menjalankan git hook?
CVn
@ MichaelKjörling sebagaimana dinyatakan di sini harus memungkinkan untuk menulis pengguna dan grup di kolom pertama. *tidak bekerja. Menempatkan nama saya secara langsung bekerja untuk saya ... tetapi tidak untuk pengguna lain dalam grup sudo, jelas.
Mołot
@ MichaelKjörling terima kasih, komentar Anda membuat saya mencari karakter khusus dan memungkinkan saya untuk menemukan jawaban: D Edit: jawaban yang dihapus sendiri dan menerima jawaban pihak ke-3 dari saat yang sama.
Mołot

Jawaban:

19

Tampaknya Anda memiliki baris yang relevan di sudoers Anda kehilangan karakter:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

cocok dengan pengguna bernama 'sudo'. Untuk 'semua pengguna dalam grup sudo' seharusnya:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(perhatikan tanda% di awal).

rafalmp
sumber
1
Ah jadi itu yang %di %wheelmaksud.
nikhil
1

sudo visudo

Kemudian, dengan anggapan sebagai molotnama pengguna Anda, pergi ke akhir file dan:

molot ALL=(ALL) NOPASSWD: ALL

Ini seharusnya bekerja, tetapi jika tidak, teruskan kami posting.

Jugurtha Hadjar
sumber
Ini bekerja. Untuk saya. Tapi, jelas, bukan untuk marian atau pengguna lain di grup sudo.
Mołot
Kemudian buat alias pengguna ( User_Alias), dan berikan izin untuk menjalankan perintah tertentu sebagai root ( Runas_Alias). Aku tidak tahu bagaimana kelompok Anda set-up, Anda dapat memeriksa sudoers wiki help.ubuntu.com/community/Sudoers Ini benar-benar ringkas. Periksa bagian "Spesifikasi Pengguna", ini seharusnya membantu.
Jugurtha Hadjar