/etc/shadow
Sanal 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/shadow
standart çıktıda uyumlu bir parola sağlama üreten bir komut satırı aracı var mı?
/etc/shadow
Sanal 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/shadow
standart çıktıda uyumlu bir parola sağlama üreten bir komut satırı aracı var mı?
Yanıtlar:
Aynı için aşağıdaki komutları kullanabilirsiniz:
openssl passwd -6 -salt xyz yourpass
Not: Geçiş -1
işlemi bir MD5 şifresi, -5
bir SHA256 ve -6
SHA512 üretecektir (önerilen)
mkpasswd --method=SHA-512 --stdin
Yöntemler kabul md5
, sha-256
vesha-512
@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
openssl passwd -1
1) oraya bitmiyor ki ve 2) ne, kabuk tarihinin kadar bitmiyor sizin için rasgele bir tuz () üretir.
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- ilgili ServerFault sorusundan
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
Bu çözüm aşağıdaki avantajlara sahiptir:
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.')"
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.
crypt.mksalt
için parola oluştururken kullanmak işe yaramaz /etc/shadow
. Fakat @ Alex131089'un metodu işe yarıyor!
openssl
oldukça evrensel bir araçtır.
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))+"$")'
ps
de komutun çalıştığı saniyenin kesirindeki çıktıda kalır . (En güvenli
openssl
Ve chpasswd -e
çift RHEL6 içinde benim durumumda işe yaramadı. İşi birleştirmek openssl passwd
ve usermod -p
komut 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:::
Parola oluşturmanın başka bir yöntemi de openssl
aracı 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
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.
chpasswd
?
chpasswd -e
, dizgede tek tırnak kullandığınızdan emin olunecho
; Aksi takdirde,$
veya başka özel karakterler varsa, kelimenin tam anlamıyla ele alınmazlar.