프로그래밍 방식으로 비밀번호 변경


12

현재 Raspian 버전에서는 다음과 같이 명령 행에서 현재 로그인 한 사용자의 비밀번호를 변경할 수 있음을 알고 있습니다.

sudo passwd

그런 다음 사용자에게 새 비밀번호를 두 번 입력하라는 메시지가 표시됩니다. 다음과 같이 출력이 생성됩니다.

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

쉘 스크립트와 같이 프로그래밍 방식으로 암호를 변경할 수있는 방법이 있는지 궁금합니다.

Raspberry Pis에 배포하기 위해 구성 스크립트를 만들려고하는데 수동으로 새 암호를 입력하고 싶지 않습니다.


1
현재 사용자의 비밀번호를 변경하기 위해 접두사를 붙일 필요는 없습니다 sudo. 사용 sudo하면 해당 사용자의 현재 비밀번호를 몰라도 모든 사용자에 대해 새 비밀번호를 강제 설정할 수 있습니다.
roaima

expect(1)도움이 될 수 있습니다.
SailorCire

프로그래밍 방식으로 암호를 변경할 때 보안 관련 사항을 고려해야합니다.
Josh Habdas

답변:


19

당신은 chpasswd명령을 찾고 있습니다. 당신은 이런 식으로 할 것입니다 :

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

최소한 기본 PAM 구성에서는 루트로 실행해야합니다. 그러나 아마도 루트로 실행하는 것은 시스템 배포 스크립트의 문제가 아닙니다.

또한 여러 줄의 입력을 공급하여 한 번에 여러 사용자를 수행 할 수 있습니다.


9

다른 대안은 yes스크립트 에서 명령 을 사용하는 것 입니다.

yes newpassword | passwd youruser

newpassword에 대한 passwd명령 이 전송 됩니다 youruser.

스크립트를 통해 사용자 비밀번호를 설정 / 수정하면 보안 위험이 발생할 수 있으므로 가능하면 피해야합니다.

편집하다:

이 답변에는 루트 액세스 권한이 필요합니다. 이전에 언급하지 않은 것에 대해 사과드립니다. 루트 액세스가 필요한 관리 작업을 수행 할 때 사용하는 방법입니다.


이것을 시도 했습니까?
roaima

예. 나는 수년간이 방법을 사용해왔다. 내 답변을 게시하기 전에 그리고 지금 다시 테스트했습니다.
Timothy Martin

터미널 (키보드)이 아니라 passwd읽은 것으로 가정하더라도 사용자의 이전 암호를 묻는 메시지가 표시되고 새 암호를 묻는 메시지가 표시 stdin되면 어떻게 작동 passwd합니까?
roaima

@roaima Timothy는 루트로 루트를 실행합니다 ( youruser마지막에 필요한 이유를 설명 합니다). 어딘가에서 작동 할 수도 있습니다.
derobert

1
@roaima passwdLinux 섀도 유틸리티의 명령은 경로 재 지정된 입력을 허용합니다 (예 : OpenSSH ssh). yes그래도 사용 하는 것은 좋은 생각이 아닙니다. 잘못된 시간에 프로세스 목록을 보는 스 누퍼에게 암호를 노출시킵니다. echo쉘 내장이기 때문에 사용하면 이 결함이 없습니다.
Gilles 'SO- 악마 중지'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.