'passwd'와 'chpasswd'의 차이점은 무엇입니까?


14

passwd 책에서이 명령에 대한 설명을 읽었습니다
.

기존 사용자의 비밀번호를 변경합니다.

chpasswd :

로그인 이름과 비밀번호 쌍의 파일을 읽고 비밀번호를 업데이트합니다.

이러한 명령이 동일한 작업을 수행하는 것 같습니다. 그들 사이에 차이가 있습니까?

편집하다:

어떤 파일이 변경되는지 사용할 때 배우고 싶습니다. 그들은 같은 파일이나 다른 파일을 변경합니까? 다른 파일을 변경하면 무엇입니까?


2
/etc/password사용자 계정 정보를 포함합니다. /etc/shadow암호화 된 비밀번호를 포함합니다. 나는 이것들이 관련있는 유일한 파일이라고 생각합니다. 해당 파일을 수동으로 편집하여 비밀번호를 변경할 수 있지만 매우 어색합니다.
소스 코드

답변:


18

보낸 사람 man chpasswd:

'이 명령은 한 번에 많은 계정이 생성되는 대규모 시스템 환경에서 사용하기위한 것입니다.'

passwd 내 경험상 일반적으로 단일 사용자에 대해 대화식으로 사용됩니다.


7

둘 다에 대한 매뉴얼 페이지를 참조하십시오.

이름

    chpasswd-배치 모드에서 비밀번호 업데이트

개요

    chpasswd [옵션]

기술

    chpasswd명령은 표준 입력에서 사용자 이름 및 비밀번호 쌍 목록을 읽고이 정보를 사용하여 기존 사용자 그룹을 업데이트합니다. 각 줄의 형식은 다음과 같습니다.

       user_name : 비밀번호


이름

    passwd-사용자 비밀번호 변경

개요

    passwd [옵션] [로그인]

기술

    passwd명령은 사용자 계정의 비밀번호를 변경합니다. 일반 사용자는 자신의 계정 암호 만 변경할 수 있지만 수퍼 유저는 모든 계정의 암호를 변경할 수 있습니다.  passwd또한 계정 또는 관련 비밀번호 유효 기간을 변경합니다.


7

간단히 말해서 :

  • passwd를 사용하여 STDIN (파일 설명자 0)이 터미널에 연결되어 있는지 확인합니다 isatty(0). 그렇지 않다면 passwd구제 될 것입니다. 즉 , passwd대화식으로 만 작업 할 수 있습니다

  • chpasswd반면에는 STDIN에서 (사용자 이름 및) 비밀번호를 읽도록 설계되었으며 배치 모드라고합니다 (한 번에 여러 사용자 자격 증명을 생성 / 업데이트합니다). STDIN에서 비밀번호 (기본적으로 일반 텍스트로)와 형식으로 제공된 사용자 이름을 읽어 user_name:password행을 항목으로 구분합니다.


0

나는 그것을 찾았지만

echo user:password | chpasswd

일부 OS에서는 작동하지만 debian9,10과 같은 일부 OS는 can not connect to /var/run/nscd/socket/etc/nsswitch.conf를 사용하여 비밀번호를 저장할 위치를 결정하므로 오류를 표시 합니다.

다른 한편으로, passwd명령에는 대화식 쉘이 필요하지 않은 것 같습니다.

(echo user; echo password) | passwd

물리적 호스트와 컨테이너 모두에서 다양한 OS (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)에서 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.