대화식이없는 명령 행에서 Linux의 사용자 비밀번호를 변경할 수 있습니까? 사용자 암호를 실제로 변경하고 싶은

대화 형 작업없이 단일 명령으로 사용자 암호를 실제로 변경하고 싶은 특정 사용 사례가 있습니다. 이것은 SSH를 통해, 그리고 한 명의 사용자 만 로그인 할 수있는 시스템에서 안전한 방식으로 수행되므로 명령 줄에 새 비밀번호 (필요한 경우 이전 비밀번호까지)를 공개하는 것이 좋습니다. FWIW, 우분투 시스템입니다.

이 작업 하나에 만이 시스템에 Expect와 유사한 것을 추가하지 않아도됩니다.



답변

chpasswd를 사용할 수 있습니다 .

echo user:pass | /usr/sbin/chpasswd


답변

옵션 usermod과 함께 사용 -p하여 실제 비밀번호가 아닌 비밀번호 해시를 제공 할 수 있습니다 . mkpasswd -m sha-256또는 같은 것을 사용하여 비밀번호 해시를 생성 할 수 있습니다mkpasswd -m md5


답변

확실한.

  1. 로컬 시스템에서 비밀번호를 해시하십시오.
  2. 원격 컴퓨터 (비밀번호를 변경하려는 위치)에 연결
  3. 소재에 해시 암호 및 사용자 이름을 공급 sed시스템 암호 파일을 업데이트 스크립트 ( /etc/shadow, /etc/master.passwd, 될 일이 무엇이든).

답변

passwd유틸리티에는 –stdin 옵션이 있습니다.

이 옵션은 passwd가 표준 입력 (파이프 일 수 있음)에서 새 비밀번호를 읽어야 함을 표시하는 데 사용됩니다.

통사론:

echo "newpass" | passwd --stdin user1

신경 쓰지 않는다고 언급했지만 암호를 텍스트 파일에 넣은 다음 cat pass.txtecho 명령 대신 bash 기록에 표시되지 않도록 할 수 있습니다.


답변

경우 --stdin옵션이 작동하지 않습니다 우리는 기본적으로 두 가지 옵션을 사용할 수 있습니다 :

  1. chpaswd스크립트에서 호출 된 다른 유틸리티를 사용 하십시오.
  2. 또는 사용 echo "current_password\nnew_password\nnew_password" | passwd user_name

답변