그동안 리눅스 서버는 Redhat 계열만 운영해 왔고, passwd 커맨드에 --stdin 옵션이 있었기 때문에 root 패스워드 대량 변경이나 자동화 스크립트 구현에 아무런 불편함이 없었다.

예제) echo 'new password' | passwd --stdin root

하지만 이번에 우분투(Debian 계열) 서버를 만져보면서 passwd 커맨드에 --stdin 옵션이 없다는 사실을 알고 나서는 매우 당혹스러웠다. 그런데 댓글로 chpasswd 커맨드를 알려주신 분이 계셔서 다시금 희망을 찾게 되었다.

chpasswd 커맨드는 Standard Input을 패스워드로 입력받을 수 있기 때문에 보안상 취약할 수도 있지만, 사실 root 권한을 가진 서버관리자 입장에서는 매우 편리하다.

다음은 Standard Input을 활용한 몇가지 예제이다. '계정:새로운패스워드' 형식으로 입력하면 된다.
root, snoopy, test01 사용자의 패스워드를 1234로 변경해 보겠다.

1. 그냥 키보드로 입력

chpasswd
root:1234
snoopy:1234
test01:1234

입력 종료는 Ctrl + D 누르면 된다.

2. echo와 파이프 활용

echo 'root:1234' | chpasswd
echo 'snoopy:1234' | chpasswd
echo 'test01:1234' | chpasswd

가독성은 좋지 않으나 echo에 -e 옵션을 주고 \n으로 개행 처리하여 한 줄로 할 수도 있다.

echo -e 'root:1234\nsnoopy:1234\ntest01:1234' | chpasswd

3. 텍스트 파일로부터 입력

미리 패스워드를 텍스트 파일에 적어놓고

password.txt
root:1234
snoopy:1234
test01:1234

아래와 같이 처리하면 되겠다.

cat password.txt | chpasswd

또는

chpasswd < password.txt
신고

  1. 초보
    2013.12.04 01:04 신고

    요즈음 저도 서버 배우기 시작했는데 리눅스 처음 접해보는거라 너무 생소합니다..
    스누피님은 뭐 보면서 공부하세요? 그때 그때 구글링으로 공부하시나요?

    • BlogIcon snpbox
      2013.12.04 23:31 신고
      수정 및 삭제

      저는 따로 공부하지 않고 운영하면서 필요한 것, 궁금한 것이 생기면 그때 그때 구글링 해서 익힙니다. 그런데 리눅스를 완전 처음 접하신다면 입문서 한권 정도는 읽어보시는게 좋을 듯 합니다.

    • 박현종
      2013.12.05 04:56 신고
      수정 및 삭제

      리눅스는 도움말페이지와(일명 man페이지) 조금의 검색실력만 있어도 어느정도 다룰수 있다고 봅니다.
      관련 문서도 많고요ㅎ
      그래도 입문서적은 한번 참고용으로^^;/

  2. 박현종
    2013.12.05 04:51 신고

    안녕하세요^^
    혹시 짧은페스워드도 테스트 해보셨나요?
    레드햇 계열의 서버는 몇대 없어서 테스트를 못해봤는데 젠투나 다른 배포판들은 어느시점 이상부터는 짧거나 간단한 페스워드를 chpasswd로는 바뀌지 않는거 같더라구요.
    테스트 부탁드립니다.

  3. 박현종
    2013.12.05 05:06 신고

    그나저나 스누피님은 여러가지 서버 환경을 접하시네요ㅎ
    참 대단하신거 같아요ㅎ