'Passwd' ve 'chpasswd' arasındaki fark nedir?


14

Bu komutun açıklamasını bir kitaptan okudum
passwd:

Mevcut bir kullanıcının şifresini değiştirir.

chpasswd:

Oturum açma adı ve parola çiftlerinin bir dosyasını okur ve parolaları günceller.

Görünüşe göre bu komut aynı işleri yapıyor. Aralarında fark var mı?

DÜZENLE:

Hangi dosyaları kullandığımızda bunları öğrenmek istiyorum. Aynı dosyayı veya farklı bir dosyayı değiştiriyorlar mı? Farklı dosyaları değiştirirlerse, bunlar nedir?


2
/etc/passwordkullanıcı hesabı bilgilerini içerir. /etc/shadowşifreli şifreler içeriyor. Bunların sadece ilgili dosyalar olduğuna inanıyorum. Bu dosyaları manuel olarak düzenleyerek bir parolayı değiştirebilirsiniz, ancak çok garip olacaktır.
SauceCode

Yanıtlar:


18

Gönderen man chpasswd:

'Bu komut, aynı anda çok sayıda hesabın oluşturulduğu büyük bir sistem ortamında kullanılmak üzere tasarlanmıştır.'

passwd (tecrübelerime göre) normalde tek bir kullanıcı için etkileşimli olarak kullanılır.


7

Her ikisi için de man sayfalarına bakın:

ADI

    chpasswd - şifreleri toplu modda güncelle

ÖZET

    chpasswd [Seçenekler]

AÇIKLAMA

    chpasswdKomut standart girdiden kullanıcı adı ve şifre çiftlerinin listesini okur ve varolan bir grup kullanıcıyı güncelleştirmek için bu bilgileri kullanır. Her satır şu biçimdedir:

       Kullanıcı adı Şifre


ADI

    passwd - kullanıcı şifresini değiştir

ÖZET

    passwd [seçenekler] [GİRİŞ]

AÇIKLAMA

    passwdKomut kullanıcı hesaplarının şifrelerini değiştirir. Normal bir kullanıcı sadece kendi hesabının şifresini değiştirebilir, süper kullanıcı ise herhangi bir hesabın şifresini değiştirebilir.  passwdhesabı veya ilişkili şifre geçerlilik süresini de değiştirir.


7

Kısaca:

  • passwdkullanarak STDIN'in (dosya tanımlayıcı 0) terminale takılı olup olmadığını kontrol eder isatty(0). Değilse, passwdkurtarılacaktır, yani sadece passwdetkileşimli olarak çalışabilirsiniz

  • chpasswdÖte yandan, STDIN'den parola okumak (kullanıcı adı ve) için tasarlanmıştır ve toplu mod olarak adlandırılır (aynı anda birden fazla kullanıcı kimlik bilgisi oluşturur / günceller). Şifreleri (varsayılan olarak açık metin olarak) ve STDIN'den kullanıcı adlarını, formatta verilen user_name:passwordyeni satır girişleri ayırarak okur


0

Ben buldum rağmen

echo user:password | chpasswd

bazı işletim sistemlerinde çalışır, ancak debian9,10 gibi bazı işletim sistemleri can not connect to /var/run/nscd/socketparolayı nerede saklayacağını belirlemek için /etc/nsswitch.conf komutunu kullandığından bir hata gösterir .

Öte yandan, passwdkomutun etkileşimli kabuğa ihtiyacı yok gibi görünüyor,

(echo user; echo password) | passwd

benim için hem fiziksel konakta hem de kapta, çeşitli OS'ler için çalışıyor (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)

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.