Sudo'yu şifreyle [kapalı] parametresi olarak kullanın


85

Sudo'yu bir komut dosyası için kullanabilmek için şifremi parametre olarak çalıştırmak istiyorum. denedim

sudo -S mypassword execute_command

ama başarılı olamadı. Herhangi bir öneri?


2
sadece betiğinizin "root" tarafından çalıştırılıp çalıştırılmadığını kontrol etmelisiniz. Parolayı
tekrarlamak

4
Bu sudotür kirli saldırılardan kaçınmak için belirli programlara / kullanıcılara / gruplara şifre sormayacak şekilde doğru şekilde yapılandırmak daha iyidir .
acele edin

Yanıtlar:


186

-S anahtarı sudo'nun parolayı STDIN'den okumasını sağlar. Bu yapabileceğin anlamına gelir

echo mypassword | sudo -S command

şifreyi sudo'ya geçirmek için

Ancak, kullanıcının root olup olmadığını kontrol etme gibi bir komutun parçası olarak parolayı geçirmeyi içermeyen başkalarının önerileri, güvenlik nedeniyle muhtemelen çok daha iyi fikirlerdir.


işe yaradı, çok teşekkürler !!
normalUser

günümü kurtardım, çok teşekkürler !!!
AdrianES

Hem ona hem de klasöre yalnızca yürütme izinleri veren özel bir klasöre koymaya ne dersiniz sudo chmod -R 0100 myScriptFolder? Bu, güvenlik sorunlarını çözmez mi (bilgisayarınızı sizden başka kimsenin root olarak kullanmaması koşuluyla)?
Brōtsyorfuzthrāx

Veya yerel ağımın dışındaki bilgisayar korsanları, komut dosyası metnini belirli koşullar altında yürütülürken bir şekilde görebilir mi?
Brōtsyorfuzthrāx

Bu, OSX kutumda benim için bir şampiyon gibi çalıştı! Çözümü paylaştığınız için çok teşekkürler!
Wulf

51

sKomut dosyanızın bitini, ihtiyaç duymaması sudove root olarak çalışması için ayarlayabilirsiniz (ve komut dosyasında kök parolanızı yazmanız gerekmez):

sudo chmod +s myscript

+1. Bu, diğer yöntemlerden çok daha iyi (ve daha güvenlidir).
Burkhard

1
yapışkan bit kötü bir uygulama değil mi?
kbdjockey

@kbdjockey - +ssetuid bitidir. +tyapışkan bittir.
Robᵩ

@Rob - açıkladığınız için teşekkür ederiz
kbdjockey

4
Çoğu işletim sisteminin, yorumlanan komut dosyaları için bu bayrağı göz ardı ettiğini unutmayın. Bu ikili dosyalar üzerinde iyi çalışıyor.
Magnar

26
echo -e "YOURPASSWORD\n" | sudo -S yourcommand

Bu, emrim için bir tartışmam olduğunda işe yaramıyor. Örneğin. echo -e "YOURPASSWORD\n" | sudo -S "run -x". Diyor sudo: run -x: command not found. Bunu nasıl aşacağınıza dair bir fikriniz var mı?
Bee

1
@Bhathiya "tırnak" kullanmayın, örneğin: echo -e "PAROLANIZ \ n" | sudo -S ls -l / root
matteomattei

3

Bir seçenek sudo için -A bayrağını kullanmaktır. Bu, şifreyi sormak için bir program çalıştırır. Sormak yerine, programın devam edebilmesi için parolayı yazan bir betiğiniz olabilir.


-3
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

4
Bu OP'nin sorusuna cevap vermiyor.
codeforester
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.