리눅스 패스워드 한줄로 변경하기
2012. 9. 13. 20:00 |
리눅스
리눅스에서 패스워드를 변경할 때 일반적으로 passwd 명령어를 입력한 후 새로운 패스워드를 두번 입력하는 방식을 사용하실 텐데요

자동화 스크립트 안에서는 이런 식의 대화형 쉘이 등장하면 골치 아프겠죠? 그래서 존재하는 옵션이 바로 Standard Input 입니다. 단 root 계정에서만 이 옵션을 사용할 수 있습니다.
passwd --stdin 계정
아래는 root 패스워드를 12345!@#$% 로 변경하는 모습입니다.

패스워드를 두번 입력 안해서 덜 귀찮고, 입력하는 패스워드가 눈에 보이기 때문에 실수 안해서 좋습니다. 뭐 보안상 취약하다고 할 수도 있겠지만요...
이제 한 걸음 더 나아가, 위 작업을 한줄로 처리하려면 어떻게 할까요? 바로 echo와 파이프 | 를 이용하는 것입니다.
echo '패스워드' | passwd --stdin 계정
아래는 한줄로 root 패스워드를 12345!@#$% 로 변경하는 모습입니다.

이처럼 echo와 passwd 명령어의 --stdin 옵션을 사용하면 패스워드 변경을 한줄로 처리할 수 있어, 자동화 스크립트에서 유용하게 활용할 수 있습니다. 이상입니다.
자동화 스크립트 안에서는 이런 식의 대화형 쉘이 등장하면 골치 아프겠죠? 그래서 존재하는 옵션이 바로 Standard Input 입니다. 단 root 계정에서만 이 옵션을 사용할 수 있습니다.
passwd --stdin 계정
아래는 root 패스워드를 12345!@#$% 로 변경하는 모습입니다.
패스워드를 두번 입력 안해서 덜 귀찮고, 입력하는 패스워드가 눈에 보이기 때문에 실수 안해서 좋습니다. 뭐 보안상 취약하다고 할 수도 있겠지만요...
이제 한 걸음 더 나아가, 위 작업을 한줄로 처리하려면 어떻게 할까요? 바로 echo와 파이프 | 를 이용하는 것입니다.
echo '패스워드' | passwd --stdin 계정
아래는 한줄로 root 패스워드를 12345!@#$% 로 변경하는 모습입니다.
이처럼 echo와 passwd 명령어의 --stdin 옵션을 사용하면 패스워드 변경을 한줄로 처리할 수 있어, 자동화 스크립트에서 유용하게 활용할 수 있습니다. 이상입니다.
'리눅스' 카테고리의 다른 글
리눅스 seq 명령어 사용법 (11) | 2012.11.21 |
---|---|
리눅스에서 CIFS 마운트하기 (11) | 2012.09.28 |
리눅스 포트 체크 프로그램 - nc (2) | 2012.09.25 |
리눅스 L4 DSR 모드에서 loopback 아답터 설정하기 (2) | 2012.09.25 |
리눅스 패스워드 한줄로 변경하기 (6) | 2012.09.13 |
레드햇 6 버전에서 싱글모드 패스워드 변경 안 되는 경우 (5) | 2012.09.11 |
레드햇 리눅스 yum Repository에 DVD 추가하기 (7) | 2012.04.14 |
리눅스 Static 라우팅 설정하기 (9) | 2012.04.06 |
리눅스에서 윈도우 start 명령어와 비슷한 효과를 (2) | 2012.01.30 |
2012.09.13 23:02
대화형 프롬프트때문에 스크립트 작성이 어려우시다면
Expect던가? 를 이용해보세요
2012.09.14 21:27
이렇게 한줄로 입력하는 것보다 그냥 passwd 하는것이 속도도 빠르고 , 보안성이 더 좋은 것 같은데요... 제 주관적인 생각이다만요... ^^
2012.09.15 00:57 신고
스누피님 질문드려요..ㅎㅎ
윈도우8 ISO 파일에 드라이버 통합하고 Dism으로 WIM 언마운트 하려고 했는데
이미지 파일: E:\Win8.wim
이미지 색인: 1
이거만 뜨고 진행이 안되네요..;;
이거 무슨 문제일까요??
마운트 할때는 상당히 빨랐습니다.
2012.11.10 14:27
안되네요..;; Otherwise in most stores, you see either incomplete range of a brand or shortage of premium quality shoe brands. Various online shoe stores deal in BCBGen shoes, Betsey Johnson shoes or sadfsadfewqrweqrdfgda
2013.12.01 02:41
안녕하세요?
스누피님의 글 잘 보고 여러가지를 배워가는 서버 관리자 입니다.
포스팅 글 잘 보았습니다.
허나 저 방법은 안되는 경우도 있더라구요~ 그래서 다른 방법도 공유하려고 글을 써 봅니다.
바로 echo 와 파이프라인 chpasswd 를 이용한 방법인데요~...
echo "$id:$pw" | chpasswd > /dev/null 2>&1 뭐 이런식 입니다.
물론 $가 붙었으니 변수(?)입니다.
뭐 제가 운영하는 젠투서버에서 실 사용중인 스크립트 입니다.
::::::::::::::
/usr/local/sbin/adduser
::::::::::::::
#!/bin/bash
echo "사용자 계정 생성 스크립트 입니다."
echo "필드명을 정확히 확인후 작성 부탁드립니다."
echo -n "성명 :"
read nm
echo -n "아이디 :"
read id
echo -n "비밀번호 :"
read pw
echo -n "연락처(휴대폰) :"
read cn
echo -n "생년월일 :"
read bd
echo -e "계정사용용도"
echo -en " 1. 머드접속유지\r\n 2. 파일저장소\r\n 4. 머드게임개발\r\n 4. Web\r\n 5. 기타\r\n\r\n 선택
하세요 : "
read ty
case $ty in
1)
echo -e "머드접속유지" > /data/admin/user_info/tmp.txt
echo "/home/$id" > /data/admin/user_info/tmp2.txt
;;
2)
echo -e "파일저장소" > /data/admin/user_info/tmp.txt
echo "/home/$id" > /data/admin/user_info/tmp2.txt
;;
3)
echo -e "머드게임개발" > /data/admin/user_info/tmp.txt
echo "/home/$id" > /data/admin/user_info/tmp2.txt
;;
4)
echo -e "Web" > /data/admin/user_info/tmp.txt
echo "/data/www/$id/" > /data/admin/user_info/tmp2.txt
;;
5)
echo -e "기타" > /data/admin/user_info/tmp.txt
echo "/home/$id/" > /data/admin/user_info/tmp2.txt
;;
*)
echo "Warning : 잘못된 선택입니다."
echo -n "Enter키를 눌러주세요"
read
;;
esac
echo "수집한 정보로 계정을 생성합니다. 잠시만 기다려주세요....."
in=/data/admin/user_info/$id
touch $in
echo -e "성명 : $nm" > $in
echo -e "생년월일 : $bd" >> $in
echo -e "연락처 : $cn" >> $in
echo -e "계정사용용도 : $(cat /data/admin/user_info/tmp.txt)" >> $in
useradd -m -d $(cat /data/admin/user_info/tmp2.txt) -c "$nm" $id
/usr/local/sbin/sendlms-system $cn "'$nm'님 신청하신 '$id' 가 발급되었습니다. 계정접속 비밀번호는 '$pw' 입니다.
접속후 passwd 명령어로 비밀번호를 변경해 주세요.."
echo "$id:$pw" | chpasswd > /dev/null 2>&1
echo "$nm님의 ID $id가 생성 완료 되었습니다."
ln -sf /etc/tt.conf $(cat /data/admin/user_info/tmp2.txt)
chown $id:$id $(cat /data/admin/user_info/tmp2.txt) -Rv > /dev/null 2>&1
chmod 700 /data/admin/user_info/* > /dev/null 2>&1
rm -rf /data/admin/user_info/tmp.txt > /dev/null 2>&1
rm -rf /data/admin/user_info/tmp2.txt > /dev/null 2>&1
이런식으로 젠투서버에서 자동화(?) 라기 보다는 걍 만들기 쉽게 만든 스크립트 에요~
*** root 계정 이외의 나머지 계정들은 안되네요~ ㅠ
2013.12.01 22:00 신고
아 chpasswd 좋네요. 감사합니다.
passwd 명령어에 --stdin 옵션은 레드햇 계열만 있는 것 같습니다.
우분투에 옵션이 없어서 아쉬웠는데 chpasswd가 좋은 대안이 되겠네요. 감사합니다.