리눅스 시스템 관리 과정에서 대량의 사용자 계정을 생성하거나 비밀번호를 일괄적으로 변경해야 할 때가 있다.
이때 passwd 명령어의 --stdin 옵션을 활용하면 인터렉티브한 입력 과정 없이 파이프와 스크립트만으로 자동화 처리가 가능하다.
1. --stdin 옵션 이해하기
일반적으로 passwd 명령어를 실행하면 비밀번호를 두 번 입력하는 대화형(Interactive) 과정을 거친다.
하지만 --stdin 옵션을 사용하면 표준 입력(Standard Input)을 통해 비밀번호를 전달받을 수 있다.
주로 파이프(|)와 함께 사용하며, 셸 스크립트 내에서 자동화 처리를 할 때 필수적인 옵션이다.
2. 기본적인 사용법
먼저 --stdin 옵션을 사용하여 수동으로 비밀번호를 입력하는 방식이다.
명령어를 실행하면 비밀번호를 입력받기 위해 대기하며, 입력한 값이 그대로 비밀번호로 설정된다.
[linuxadmin@www ~]$ sudo passwd --stdin user1
[sudo] password for linuxadmin:
Changing password for user user1.
0000
passwd: all authentication tokens updated successfully.
/etc/shadow 파일을 확인해보면 비밀번호가 변경된 것을 알 수 있다.

한 번 더 다른 비밀번호(9999)로 변경하면 해시값이 달라지는 것을 확인할 수 있다.
[linuxadmin@www ~]$ sudo passwd --stdin user1
Changing password for user user1.
9999
passwd: all authentication tokens updated successfully.
[linuxadmin@www ~]$ sudo grep user1 /etc/shadow
user1:$6$rounds=100000$WiTd1mqOXiggFSfI$66AUOa/F2D0Dt2YUqkacReKva6P8i2PkTov3VB8osq/Vc98ygP2I1MiJAVuOnE3pC1Jx6M1Akiy.vJAdTbTbe.:20532:0:30:7::20812:

3. 파이프(Pipe)를 이용한 비밀번호 변경
echo 명령어와 파이프(|)를 결합하면 키보드 입력 없이 한 줄의 명령어로 비밀번호를 변경할 수 있다.
이 방식이 실제 자동화에서 가장 많이 쓰이는 형태다.
[linuxadmin@www ~]$ echo 1234 | sudo passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
echo로 출력한 문자열이 파이프를 타고 passwd --stdin의 입력값으로 전달되어 즉시 처리된다.
[linuxadmin@www ~]$ sudo grep user1 /etc/shadow
user1:$6$rounds=100000$ogmuoRIwDqbTvJxt$6yCy5DRv..GOlcrvr7CXa1zcuzFgQSPYcDC9D/9kQ851VhhE65YOs3lRxdWLgKmnrmT8KNn2HQzmB9DWoXruf.:20532:0:30:7::20812:

4. 셸 스크립트를 통한 자동화
여러 사용자의 비밀번호를 동시에 초기화해야 할 때는 셸 스크립트를 작성하여 효율을 높일 수 있다.
비밀번호 변경 스크립트 작성 (change_password.sh)
#!/bin/sh
# 초기화할 비밀번호 설정
a=0000
# 각 사용자에게 파이프로 비밀번호 전달
echo $a | passwd --stdin user1
echo $a | passwd --stdin user2
echo $a | passwd --stdin user3
스크립트 실행 권한 부여 및 실행
# chmod 755 change_password.sh
# ./change_password.sh
이렇게 하면 복잡한 입력 과정 없이 한 번의 실행으로 여러 계정의 보안 설정을 마칠 수 있다.
다만, 이 옵션은 주로 RHEL/CentOS 계열에서 지원하며 데비안/우분투 계열에서는 chpasswd 명령어를 사용하는 것이 일반적이니 참고하자.
'Journey to Security > 리눅스' 카테고리의 다른 글
| [서버 보안] Brute Force 공격과 무단 공개키 삽입(SSH 백도어) (0) | 2026.04.23 |
|---|---|
| 리눅스 파티션 분할로 서버 보안과 안정성 챙기기 (+Rocky Linux 9 파티션 분할 설치 방법) (0) | 2026.04.19 |
| 리눅스 명령어는 어떤 파일을 참조할까? strace로 파일 접근 추적하기 (0) | 2026.03.26 |
| 압축/아카이브 관련 명령어 (0) | 2026.03.24 |
| 사용자/그룹/로그인 관련 명령어 (0) | 2026.03.19 |