Bagaimana cara mengizinkan eksekusi tanpa meminta kata sandi menggunakan sudo?

15

Saya menulis aplikasi Java di mana saya perlu melakukan eksekusi baris perintah dan mendapatkan hasil kembali, tetapi ketika saya menjalankan perintah, ia meminta kata sandi sudo. Sejauh ini saya mencoba:

$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root         ALL=(ALL:ALL) NOPASSWD: ALL
javauser     ALL=(ALL:ALL) NOPASSWD: ALL

:wq
$ 4 -r--r-----   1 root root     615 2011-10-26 09:23 sudoers

Setelah saya menjalankan perintah itu lagi meminta "[javauser] kata sandi untuk javauser:". Tetapi saya sudah menyebutkan noPASSWD.

whoamikembali alexdan saya menambahkannya karena ini dalam sudoersfile

# User privilege specification
root    ALL=(ALL:ALL) ALL
alex 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

Berlari terus menanyakan kata sandi saya, ada ide?

muru
sumber
Sepertinya sudah ada pertanyaan yang sangat mirip: askubuntu.com/questions/39281/… - sudahkah Anda mencoba jawabannya dari sana?
Sergey
Pastikan bahwa dalam kode java Anda, Anda menggunakan "sudo / absolute / path / to / command" di panggilan sistem Anda. Btw. untuk alasan keamanan Anda harus menggunakan sudo visudoalih-alih vimmengedit file sudoers. Dengan begitu jika Anda membuat kesalahan, program akan memperingatkan Anda tentang hal itu.
con-f-use
Dapat ditemukan di sini apa sebenarnya yang saya coba: gist.github.com/1315951

Jawaban:

28

Anda perlu melakukan hal berikut, pada tipe terminal sudo visudodan menambahkan baris seperti ini di akhir file yang menentukan perintah yang ingin Anda jalankan tanpa mengetikkan kata sandi sudo (saya sarankan Anda menggunakan setiap perintah yang ingin Anda gunakan dalam program dan tidak hanya mengizinkan semua program dijalankan dengan ini)

<yourusername> ALL=NOPASSWD: <command1>, <command2>

Sekarang Anda dapat menjalankan perintah yang ditentukan tanpa kata sandi selama Anda mengetikkan perintah itu sudo.

yaitu: katakanlah Anda ingin menjalankan shutdown -r nowtanpa harus mengetikkan kata sandi sudo setiap kali dan nama pengguna Anda adalah 'joedoe'

  1. ketik sudo visudodi terminal

  2. Tambahkan joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r nowsebagai baris baru di akhir file , gunakan jalur absolut ke program yang Anda coba gunakan.

  3. pada program Anda, Anda dapat menggunakan sudo shutdown -r nowtanpa harus mengetikkan kata sandi sudo.

Anda dapat menemukan jalur absolut ke suatu program dengan menggunakan which <program name>terminal.

Ini trik yang sangat kotor dan membuat sistem Anda terbuka untuk bahaya lain, tetapi saya kira Anda tahu apa yang Anda lakukan dan menginginkan ini.

Edit

Anda benar-benar perlu memastikan bahwa izin yang Anda atur berada di akhir file sehingga tidak ada yang ditimpa oleh izin grup.

Bruno Pereira
sumber
Sepertinya dia sudah melakukan itu.
con-f-use
Jika dia sudah melakukan itu, mengapa Anda menjelaskan kepadanya bahwa ia harus menggunakan sudo visudodan tidak vimmengedit file sudoers? Jika dia melakukan ini, itu akan berhasil.
Bruno Pereira
1
@goOgle Anda mengetik sudodi depan perintah di dalam kode Anda? Anda perlu melakukannya bahkan jika Anda memaksa nopasswd dalam file sudoers. yaitu: gunakan sudo <command>tidak hanya <command>.
Bruno Pereira
1
Bagi saya cmd = "whoami" kembali brunodan cmd = "sudo whoami"kembaliroot
Bruno Pereira
3
Menemukannya! Dapat mereproduksi ini jika baris saya tidak ada di ujung ke ujung sudoersfile. Setelah penugasan grup, dll. Sungguh baris terakhir! Pindahkan baris untuk menjadi yang terakhir dalam file! (harap ini dia).
Bruno Pereira