Linux'taki bir kullanıcıya nasıl ilk / varsayılan şifre atayabilirim?


10

Bir kullanıcının şifresini nasıl ayarlayacağınızı açıklayan bir kılavuz buldum . Ben otomatikleştirmek ve kullanıcıya gibi bir e-posta göndermek için çalışıyorum:

userid created with password XYZ.
request to change the initial password.

Yukarıdaki dokümana göre, Python kullanılarak şifrelenmiş bir parola oluşturulmalı ve aşağıdaki usermodgibi komuta beslenmelidir :

 usermod -p "<encrypted-password>" <username>

Bunu yapmanın başka basit yolları var mı? Bunu yapmak için herhangi bir özel yardımcı programı indirmek istemiyorum; mümkün olduğunca genelleştirilmelidir.


Düzenleme : Yukarıdaki bağlantıda verilen yöntem bile benim için çalışmıyor gibi görünüyor:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

burada bulduğum bir bağlantı daha var ama aynı zamanda usermodbirisi psparola listeleme işlemi görmek için kullandığında -p seçeneği kullanarak bir güvenlik sorunu gibi görünüyor
munish

Yanıtlar:


13

Bunu chpasswdyapmak için kullanabilirsiniz , şöyle:

echo "username:newpassword" | chpasswd

chpasswdUygunsa başka programlardan da faydalanabilirsiniz echo, ancak bu hile yapacaktır.

Düzenleme: Kabuk betiği içinde parola oluşturmak ve daha sonra ayarlamak için, böyle bir şey yapabilirsiniz:

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

Hakkında daha fazla bilgi için chpasswdbkz. Http://linux.die.net/man/8/chpasswd

(Şifre oluşturma komutu http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html adresinden alınmıştır )


teşekkürler @Dominick hmm, chpasswd belki de AIX'de ... ben kullanmadım. ve evrytime ben bir şifre yazmak zorunda ... soru linkinde olduğu gibi komut dosyası tarafından oluşturulamaz mı ... maalesef bu bile benim için işe yaramadı
munish

@munish Senaryoda oluşturmak ile ne demek istediğinden emin değilim, ama umarım daha faydalı olacak şekilde cevabımı güncelledim.
Dominick Pastore

Çalışmıyor. "Kimlik doğrulama jetonu manipülasyon hatası"
Cerin

@Cerin Hiç şans eseri böyle bir şey yapıyorsun sudo echo "username:newpass" | chpasswd? Yükseltilmiş izinler sudoborudan geçmediğinden, chpasswdnormal bir kullanıcı olarak çalışır. , Olduğu sudogibi hareket ettirilerek sabitlenebilir echo "username:newpass" | sudo chpasswd. Bu hata iletisine neden olabilecek başka sorunlar da vardır, ancak bunun gibi izin hataları muhtemelen en yaygın olanıdır.
Dominick Pastore

1
Komut satırındaki parolalar, w, ps veya diğer işlemler hakkında bilgi gösteren diğer komutları kullanarak aynı makinede oturum açmış olan diğer kullanıcılar tarafından görülebilir. Bu şekilde ayarlanan şifreler kullanıcı tarafından en kısa zamanda değiştirilmelidir.
16:46

3

Rastgele parola oluşturmak için OpenSSL kullanabilirsiniz (bu durumda 16 karakter):

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

Ardından karma şifreyi useraddveyausermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

Kredi vadesi geldiğinde: Şifre oluşturma, yerine kullanılan benzer bir yöntemle uyarlanır ./dev/urandomopenssl


2

useradd çalışmalıdır (Ubuntu üzerinde yaptım). Belki de argümanlarınızın her birinin doğru olduğunu kontrol edin (gruplar var, yol bash etmek için doğru). Komutu yalnızca bir parola ve kullanıcı ile çalıştırabilir ve sonra soruna neyin neden olduğunu görmek için userdel'i kullanabilir ve daha sonra daha fazla parametre ile yeniden deneyebilirsiniz (kaba kuvvet yaklaşımı).

Orada da newusers (man sayfasına bakınız), bunu düz metin parolalar ve o kullanıcıları yaratacak dahil bilgi gibi passwddosyasında, bir dosyayı vermek Ubuntu altında en azından. Aynı anda birçok kullanıcı yapmanın güzel bir yolu.


newusersUbuntu için komuttan bahsettiği için +1
Levon

1

bulduğum en basit yol:


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here

Bunu test ettin mi? passwd: unrecognized option '--stdin'
Cerin

Evet, bunu birçok kez kullandım, ancak neredeyse diğer tüm komutlarda olduğu gibi, eldeki sorunun defacto çözümü değil. Passwd ikili dosyalarının bazı varyasyonları --stdin anahtarını desteklemez.
MelBurslan
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.