개요
리눅스 서버에서 여러 그룹의 비밀번호를 수작업 없이 일괄 등록하거나 변경해야 할 때 chgpasswd 명령어를 활용하면 관리 효율을 크게 높일 수 있습니다. 본 글에서는 chgpasswd의 동작 원리부터 표준 입력 기반 배치 처리, 암호화 알고리즘 지정 실무까지 직접 터미널에서 실습하며 알아봅니다.
실습 준비 및 테스트 그룹 생성
chgpasswd 명령어 실습에 사용할 테스트 그룹을 생성하기 위해 sudo groupadd -r devops_team && sudo groupadd -r qa_team 명령어를 실행합니다.

생성한 devops_team과 qa_team 그룹이 시스템에 정상적으로 등록되었는지 확인하기 위해 getent group devops_team qa_team 명령어를 실행합니다.
실행 결과 각 그룹 이름과 할당된 GID가 정상적으로 출력되는 것을 확인할 수 있습니다.

chgpasswd 기본 사용법과 그룹 비밀번호 일괄 변경
printf로 전달한 그룹명:비밀번호 형식의 문자열을 파이프라인을 통해 sudo chgpasswd의 표준 입력으로 넘겨 여러 그룹의 비밀번호를 일괄 설정합니다.
명령어 실행 후 오류 메시지 없이 종료되면 입력된 그룹들의 비밀번호가 시스템에 정상적으로 일괄 갱신된 것입니다.

그룹의 암호화된 비밀번호 정보가 보관되는 /etc/gshadow 파일에 변경 사항이 제대로 반영되었는지 확인하기 위해 sudo grep -E 'devops_team|qa_team' /etc/gshadow 명령어를 실행합니다.
실행 결과 devops_team과 qa_team 그룹의 비밀번호 필드에 안전하게 암호화된 해시값이 등록되어 정상 적용된 것을 확인할 수 있습니다.

SHA-512 암호화 옵션(-c) 적용하기
chgpasswd 명령어에 -c SHA512 옵션을 사용하여 devops_team 그룹의 비밀번호를 SHA-512 알고리즘으로 암호화하여 설정하기 위해 printf '%s\n' 'devops_team:SecurePass999!' | sudo chgpasswd -c SHA512 명령어를 실행합니다.
별도의 오류 메시지 없이 명령이 종료되면 입력한 그룹 비밀번호가 정상적으로 갱신된 것입니다.

devops_team 그룹에 암호화 옵션이 제대로 적용되었는지 확인하기 위해 sudo getent gshadow devops_team 명령어를 실행합니다.
실행 결과 비밀번호 필드가 SHA-512 알고리즘을 의미하는 $6$ 식별자로 시작하는 해시값으로 안전하게 변경된 것을 확인할 수 있습니다.

파일 리다이렉션 기반 대량 갱신 및 환경 정리
변경할 그룹 비밀번호 정보를 임시 파일에 저장한 후 입력 리다이렉션(<)을 통해 chgpasswd로 전달하여 일괄 변경하기 위해 echo 'qa_team:NewSecurePass888!' | sudo tee /tmp/group_pass.txt > /dev/null && sudo chgpasswd < /tmp/group_pass.txt 명령어를 실행합니다.
오류 메시지 없이 실행이 완료되면 파일에 정의된 그룹 비밀번호가 시스템에 정상적으로 일괄 갱신된 것입니다.

qa_team 그룹의 비밀번호가 올바르게 갱신되었는지 확인하기 위해 sudo getent gshadow qa_team 명령어를 실행합니다.
실행 결과 qa_team 항목에 암호화된 해시값이 정상적으로 등록되어 있는 것을 확인할 수 있습니다.

실습 과정에서 생성한 임시 비밀번호 파일과 테스트 그룹을 시스템에서 완전히 제거하기 위해 rm -f /tmp/group_pass.txt && sudo groupdel devops_team && sudo groupdel qa_team 명령어를 실행합니다.
별도의 오류 메시지 없이 종료되면 임시 파일과 테스트 그룹이 모두 안전하게 삭제되어 실습 환경 정리가 완료됩니다.

지금까지 Ubuntu 환경에서 chgpasswd 명령어를 활용해 그룹 비밀번호를 일괄 변경하고 관리하는 방법을 간단하게 살펴보았습니다.
대량의 그룹 및 계정을 효율적으로 운영해야 하는 실무 환경에서 자동화 작업과 함께 유용하게 활용해 보시기 바랍니다.