나는 책에서 이 명령에 대한 설명을 읽었습니다.
비밀번호:
기존 사용자의 비밀번호를 변경합니다.
chpasswd:
로그인 및 비밀번호 쌍 파일을 읽고 비밀번호를 업데이트하십시오.
이 명령은 동일한 작업을 수행하는 것 같습니다. 그들 사이에 차이점이 있나요?
편집하다:
우리가 파일을 사용할 때 어떤 파일이 변경되었는지 알고 싶습니다. 동일한 파일을 변경합니까, 아니면 다른 파일을 변경합니까? 다른 파일을 변경했다면 무엇이었나요?
답변1
에서 man chpasswd
:
"이 명령은 한 번에 많은 계정이 생성되는 대규모 시스템 환경에서 사용하기 위한 것입니다."
passwd
일반적으로 (내 경험상) 단일 사용자 상호 작용에 사용됩니다.
답변2
간단히 말해서:
passwd
.을 사용하여 STDIN(파일 설명자 0)이 터미널에 연결되어 있는지 확인합니다isatty(0)
. 그렇지 않은 경우passwd
종료할 수 있습니다. 즉,passwd
대화형으로만 작업 할 수 있습니다.chpasswd
반면, STDIN에서 (사용자 이름 및) 비밀번호를 읽는 것을 목표로 하는 것을 배치 모드(한 번에 여러 사용자 자격 증명을 생성/업데이트)라고 합니다. STDIN에서 비밀번호(기본적으로 일반 텍스트)와 사용자 이름을 읽습니다.user_name:password
항목은 개행 문자로 구분되어 형식으로 제공됩니다.
답변3
해당 매뉴얼 페이지를 참조하십시오.
이름
chpasswd - 배치 모드에서 비밀번호 업데이트
요약
chpasswd
[옵션]설명하다
이
chpasswd
명령은 표준 입력에서 사용자 이름 및 비밀번호 쌍 목록을 읽고 이 정보로 기존 사용자 세트를 업데이트합니다. 각 줄의 형식은 다음과 같습니다.사용자 이름 비밀번호
이름
passwd - 사용자 비밀번호 변경
요약
passwd
[옵션] [로그인]설명하다
이
passwd
명령은 사용자 계정의 비밀번호를 변경합니다. 일반 사용자는 자신의 계정 비밀번호만 변경할 수 있으며, 슈퍼 사용자는 모든 계정의 비밀번호를 변경할 수 있습니다.passwd
계정 또는 관련 비밀번호의 만료일도 변경됩니다.
답변4
나는 그것을 발견했다.
echo user:password | chpasswd
일부 운영 체제에서는 작동하지만 일부 운영 체제(예: debian9,10) 는 비밀번호가 저장되는 위치를 결정하는 can not connect to /var/run/nscd/socket
데 사용되므로 오류를 표시합니다 ./etc/nsswitch.conf
반면에 이 passwd
명령에는 대화형 셸이 필요하지 않은 것 같습니다.
(echo user; echo password) | passwd
물리적 호스트 및 컨테이너에 적합하며 다양한 운영 체제(ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)에 적합합니다.