Saya punya satu mesin build yang memiliki pengguna abc
yang memiliki akses sudo terbatas. Ketika saya memeriksa kode sumber dan menjalankan skrip build saya, itu berfungsi dengan baik. Skrip build berisi sudo
panggilan yang tidak tertulis "sudo: tidak ada tty yang ada dan tidak ada program askpass yang ditentukan". Tetapi ketika saya melakukan hal yang sama dengan Jenkins pada mesin build yang ditambahkan sebagai slave, itu menunjukkan "sudo: tidak ada tty dan tidak ada program askpass yang ditentukan".
Saya telah menemukan satu solusi yang mengatakan komentar Default requiretty
di file /etc/sudoers
. Tetapi saya tidak memiliki akses ke file ini.
Bagaimana saya bisa mengatasi masalah ini?
sudo
tty
not-root-user
jenkins
Niraj
sumber
sumber
sudo
diizinkan untuk dijalankan tanpa memasukkan kata sandi? Jika Anda harus memasukkan kata sandi, sudo akan membutuhkan tty.Jawaban:
Ada dua opsi, komentari
Defaults requiretty
pengaturan dari / etc / sudoers seperti yang Anda sebutkan atau gunakan-t
argumen pseudo-tty alokasi ( ) untukssh
.Coba yang berikut ini dalam skrip jenkins Anda:
ssh -t 127.0.0.1 "sudo command"
Meskipun Anda harus
ssh
mengkonfigurasi kunci yang dibagikan sebelumnya untuk Anda sendiri dan menjalankannya sekali secara manual untuk menambahkan entri ke host yang dikenal, sebagai alternatif tambahkan-o StrictHostKeyChecking=no
argumenssh
untuk mengabaikannya.sumber
Gagal, karena
sudo
mencoba meminta kata sandi root dan tidak ada pseudo-tty yang dialokasikan.Anda harus masuk sebagai root atau mengatur aturan berikut di
/etc/sudoers
(atausudo visudo
:):Kemudian pastikan bahwa pengguna Jenkins Anda milik
admin
grup (atauwheel
).Idealnya (lebih aman) adalah membatasi hak root hanya untuk perintah tertentu yang dapat ditentukan sebagai
%admin ALL=(ALL) NOPASSWD:/path/to/program
sumber
Jika Anda menjalankan perintah melalui ssh, Anda perlu memeriksa opsi "Exec in pty".
sumber