Linux'ta bir kullanıcı şifresini, etkileşim olmadan komut satırından değiştirebilir miyim?


14

Etkileşim olmadan tek bir komutla bir kullanıcının şifresini gerçekten değiştirmek istediğim belirli bir kullanım durumum var. Bu işlem güvenli bir şekilde (SSH üzerinden ve oturum açabilecek yalnızca bir kullanıcının bulunduğu bir sistemde) yapıldığından, komut satırında yeni şifreyi (ve gerekirse eski şifreyi) göstermek iyi bir şeydir. FWIW, bu bir Ubuntu sistemi.

Sadece bu görev için bu sisteme Beklenti benzeri şeyler eklemek zorunda kalmaktan kaçınmak istiyorum.


3
FreeBSD'de bunu yapmak isteyenler için:echo "newpassword" | pw usermod theusername -h 0
Paul Hoffman

Yanıtlar:



5

Bir şifre sağlama seçeneği usermodile kullanabilirsiniz -p(gerçek şifre değil). Sen gibi bir şey kullanarak şifre karma oluşturabilir mkpasswd -m sha-256veyamkpasswd -m md5


1
... Ama AIX sistemimde yok usermod: '(
sorudaki

3

Elbette.

  1. Parolanızı yerel sisteminizde saklayın.
  2. Uzak makineye bağlanın (şifreyi değiştirmek istediğiniz yer)
  3. Reklama karma şifreyi ve kullanıcı adını Yem sed(sisteminizin şifre dosyasını güncelleyen komut /etc/shadow, /etc/master.passwdolmasını ne olursa olsun,).

1

Yardımcı passwdprogram şunu belirten bir --stdin seçeneğine sahiptir:

Bu seçenek, parolanın yeni bir parola olan standart girişten okuması gerektiğini belirtmek için kullanılır.

Sözdizimi:

echo "newpass" | passwd --stdin user1

Önemsemediğini söylemiş olsan bile, şifreyi bir metin dosyasına koyabilir ve sonra cat pass.txtecho komutunun yerine, bash tarihinde görünmez.


Bu olanı. echo VerySecret | passwd --stdin username
MadHatter

5
Ubuntu sistemimin --stdinbir seçeneği yok passwd.
Jeff Ferland

Haklısın, değil. Hem CentOS sistemini hem de Mac'i kontrol ettim ve --stdin seçeneğine sahipler, bu yüzden kaldırılması bir Ubuntu olayı olmalı.
Safado

1
@RyanM. FreeBSD (ve son kontrol ettiğim AFAIK NetBSD ve OpenBSD, AIX, HP-UX ve Solaris) de bunu desteklemiyor --stdin- temelde gerçekleşmesini bekleyen büyük bir güvenlik açığı olduğu için :-)
voretaq7

1
@quanta: Veya echo "newpass" | passwd --stdin user1çizgiyi boşlukla başlat ; Bu şekilde bash tarihine hiç gitmeyecek.
Janne Pikkarainen

1

Eğer --stdinseçenek çalışmıyorsa, temel olarak iki seçeneği kullanabiliriz:

  1. chpaswdKomut dosyasında adı geçen başka bir fayda kullanın .
  2. Ya da kullan echo "current_password\nnew_password\nnew_password" | passwd user_name
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.