대화 형 작업없이 단일 명령으로 사용자 암호를 실제로 변경하고 싶은 특정 사용 사례가 있습니다. 이것은 SSH를 통해, 그리고 한 명의 사용자 만 로그인 할 수있는 시스템에서 안전한 방식으로 수행되므로 명령 줄에 새 비밀번호 (필요한 경우 이전 비밀번호까지)를 공개하는 것이 좋습니다. FWIW, 우분투 시스템입니다.
이 작업 하나에 만이 시스템에 Expect와 유사한 것을 추가하지 않아도됩니다.
답변
chpasswd를 사용할 수 있습니다 .
echo user:pass | /usr/sbin/chpasswd
답변
옵션 usermod
과 함께 사용 -p
하여 실제 비밀번호가 아닌 비밀번호 해시를 제공 할 수 있습니다 . mkpasswd -m sha-256
또는 같은 것을 사용하여 비밀번호 해시를 생성 할 수 있습니다mkpasswd -m md5
답변
확실한.
- 로컬 시스템에서 비밀번호를 해시하십시오.
- 원격 컴퓨터 (비밀번호를 변경하려는 위치)에 연결
- 소재에 해시 암호 및 사용자 이름을 공급
sed
시스템 암호 파일을 업데이트 스크립트 (/etc/shadow
,/etc/master.passwd
, 될 일이 무엇이든).
답변
이 passwd
유틸리티에는 –stdin 옵션이 있습니다.
이 옵션은 passwd가 표준 입력 (파이프 일 수 있음)에서 새 비밀번호를 읽어야 함을 표시하는 데 사용됩니다.
통사론:
echo "newpass" | passwd --stdin user1
신경 쓰지 않는다고 언급했지만 암호를 텍스트 파일에 넣은 다음 cat pass.txt
echo 명령 대신 bash 기록에 표시되지 않도록 할 수 있습니다.
답변
경우 --stdin
옵션이 작동하지 않습니다 우리는 기본적으로 두 가지 옵션을 사용할 수 있습니다 :
chpaswd
스크립트에서 호출 된 다른 유틸리티를 사용 하십시오.- 또는 사용
echo "current_password\nnew_password\nnew_password" | passwd user_name