Parolaları bir kabuk komut dosyasına geçirmek mümkün müdür?


11

Uzun zamandır bunun için arıyorum, ben bir kabuk betiği şifreleri geçmek mümkün olduğunu bilmek istiyorum? Cevapların çoğu hayır ile geri döndü. Son zamanlarda bir kabuk komut dosyasında şifreleri geçmek nasıl belirten bir makale okudum. Bunu denedim, ama işe yaramıyor gibi görünüyor. Bu bağlantı . Herkes checkitout ve geri dönebilir mi? Ayrıca pls bana bir kabuk komut dosyasında şifreleri geçmek için bir yolu olduğunu söylüyor? Hayır pls bana linux şifre için giriş alır söyle?

Yanıtlar:


12

"Parola girerek", muhtemelen kullanıcı için görünür olmadan veri girmek anlamına gelir.

(geirha tarafından önerilir) bash kullanırken, -syazılan karakterlerin görüntülenmesini önlemek için bu seçeneği kullanabilirsiniz :

read -p "Password please: " -s pass

Alternatif olarak, stty -echo(devre dışı echo) tuşuyla yazılan karakterleri gizlemek için terminalin davranışını değiştirin . Kabuğu yerleşik readbir değişkenle (aşağıdaki örnekte $pass) parolayı okuduktan sonra , ile tekrar açın stty echo. 'Den yeni satır Entergizlendiğinden , yeni bir satıra gelecekteki çıktıları almak için yeni bir satır yazdırmanız gerekir.

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

readve printfkabuk yerleşiktir. varsayılan olarak yüklenen paket sttytarafından sağlanır coreutils. Bu, bu pasajın çok taşınabilir olduğu anlamına gelir.

Not: -pseçenek standart değil bash,. Diğer kabuklarda bir istem görüntülemeniz gerekiyorsa, şunu kullanın:

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

Referanslar:


Komut dosyasındaki uzak sistemin kök şifresini vermek istiyorum. Sizin durumunuzda mümkün mü?
karthick87

@ karthick87: hayır, bu komut dosyası yalnızca kullanıcının yazdığı verileri etkileşimli olarak yakalar. Komut dosyalarına root parolaları koymak istiyorsanız, neden anahtar tabanlı girişleri düşünmüyorsunuz?
Lekensteyn

1
Bash'in okumasının satırda okurken yankıyı devre dışı bırakma seçeneği de vardır. Bkz help '\read'.
geirha

İçinde zshelde edilebilir read -s 'pw?Prompt text', nerede pwşifre yerleştirileceği bir değişken ve -sgirişi gizlemek için bir bayraktır.
baldrs

2

Hangi programa şifre geçirmek istiyorsunuz?

Bağlantıdaki senaryo benim için çalışıyor. Bunun bir kabuk komut dosyası değil, bir bekleme komut dosyası olduğunu unutmayın (paketin expectyüklenmesi gerekir`). Beklemeyi kullanmak, metin tabanlı etkileşimli programları otomatikleştirmenin yaygın bir yoludur.

Etkileşimli olmayan sshgirişler genellikle boş parola ile anahtar tabanlı kimlik doğrulama kullanılarak yapılır.

Diğer bazı programlar (gibi sudo) stdin'den bir parola okuma seçeneklerine sahiptir.

Komut satırı seçeneği olarak bir parola sağlamak, çoğu sistemde herhangi bir kullanıcının gibi basit araçları kullanarak komut satırı argümanları da dahil olmak üzere diğer tüm kullanıcı süreçlerini görebileceği gibi genellikle bir güvenlik sorunudur ps.


Ben sadece ssh programına bir şifre geçmek istiyorum.
karthick87

Bu nedenle belki anahtar kimlik doğrulaması sizin için işe yarar: ssh-keygenBir kimlik doğrulama anahtarı oluşturmak için kullanın (yalnızca bir şifre deyimi istendiğinde Enter tuşuna basın) ve ssh-copy-idsshd için anahtar kimlik doğrulaması etkinse (varsayılan olarak) ssh sizden şifre istemeyin.
Florian Diesch


0

Parolaları bir bash betiğinde depolamanın bir yolu vardır, ancak betiği tam olarak ne yaptığını görmek için kimsenin okuyamayacağı veya üzerinde herhangi bir hata ayıklayıcı çalıştıracak şekilde şifrelemeniz gerekir. Bir bash / shell betiğini şifrelemek ve gerçekten yürütülebilir olmasını sağlamak için, buraya kopyalayıp yapıştırmayı deneyin

Yukarıdaki sayfada, tek yapmanız gereken senaryonuzu göndermektir (gönül rahatlığınız için önce örnek bir senaryo gönderebilirsiniz). Sizin için bir zip dosyası oluşturulacaktır. İndirme bağlantısını sağ tıklayın ve sağladığınız URL'yi kopyalayın. Ardından, UNIX kutunuza gidin ve aşağıdaki adımları uygulayın.

Kurulum:

   wget link-to-the-zip-file
   unzip the-newly-downloaded-zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

Yukarıdaki kurulum komutunun sizin için yapacağı şey:

  1. Şifrelenmiş komut dosyasını dizine yükler /var/tmp/KINGLAZY/SHIELDX-(your-script-name).

  2. Bu şifrelenmiş komut dosyasının bağlantısını yerine değiştirdiğiniz dizine yerleştirir /home/(your-username)- bu şekilde, mutlak yolu yazmanıza gerek kalmadan komut dosyasına kolayca erişmenizi sağlar.

  3. Hiç kimsenin komut dosyasını değiştirebilmesini sağlar - Şifrelenmiş komut dosyasını değiştirme girişimleri, bu girişimler durdurulana veya kaldırılana kadar çalışmaz hale gelir.

  4. Kesinlikle HİÇBİR'in kopyasını çıkaramaz. Hiç kimse komut dosyanızı tenha bir konuma kopyalayamaz ve nasıl çalıştığını görmek için onunla uğraşmaya çalışamaz. Komut dosyasının tüm kopyaları, yükleme sırasında belirttiğiniz özgün konuma bağlantılar olmalıdır .

NOT:

Bunun kullanıcıdan yanıt isteyen etkileşimli komut dosyaları için çalıştığına inanmıyorum . Değerler komut dosyasına sabit olarak kodlanmalıdır. Şifreleme, hiç kimsenin bu değerleri görememesini sağlar, böylece endişelenmenize gerek yoktur.


-1

sadece böyle bir şey yapabilirsiniz.

# echo -e "password_here\npassword_here" | su user

kaynak

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.