리눅스 chpasswd 패스워드 변경
2013. 12. 3. 00:23 |
리눅스
그동안 리눅스 서버는 Redhat 계열만 운영해 왔고, passwd 커맨드에 --stdin 옵션이 있었기 때문에 root 패스워드 대량 변경이나 자동화 스크립트 구현에 아무런 불편함이 없었다.
예제) echo 'new password' | passwd --stdin root
하지만 이번에 우분투(Debian 계열) 서버를 만져보면서 passwd 커맨드에 --stdin 옵션이 없다는 사실을 알고 나서는 매우 당혹스러웠다. 그런데 댓글로 chpasswd 커맨드를 알려주신 분이 계셔서 다시금 희망을 찾게 되었다.
chpasswd 커맨드는 Standard Input을 패스워드로 입력받을 수 있기 때문에 보안상 취약할 수도 있지만, 사실 root 권한을 가진 서버관리자 입장에서는 매우 편리하다.
다음은 Standard Input을 활용한 몇가지 예제이다. '계정:새로운패스워드' 형식으로 입력하면 된다.
root, snoopy, test01 사용자의 패스워드를 1234로 변경해 보겠다.
입력 종료는 Ctrl + D 누르면 된다.
가독성은 좋지 않으나 echo에 -e 옵션을 주고 \n으로 개행 처리하여 한 줄로 할 수도 있다.
미리 패스워드를 텍스트 파일에 적어놓고
password.txt
아래와 같이 처리하면 되겠다.
또는
예제) 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
root:1234
snoopy:1234
test01:1234
입력 종료는 Ctrl + D 누르면 된다.
2. echo와 파이프 활용
echo 'root:1234' | chpasswd
echo 'snoopy:1234' | chpasswd
echo 'test01: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
snoopy:1234
test01:1234
아래와 같이 처리하면 되겠다.
cat password.txt | chpasswd
또는
chpasswd < password.txt
'리눅스' 카테고리의 다른 글
우분투 서비스 컨트롤 방법 (7) | 2014.01.01 |
---|---|
우분투 apt 미러 서버 구성 (2) | 2013.12.18 |
리눅스 ipv6 끄기 (0) | 2013.12.10 |
우분투 apt-get Repositoy 변경 (8) | 2013.12.05 |
리눅스 chpasswd 패스워드 변경 (7) | 2013.12.03 |
우분투 새로 생성한 사용자의 프롬프트 비어있는 이유 (1) | 2013.11.29 |
우분투 root 계정 사용하기 (1) | 2013.11.29 |
우분투 네트워크 설정 (4) | 2013.11.29 |
CentOS Daum Repository (1) | 2013.11.12 |
2013.12.04 01:04
요즈음 저도 서버 배우기 시작했는데 리눅스 처음 접해보는거라 너무 생소합니다..
스누피님은 뭐 보면서 공부하세요? 그때 그때 구글링으로 공부하시나요?
2013.12.04 23:31 신고
저는 따로 공부하지 않고 운영하면서 필요한 것, 궁금한 것이 생기면 그때 그때 구글링 해서 익힙니다. 그런데 리눅스를 완전 처음 접하신다면 입문서 한권 정도는 읽어보시는게 좋을 듯 합니다.
2013.12.05 04:56
리눅스는 도움말페이지와(일명 man페이지) 조금의 검색실력만 있어도 어느정도 다룰수 있다고 봅니다.
관련 문서도 많고요ㅎ
그래도 입문서적은 한번 참고용으로^^;/
2013.12.05 04:51
안녕하세요^^
혹시 짧은페스워드도 테스트 해보셨나요?
레드햇 계열의 서버는 몇대 없어서 테스트를 못해봤는데 젠투나 다른 배포판들은 어느시점 이상부터는 짧거나 간단한 페스워드를 chpasswd로는 바뀌지 않는거 같더라구요.
테스트 부탁드립니다.
2013.12.05 05:06
그나저나 스누피님은 여러가지 서버 환경을 접하시네요ㅎ
참 대단하신거 같아요ㅎ
2017.11.23 08:09
안녕하세요 처음 글을 달아봅니다.
우분투에서 --stdin 으로 일괄생성 고민을하다가 글을 보고 스크립트를 완성해서
다른분들도 도움이 되시라고 완성 스크립트 올려 봅니다.
스누피님도 감사합니다.
부가설명으로 아래 저는 그룹을 1개로 생성하고 진행하였습니다.quota를 그룹으로 진행하려고요.
>touch makeuser
#!/bin/bash
addgroup group1
lists=`cat userlist`
for USER in $lists ; do
username=`grep $USER "userlist" | awk -F: '{print $1}'`
password=`grep $USER "userlist" | awk -F: '{print $2}'`
useradd $username -g group1
echo -e $username:$password | chpasswd
done
>touch userlist
test1:test1:group1
test2:test2:group1
test3:test3:group1
2019.08.18 12:41
안녕하세요 스누피님 몇십대의 서버 패스워드 변경일이 얼마 안남을 때문 미리 미리 사전에 패스워드 변경작업 작업 해야하는데요 좋은방법이 있을까요? (무료 원격접속 패스워드 관리툴같은게 있음좋겠어요)
그리고 위방법은 리눅스만 적용가능한가요 ? AIX 서버 가능한지 궁금합니다