/ Etc / shadow için manuel olarak şifre oluştur


109

/etc/shadowSanal makine görüntüsünün içindeki kök şifresini değiştirmek için el ile düzenlemem gerekiyor .

Parola alan ve /etc/shadowstandart çıktıda uyumlu bir parola sağlama üreten bir komut satırı aracı var mı?

Yanıtlar:


126

Aynı için aşağıdaki komutları kullanabilirsiniz:

Yöntem 1 (md5, sha256, sha512)

openssl passwd -6 -salt xyz  yourpass

Not: Geçiş -1işlemi bir MD5 şifresi, -5bir SHA256 ve -6SHA512 üretecektir (önerilen)

Yöntem 2 (md5, sha256, sha512)

mkpasswd --method=SHA-512 --stdin

Yöntemler kabul md5, sha-256vesha-512

Yöntem 3 (des, md5, sha256, sha512)

@Tink'in önerdiği gibi, aşağıdakileri kullanarak şifreyi güncelleyebiliriz chpasswd:

echo "username:password" | chpasswd 

Veya şifreli bir şifre ile kullanabilirsiniz chpasswd. İlk önce bunu kullanarak oluşturun:

perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'

Daha sonra güncellemek için oluşturulan şifreyi kullanabilirsiniz:

echo "username:encryptedPassWd"  | chpasswd -e

Bu şifreli şifre, şifreli yeni bir kullanıcı oluşturmak için kullanabiliriz, örneğin:

useradd -p 'encryptedPassWd'  username

3
Kullanırken chpasswd -e, dizgede tek tırnak kullandığınızdan emin olun echo; Aksi takdirde, $veya başka özel karakterler varsa, kelimenin tam anlamıyla ele alınmazlar.
Zags

4
Bunların yapımının kabuk geçmişinizde sona ereceğine dikkat edin. Ben kullanırım openssl passwd -11) oraya bitmiyor ki ve 2) ne, kabuk tarihinin kadar bitmiyor sizin için rasgele bir tuz () üretir.
Ztyx

1
openssl passwd-1seçeneğin ne yaptığını anlamaya çalışan herkes için belgeleme .
CivFan

4
Bir SHA-512 karma için: python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'- ilgili ServerFault sorusundan
CivFan

9
Yukarıdaki Yöntem 1) ve 2), karma için MD5 kullanır. MD5, karma çarpışmalar olduğu için artık en iyi uygulama olarak kabul edilmiyor. 3) yöntemini veya unix.stackexchange.com/a/198906/10911'de açıklanan yöntemi kullanın .
Ztyx

36

Ubuntu 12.04'te mkpasswd var (whois paketinden): Aşırı odaklı ön uç şifreli (3)

mkpasswd  -m sha-512 -S saltsalt -s <<< YourPass

Nerede:

  • -m= TYPE metodunu kullanarak şifreyi hesaplayın. TİP yardım ise o zaman mevcut yöntemler basılır.
  • -S = kullanılan tuz.

Örneğin

$ mkpasswd -m help

-s = Read password from stdin

8
Tuzu belirlemeye gerek yok, mkpasswd rastgele bir tane üretmeyi önemsiyor.
마 SE'ye

1
Ne olursa olsun, / etc / passwd içine kopyalanan mkpasswd dosyasından oluşturulan parolalar her zaman başarısız olur. Mkpasswd tarafından oluşturulan karmanın doğru olup olmadığını kontrol etmenin bir yolu var mı?
CMCDragonkai

@ CMCDragonkai: Yanlış soru. Sisteminizin ne beklediğini sormanız gerekiyor.
user3183018,

1
@ TO 마 SE: Tuzu kontrol etmek için yararlı olan somtimes. Tuzu ayrı bir mağazada sakladığım web uygulaması için karma nesil şifreleri test ederken kullandım. Örneğin, MySQL DB'de şifreli ve Redis'te kullanıcı tuzu başına.
user3183018,

15

Bu çözüm aşağıdaki avantajlara sahiptir:

  • Yüklemek için ek bir şey yok
  • Şifreyi kabuk geçmişinizde saklamaz
  • Sizin için rastgele bir tuz oluşturur
  • Modern, güçlü bir karma algoritma kullanır, SHA-512
  • Hatalardan kaçınmak için şifreyi tekrar ister.

    $ python3 -c "from getpass import getpass; from crypt import *; \
        p=getpass(); print('\n'+crypt(p, METHOD_SHA512)) \
        if p==getpass('Please repeat: ') else print('\nFailed repeating.')"
    

Referanslar


3

Debian tabanlı sistemleri olmayanlar için. Python3 de aynı şekilde çalışır.

python3 -c 'import crypt; print(crypt.crypt("test"))'

NOT: "test" dizesi şifreli bir dizge olarak oluşturduğumuz şifredir.


Nedense, crypt.mksaltiçin parola oluştururken kullanmak işe yaramaz /etc/shadow. Fakat @ Alex131089'un metodu işe yarıyor!
maulinglawns

Ben sadece yorum yapmadan önce bu yöntemi deneyen 1.5 saat harcadım. Biri onu kaldırabilir mi? Henüz oy kullanamam.
Michał F

1
@ MichałF bu işe yaramadı gibi gözüküyor çünkü tuzlama doğru yapılmadı. Bunu gösterdiğin için teşekkürler. Tuzu uzaklaştırdım, çünkü tuzlama OS'ye bağlı ve cevabımdaki tüm OS aralıklarını hesaba katmak pratik değil. @RahulPatil tarafından özetlenen Yöntem 1'i kullanmanız gerekir, çünkü tuzlama kullanmanıza izin verir ve openssloldukça evrensel bir araçtır.
Greg

Parolanızı kabuk geçmişinizde bıraktığı için önerilmez.
Mark Stosberg

Demek istediğim, cmd'yi her zaman kabuk geçmişinizden silebilirsiniz
Greg

3

Geçerli yöntemlerin hiçbiri bana kabul edilebilir - Ya (benim kabuk tarihinin biter) komut satırında parola geçmek gerektiren bir ilave yardımcı programın (kurulumu python3, makepasswd), kodlanmış tuzların kullanılması veya eski karma teknikleri kullanır.

Bu yöntem, şifre sorulduktan sonra SHA-512 karmaları üretecek ve rastgele bir tuz kullanacaktır.

Standart olmayan kütüphaneler olmadan Python 2'yi kullanan bir yöntem:

python2 -c 'import crypt, getpass,os,base64; print crypt.crypt(getpass.getpass(), "$6$"+base64.b64encode(os.urandom(16))+"$")'

İstemi istemeden yapmak için: (Bu, şifrenizi komut geçmişinde bırakacaktır)

python2 -c 'import crypt, os,base64; print crypt.crypt("MyPassword", "$6$"+base64.b64encode(os.urandom(16))+"$")'

2
Şifreyi komut geçmişinde bırakmaktan kaçınmak için, HISTCONTROL ortam değişkenini (en azından bash için) 'yoksayma' olarak ayarlayabilir ve ardından komutun önüne bir satır boşluğu ekleyebilirsiniz.
adam820

@ adam820: Bu bir yoldur ... Yine psde komutun çalıştığı saniyenin kesirindeki çıktıda kalır . (En güvenli
Gert van den Berg

2

opensslVe chpasswd -eçift RHEL6 içinde benim durumumda işe yaramadı. İşi birleştirmek openssl passwdve usermod -pkomut yapmak.

Parolanın karma değerini, tuz değeriyle birlikte oluşturun:

$ openssl passwd -1  -salt 5RPVAd clear-text-passwd43

$1$5RPVAd$vgsoSANybLDepv2ETcUH7.

Ardından, şifrelenmiş dizeyi usermod'a kopyalayın. Tek tırnakla sarmayı unutmayın.

$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root

Gölge dosyasında göz atın.

$ grep root /etc/shadow

root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::

1

Parola oluşturmanın başka bir yöntemi de opensslaracı kullanmaktır .

MD5 şifreleri oluşturun

openssl passwd -1 -salt SaltSalt SecretPassword
# output: $1$SaltSalt$FSYmvnuDuSP883uWgYBXW/

DES şifreleri oluşturun

openssl passwd -crypt -salt XR SuprScrt
# output: XR1dOp2EVMph2

3
Bunun Rahul Patil'nin cevabındaki 1. yöntemden farkı nedir? Eski DES tabanlı şifre karma algoritması unutmayın kesinlikle gerektiği değil kullanılabilir! Birincisi, bu günlerde tamamen yetersiz olan, yalnızca sekiz bayta kadar olan şifreleri destekliyor.
Bir CVn

3
Snowden'dan alıntı yapmak: "Düşmanınızın saniyede bir trilyon tahminde bulunabileceğini varsayalım." Tamamen mantıksız olmayan 70 karakterli bir karakter kümesi ve tamamen rasgele bir şifre ile 576 saniye - on dakikadan az. Daha az yetenekli fakat kararlı bir düşmana karşı bile, bu tamamen yetersizdir .
Bir CVn

Bu çok güvenli değil, çünkü MD5 ve DES ...
AdamKalisz

DES şifrelerini nasıl şifreleyeceğinizi gösteren tek cevap olduğunuz için teşekkür ederiz! Bir IP kamera ürün yazılımının kök şifresini geçersiz kılmaya çalışmak için çok kullanışlıdır.
Malvineous

1

150825 ve Gert van den Berg'in eleştirilerini biraz inceleyerek, farklı otomasyon sistemlerine sahip farklı durumlar için nispeten esnek bir şeye ihtiyacım olduğunu gördüm. Kendi küçük faydalı senaryo kütüphaneme eklemeye ve bunu yazmaya karar verdim. Python 2.7+ sürümündeki sadece yerel kütüphaneleri kullanır ve python3 ile de çalışır.

Bunu alabilirsiniz burada isterseniz. Çok fazla, http barındırılan veya herhangi bir şekilde kullanmanız gerekiyorsa bunu ortamınıza bırakmak kadar kolaydır ve kullanabileceğiniz varsayılan python tercümanı ne olursa olsun kullanarak herhangi bir platformda çalıştırabilirsiniz. güvenilir bir şekilde çalışmaya güveniyor.

Stderr'deki komut satırlarında getpass kullanılmasını istemekte varsayılandır (stdout'un kolay yakalanmasına izin verir), ancak bir dizgiyi aktarırsanız, sadece stdin'den biçilir. Bununla nasıl başa çıkacağınıza bağlı olarak, komut tarihinde de görünmeyebilir, bu yüzden ne ile çalıştığınızın farkında olun. Paketlere güvenmek ya da 10 farklı yoldan galibiyet kazanmak için bir tane python kullanmak yerine, beklenen şekilde davranacak esnek bir araca sahip olmayı seviyorum.


Hangi sürümde olursa olsun python'un yüklü olup olmadığı sisteme bağlıdır. Sorun tam olarak nedir chpasswd?
RalfFriedl
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.