Bagaimana cara memperbaiki 'sudo: tidak ada kesalahan tty dan tidak ada program askpass yang ditentukan'?

438

Saya mencoba mengkompilasi beberapa sumber menggunakan makefile. Di makefile ada banyak perintah yang perlu dijalankan sebagai sudo.

Ketika saya mengkompilasi sumber-sumber dari terminal semua berjalan dengan baik dan make dijeda saat pertama kali sudoperintah dijalankan menunggu kata sandi. Setelah saya mengetik kata sandi, buat resume dan selesai.

Tetapi saya ingin dapat mengkompilasi sumber-sumber di NetBeans. Jadi, saya memulai sebuah proyek dan menunjukkan kepada netbeans tempat untuk menemukan sumber, tetapi ketika saya mengkompilasi proyek itu memberikan kesalahan:

sudo: no tty present and no askpass program specified

Pertama kali itu menyentuh sebuah sudoperintah.

Saya telah mencari masalah di internet dan semua solusi yang saya temukan menunjuk pada satu hal: menonaktifkan kata sandi untuk pengguna ini. Karena pengguna yang dimaksud di sini adalah root. Saya tidak ingin melakukan itu.

Apakah ada solusi lain?

hebbo
sumber
3
Saya menyusun sistem operasi mainan. Saya perlu melakukan beberapa hal untuk mengatur VM, termasuk membuat hdd virtual dengan sektor boot.
hebbo
Seperti yang ditunjukkan pada serverfault.com/a/597268 , sudo -n my-commandbekerja untuk saya. HIH!
andreyevbr
1
Silakan pilih jawaban.
ichimaru
1
@ andreyevbr kurasa tidak. sudo: a password is required
ichimaru

Jawaban:

260

Memberi pengguna untuk menggunakan perintah itu tanpa meminta kata sandi harus menyelesaikan masalah. Pertama buka konsol shell dan ketik:

sudo visudo

Kemudian edit file itu untuk ditambahkan sampai akhir:

username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand

misalnya

john ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop

akan memungkinkan pengguna johnuntuk sudo poweroff, startdan stoptanpa diminta kata sandi.

Lihatlah bagian bawah layar untuk penekanan tombol yang perlu Anda gunakan dalam visudo - ini bukan vi - dan keluar tanpa menyimpan pada tanda pertama dari masalah. Peringatan kesehatan: merusak file ini akan memiliki konsekuensi serius, sunting dengan hati-hati!

nicdaniau
sumber
4
Ya, halaman manual sudoers telah membuka mata saya tentang bagaimana seharusnya sudo digunakan.
Spencer Williams
6
visudo harus terbuka dalam EDITOR apa pun yang dikonfigurasi oleh lingkungan Anda untuk digunakan, yang bisa jadi sangat baik (dan harus ^ _ ^) vi.
Matt Styles
8
Pastikan garis matematika NOPASSWD SETELAH garis sudo lain yang mungkin cocok (seperti% roda) yang tidak memiliki bendera NOPASSWD.
anthony
27
saya tidak bisa "sudo visudo" karena saya tidak bisa sudo sejak awal!
Gubatron
8
Pertimbangkan untuk menambahkan file ke /etc/sudoers.d dan membiarkan file visudo tidak tersentuh.
xlttj
183

Mencoba:

  1. Gunakan NOPASSWDbaris untuk semua perintah, maksud saya:

    jenkins ALL=(ALL) NOPASSWD: ALL
    
  2. Letakkan baris setelah semua baris lainnya di sudoersfile.

Itu berhasil bagi saya (Ubuntu 14.04).

Fatemeh Jabbari
sumber
13
Saya pertama kali menambahkan baris setelah konfigurasi pengguna lain, tetapi hanya berfungsi ketika ditempatkan sebagai baris terakhir di file pada Lubuntu 14.04.1.
user77115
Bagian kedua adalah solusi yang saya butuhkan. Baris konfigurasi yang ada (untuk grup roda) juga cocok dengan perintah sudo saya tetapi tanpa entri NOPASSWD :. Menempatkan baris baru saya setelah itu memberikan prioritas, memungkinkan tidak menggunakan kata sandi untuk perintah spesifik yang saya butuhkan.
anthony
5
Seperti @ user77115 sebutkan, ini hanya berfungsi jika Anda menempatkannya sebagai baris terakhir dalam file sudoers, bahkan dengan Ubuntu 16.04. Sebagai catatan tambahan, memberikan sudo izin ke jenkins untuk semua perintah adalah masalah keamanan yang cukup besar. Pertimbangkan untuk membungkus skrip jenkins Anda dan hanya memberikan akses ke perintah tertentu seperti: jenkins ALL=(ALL) NOPASSWD: /var/lib/jenkins/wrapper_script
ivandov
jenkinshanya nama pengguna? Itu harus nama pengguna pengguna dari mesin host? Bagaimana jika nama pengguna pada mesin host cocok dengan nama pengguna dari server jauh?
mrgloom
ini spesifik jenkins, sepertinya stackoverflow.com/a/22651598/1041319 adalah solusi yang lebih umum.
arntg
167

Mencoba:

ssh -t remotehost "sudo <cmd>"

Ini akan menghapus kesalahan di atas.

pengguna262129
sumber
7
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machinelihat juga: sudo-no-tty-present-and-no-askpass-program-ditentukan Juga sudo -Amemungkinkan pengaturan sudoprogram askpass, tapi saya hanya melihat GUI. Adakah yang tahu izin untuk diijinkan ssh remotehost sudo -A askpass?
sini
1
Koreksi, -Auntuk sudotidak mengambil argumen dan sebagai gantinya membutuhkan lingkungan SUDO_ASKPASSatau sudo.conf Jadi ssh remotehost sudo -A commandakan tetap bekerja. Masih penasaran dengan program askpass berbasis terminal.
sini
7
ini tidak bekerja untuk saya (mungkin karena saya menelepon ssh dari skrip), memberi saya kesalahan Pseudo-terminal will not be allocated because stdin is not a terminal.:(
knocte
Bekerja bagus untukku. Terima kasih!
xfra35
1
Ini tidak menjawab pertanyaan.
bschlueter
126

Setelah semua alternatif, saya menemukan:

sudo -S <cmd>

Opsi -S (stdin) menyebabkan sudo membaca kata sandi dari input standar dan bukan perangkat terminal.

Sumber

Perintah di atas masih membutuhkan kata sandi untuk dimasukkan. Untuk menghapus memasukkan kata sandi secara manual, dalam kasus seperti jenkins, perintah ini berfungsi:

echo <password> | sudo -S <cmd> 
Vingt Cent
sumber
Ini sepertinya memperbaiki masalah saya. Tetapi apakah ada efek samping dengan menggunakan perintah ini?
Xiaodong Qi
3
sudo -S <command>- truekebetulan merupakan perintah dummy yang mengembalikan kode keluar 0 ( falseadalah perintah yang mengembalikan 1). Terima kasih, ini adalah jawaban yang benar, karena semua yang lain mengharapkan "sudo" bekerja!
Adam Plocher
1
-S: Tulis prompt ke kesalahan standar dan baca kata sandi dari input standar daripada menggunakan perangkat terminal. Kata sandi harus diikuti oleh karakter baris baru.
fileinster
Ini berfungsi segera, dan bisa membuat sudo berfungsi sampai waktu habis, tetapi tidak mengatasi masalah mendasar apa pun yang mungkin ada, dan masalahnya bisa kembali.
nealmcb
Saya tidak tahu apakah ini berfungsi tetapi ini menunjukkan Password:maka tidak ada yang terjadi. Saya tidak bisa mengetikkan kata sandi.
ichimaru
43

sudosecara default akan membaca kata sandi dari terminal terlampir. Masalah Anda adalah tidak ada terminal yang terpasang ketika dijalankan dari konsol netbeans. Jadi, Anda harus menggunakan cara alternatif untuk memasukkan kata sandi: itu disebut program askpass .

Program askpass bukanlah program tertentu, tetapi program apa pun yang dapat meminta kata sandi. Misalnya di sistem saya x11-ssh-askpassberfungsi dengan baik.

Untuk melakukan itu, Anda harus menentukan program apa yang akan digunakan, baik dengan variabel lingkungan SUDO_ASKPASSatau dalam sudo.conffile (lihat man sudountuk detail).

Anda dapat memaksa sudountuk menggunakan program askpass dengan menggunakan opsi -A. Secara default ia hanya akan menggunakannya jika tidak ada terminal yang terpasang.

rodrigo
sumber
Solusi saat ini membutuhkan gui. Program askpass apa yang berfungsi pada terminal.
sini
@di sini: Baiklah ... jika Anda menjalankan ssh dari terminal, ia akan meminta kata sandi secara langsung, Anda tidak memerlukan sesuatu yang istimewa ... Atau apakah Anda bertanya tentang meminta kata sandi dari terminal yang berbeda daripada yang akan jalankan sesi ssh?
rodrigo
1
ahh sekarang saya melihat bahwa -Atidak perlu argumen. -Amemerlukan lingkungan SUDO_ASKPASSatau sudo.conffile. Dalam hal ini, ssh host "export SUDO_ASKPASS=askpass;sudo -A cat /etc/passwd"masih akan bekerja dengan askpass berbasis terminal, namun @chandru jauh lebih ringkas di bawah ini denganssh -t ...
sini
Ada beberapa cavat dengan menggunakan -A. Pertama, jika -A digunakan dan SUDO_ASKPASS belum disetel, Anda akan mendapatkan kesalahan. Kedua, ketika -A digunakan ssh tidak akan menggunakan kredensial yang di-cache, itu akan selalu meminta kata sandi.
anthony
Sebagai adendum, Anda mungkin ingin melihat catatan saya tentang program input kata sandi ... ict.griffith.edu.au/anthony/info/crypto/passwd_input.txt
anthony
26

Untuk pengguna Ubuntu 16.04

Ada file yang harus Anda baca:

cat /etc/sudoers.d/README

Menempatkan file dengan mode 0440 di /etc/sudoers.d/myuser dengan konten berikut:

myuser  ALL=(ALL) NOPASSWD: ALL

Haruskah memperbaiki masalah.

Jangan lupa untuk:

chmod 0440 /etc/sudoers.d/myuser
Vasili Pascal
sumber
Bagus. Solusi yang lebih bersih daripada yang populer.
Paul Praet
2
Jangan ikuti ini secara membabi buta. Saya membuat file baru di /etc/sudoers.d seperti yang dijelaskan di sini dan akhirnya tidak dapat menggunakan sudo lagi .. harus menghapus file melalui mode pemulihan.
Stian
25

Coba yang ini:

echo '' | sudo -S my_command
sNICkerssss
sumber
Ini bekerja untuk saya, tetapi adakah yang bisa menjelaskan mengapa ini membantu?
ololobus
@ololobus Anda mengirim kata sandi kosong ke perintah pertama untuk memasukkan kata sandi
Nikita Koksharov
Bekerja! Tidak ada jawaban berperingkat tinggi yang memecahkannya untuk saya.
drerD
1
Ia mengembalikan kesalahan berikut: [sudo] password for alper: Sorry, try again. [sudo] password for alper: sudo: 1 incorrect password attempt @sNICkerssss
alper
16

Jika kebetulan Anda datang ke sini karena Anda tidak bisa sudo di dalam Ubuntu yang datang dengan Windows10

  1. Edit file / etc / hosts dari Windows (dengan Notepad), itu akan berlokasi di %localappdata\lxss\rootfs\etc:, tambahkan 127.0.0.1 WINDOWS8, ini akan menghilangkan kesalahan pertama yang tidak dapat menemukan host.

  2. Untuk menghilangkan no tty presentkesalahan, selalu lakukansudo -S <command>

Gubatron
sumber
2
Terima kasih telah memberikan jawaban untuk orang-orang yang datang ke sini karena suatu alasan yang tidak terkait dengan deskripsi pertanyaan, tetapi sesuai dengan judul pertanyaan. +1
Jayant Bhawal
15

Masuk ke linux Anda. Menembak perintah berikut. Hati-hati, karena mengedit sudoer adalah proposisi yang berisiko.

$ sudo visudo

Setelah vi editor terbuka, lakukan perubahan berikut:

  1. Beri komentar Defaults requiretty

    # Defaults    requiretty
    
  2. Pergi ke akhir file dan tambahkan

    jenkins ALL=(ALL) NOPASSWD: ALL
    
Susil Parida
sumber
12

Dalam Jenkins :

echo '<your-password>' | sudo -S command

Misalnya : -

echo '******' | sudo -S service nginx restart

Anda dapat menggunakan Mask Mask Plugin untuk menyembunyikan kata sandi Anda

Ankit Gupta
sumber
11

Ini bekerja untuk saya:

echo "myuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

di mana pengguna Anda "pengguna"

untuk gambar Docker, itu hanya akan menjadi:

RUN echo "myuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Alexander Mills
sumber
9

Pastikan perintah yang Anda sudoambil adalah bagian dari perintah Anda PATH.

Jika Anda memiliki sudoersentri perintah tunggal (atau multi, tetapi bukan SEMUA) , Anda akan mendapatkan sudo: no tty present and no askpass program specifiedketika perintah bukan bagian dari jalur Anda (dan jalur lengkap tidak ditentukan).

Anda dapat memperbaikinya dengan menambahkan perintah ke Anda PATHatau menjalankannya dengan jalur absolut, yaitu

sudo /usr/sbin/ipset

Dari pada

sudo ipset

omribahumi
sumber
1
Ini sebenarnya bercabang untuk saya. masuk sudoers %sitd ALL=(lamparna) NOPASSWD: /usr/bin/git_push_to_lamparna.sh, /usr/bin/gitdan gunakan sudo -u lamparna git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.gitdi git post-update hook return no tty, tetapi menggunakan sudo -u lamparna /usr/bin/git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.gitwork tanpa kata sandi.
Foton
7

Perintah sudogagal karena sedang mencoba untuk meminta kata sandi root dan tidak ada pseudo-tty yang dialokasikan (karena itu bagian dari skrip).

Anda harus masuk sebagai root untuk menjalankan perintah ini atau mengatur aturan berikut di /etc/sudoers (atau sudo visudo:) Anda:

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

Kemudian pastikan bahwa pengguna Anda milik admingrup (atau wheel).

Idealnya (lebih aman) adalah membatasi hak root hanya untuk perintah tertentu yang dapat ditentukan sebagai %admin ALL=(ALL) NOPASSWD:/path/to/program

kenorb
sumber
Saya tahu, itu cara yang lebih aman untuk dilakukan. Meskipun, saya menulis perintah berikut dalam sudoersfile apache ALL = (ALL) NOPASSWD:/usr/share/apache-tomcat-7.0.61/bin/startup.shtetapi tidak berhasil untuk saya. itu memberikan kesalahan berikutsudo: >>> /etc/sudoers: syntax error near line 120 <<< sudo: parse error in /etc/sudoers near line 120 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
muaaz
1
BTW, itu bekerja dengan baik apache ALL=(ALL) NOPASSWD: ALLtetapi risiko keamanan. :)
muaaz
6

Saya pikir saya dapat membantu seseorang dengan kasus saya.

Pertama, saya mengubah pengaturan pengguna dengan /etc/sudoersmerujuk pada jawaban di atas. Tapi itu masih tidak berhasil.

myuser   ALL=(ALL) NOPASSWD: ALL
%mygroup  ALL=(ALL:ALL) ALL

Dalam kasus saya, myuserberada di mygroup.

Dan saya tidak butuh kelompok. Jadi, hapus baris itu.

(Seharusnya tidak menghapus baris seperti saya, hanya menandai komentar.)

myuser   ALL=(ALL) NOPASSWD: ALL

Berhasil!

kihoon han
sumber
3

Menjalankan skrip shell yang berisi perintah sudo di dalamnya dari jenkins mungkin tidak berjalan seperti yang diharapkan. Untuk memperbaikinya, ikuti

Langkah sederhana:

  1. Pada sistem berbasis ubuntu, jalankan "$ sudo visudo"

  2. ini akan membuka file / etc / sudoers.

  3. Jika pengguna jenkins Anda sudah ada di file itu, maka modifikasi agar terlihat seperti ini:

jenkins ALL = (ALL) NOPASSWD: ALL

  1. simpan file

  2. Luncurkan kembali pekerjaan jenkins Anda

  3. Anda seharusnya tidak melihat pesan kesalahan itu lagi :)

Chandra Pal
sumber
3

Saya bisa menyelesaikan ini tetapi pastikan untuk mengikuti langkah-langkahnya dengan benar. Ini untuk siapa saja yang mendapatkan kesalahan impor.

Langkah1 : Periksa apakah file dan folder telah menjalankan eksekusi izin. Penggunaan pengguna Linux:

chmod 777 filename

Langkah2 : Periksa pengguna mana yang memiliki izin untuk menjalankannya.

Langkah 3 : buka terminal ketik perintah ini.

sudo visudo

tambahkan baris ini ke kode di bawah ini

www-data ALL=(ALL) NOPASSWD:ALL
nobody ALL=(ALL) NOPASSWD:/ALL

ini untuk memberikan izin untuk mengeksekusi skrip dan mengizinkannya untuk menggunakan semua perpustakaan. Pengguna umumnya adalah 'tidak ada' atau 'data-www'.

sekarang edit kode Anda sebagai

echo shell_exec('sudo -u the_user_of_the_file python your_file_name.py 2>&1');

pergi ke terminal untuk memeriksa apakah proses sedang berjalan ketik ini di sana ...

ps aux | grep python

ini akan menampilkan semua proses yang berjalan di python.

Add Ons : gunakan kode di bawah ini untuk memeriksa pengguna di sistem Anda

cut -d: -f1 /etc/passwd

Terima kasih!

3rdi
sumber
2

Kesalahan ini juga dapat muncul ketika Anda mencoba menjalankan perintah terminal (yang memerlukan kata sandi root) dari beberapa skrip non-shell, misalnya sudo ls(dalam backticks) dari program Ruby. Dalam hal ini, Anda dapat menggunakan utilitas Expect ( http://en.wikipedia.org/wiki/Expect ) atau alternatifnya.
Misalnya, di Ruby untuk dieksekusi sudo lstanpa mendapatkan sudo: no tty present and no askpass program specified, Anda dapat menjalankan ini:

require 'ruby_expect'

exp = RubyExpect::Expect.spawn('sudo ls', :debug => true)
exp.procedure do
    each do
        expect "[sudo] password for _your_username_:" do
            send _your_password_
        end
    end
end

[ini menggunakan salah satu alternatif untuk mengharapkan ekstensi TCL: ruby_expect gem].

danau
sumber
2

Untuk referensi, seandainya ada orang lain yang mengalami masalah yang sama, saya macet selama jam yang baik dengan kesalahan ini yang seharusnya tidak terjadi karena saya menggunakan parameter NOPASSWD.

Apa yang saya TIDAK tahu adalah bahwa sudo dapat memunculkan pesan kesalahan yang sama persis ketika tidak ada tty dan perintah yang pengguna coba luncurkan bukanlah bagian dari perintah yang diizinkan dalam file / etc / sudoers.

Di sini contoh sederhana konten file saya dengan masalah saya:

bguser ALL = NOPASSWD: \
    command_a arg_a, \
    command_b arg_b \
    command_c arg_c

Ketika bguser akan mencoba untuk meluncurkan "sudo command_b arg_b" tanpa tty (bguser digunakan untuk beberapa daemon), maka ia akan menemui kesalahan "tidak ada tty sekarang dan tidak ada program askpass yang ditentukan".

Mengapa?

Karena koma tidak ada di akhir baris di file / etc / sudoers ...

(Saya bahkan bertanya-tanya apakah ini merupakan perilaku yang diharapkan dan bukan bug di sudo karena pesan kesalahan yang benar untuk kasus semacam itu seharusnya menjadi "Maaf, pengguna bguser tidak diizinkan untuk mengeksekusi dll.")

WhiteWinterWolf
sumber
2

Saya mendapatkan kesalahan ini karena saya telah membatasi pengguna saya hanya untuk satu 'systemctl' yang dapat dieksekusi dan telah salah mengonfigurasi file visudo.

Inilah yang saya miliki:

jenkins ALL=NOPASSWD: systemctl

Namun, Anda harus menyertakan path lengkap ke executable, bahkan jika path itu ada di path Anda secara default, misalnya:

jenkins ALL=NOPASSWD: /bin/systemctl

Ini memungkinkan pengguna jenkins saya untuk memulai kembali layanan tetapi tidak memiliki akses root penuh

dannrob
sumber
1

Tidak ada yang memberi tahu apa yang dapat menyebabkan kesalahan ini, jika terjadi migrasi dari satu host ke host lain, ingat tentang memeriksa nama host dalam file sudoers:

Jadi ini konfigurasi saya / etc / sudoers

User_Alias      POWERUSER = user_name
Cmnd_Alias SKILL = /root/bin/sudo_auth_wrapper.sh
POWERUSER hostname=(root:root) NOPASSWD: SKILL

jika tidak cocok

uname -a
Linux other_hostname 3.10.17 #1 SMP Wed Oct 23 16:28:33 CDT 2013 x86_64 Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz GenuineIntel GNU/Linux

itu akan memunculkan kesalahan ini:

tidak ada tty hadir dan tidak ada program askpass yang ditentukan

Abc Xyz
sumber
1

Opsi lain, tidak berdasarkan pada NOPASSWD:

  • Mulai Netbeans dengan privilege root ((sudo netbeans) atau yang serupa) yang mungkin akan memotong proses build dengan root dan dengan demikian sudo secara otomatis akan berhasil.
  • Buat operasi yang perlu Anda lakukan suexec - buatlah itu dimiliki oleh root, dan setel mode ke 4755. (Ini tentu saja akan membiarkan setiap pengguna di mesin menjalankannya.) Dengan begitu, mereka tidak memerlukan sudo sama sekali.
  • Membuat file hard disk virtual dengan bootsectors seharusnya tidak memerlukan sudo sama sekali. File hanya file, dan bootsector hanyalah data. Bahkan mesin virtual seharusnya tidak perlu root, kecuali Anda melakukan penerusan perangkat canggih.
Jon Watte
sumber
1

Mungkin pertanyaannya tidak jelas mengapa tidak ada jawaban yang cocok tetapi saya memiliki pesan kesalahan yang sama ketika saya mencoba me-mount sshfs yang membutuhkan sudo: perintahnya kira-kira seperti ini:

sshfs -o sftp_server="/usr/bin/sudo /usr/lib/openssh/sftp-server" [email protected]:/var/www /mnt/sshfs/www

dengan menambahkan opsi -o debug

sshfs -o debug -o sftp_server="/usr/bin/sudo /usr/lib/openssh/sftp-server" [email protected]:/var/www /mnt/sshfs/www

Saya memiliki pesan yang sama dari pertanyaan ini:

sudo: no tty present and no askpass program specified

Jadi dengan membaca jawaban orang lain saya menjadi membuat file di /etc/sudoer.d/usermy.server.tld dengan:

user ALL=NOPASSWD: /usr/lib/openssh/sftp-server

dan sekarang saya dapat memasang drive tanpa memberi terlalu banyak hak ekstra kepada pengguna saya.

JOduMonT
sumber
0

Meskipun pertanyaan ini sudah lama, masih relevan untuk sistem saya yang terbaru. Setelah mengaktifkan mode debug sudo ( Debug sudo /var/log/sudo_debug all@infoin /etc/sudo.conf) saya diarahkan ke / dev: " /dev is world writable". Jadi, Anda mungkin perlu memeriksa izin file tty , terutama dari direktori tempat simpul tty / pts berada.

u_Ltd.
sumber
0

1 buka / etc / sudoers

jenis sudo vi /etc/sudoers. Ini akan membuka file Anda dalam mode edit.

2 Tambah / Ubah pengguna linux

Cari entri untuk pengguna Linux. Ubah seperti di bawah ini jika ditemukan atau tambahkan baris baru.

<USERNAME> ALL=(ALL) NOPASSWD: ALL

3 Simpan dan Keluar dari mode edit

Maulik Kakadiya
sumber
0

Jika Anda menambahkan baris ini ke /etc/sudoers(via visudo) Anda, ini akan memperbaiki masalah ini tanpa harus menonaktifkan memasukkan kata sandi Anda dan ketika alias untuk sudo -Stidak berfungsi (panggilan skrip sudo):

Defaults visiblepw

Tentu saja bacalah manualnya sendiri untuk memahaminya, tetapi saya pikir untuk kasus penggunaan saya menjalankan dalam wadah LXD melalui lxc exec instance -- /bin/bashcukup aman karena tidak mencetak kata sandi melalui jaringan.

salotz
sumber
0

Menggunakan pipa:

echo your_pswd | sudo -S your_cmd

Gunakan di sini-dokumen:

sudo -S cmd <<eof
pwd
eof
#remember to put the above two lines without "any" indentations.

Buka terminal untuk menanyakan kata sandi (mana yang berfungsi):

gnome-terminal -e "sudo cmd"
xterm -e "sudo cmd"
Himanshu Tanwar
sumber