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.


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).


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.