리눅스에서 사용자 계정을 배치 모드(완전 자동 방식)로 대량 생성해야 하는 경우가 종종 있습니다. 그런데 초보자들은 새 사용자를 만들 때 비밀번호를 터미널에서 일일이 직접 입력하지 않고 미리 설정해 두는 방법을 자주 묻곤 합니다.
useradd 명령어로 비밀번호 지정하기
다행히도 useradd 명령어는 입력 매개변수로 비밀번호를 받을 수 있습니다. 다만 주의할 점은, 이때 전달되는 비밀번호는 반드시 암호화된 값이어야 한다는 것입니다.
즉, 비밀번호가 설정된 리눅스 사용자 계정을 생성하려면 다음과 같은 명령 형식을 사용하면 됩니다:
useradd -m -p 암호화된비밀번호 사용자이름
여기서 -m 옵션은 사용자의 홈 디렉터리를 함께 생성해 주는 역할을 합니다.
비밀번호를 암호화하는 두 가지 방법
암호화된 비밀번호 값을 얻는 방법은 여러 가지가 있지만, 대표적으로 다음 두 가지를 소개합니다.
1. perl의 crypt() 함수 활용
첫 번째 방법은 perl의 crypt() 함수를 이용하는 것입니다:
perl -e 'print crypt("password_to_be_encrypted", "salt"),"\n"'
이 명령을 실행하면 sa3tHJ3/KuYvI와 같은 암호화된 문자열이 출력됩니다. 이 값을 그대로 -p 옵션 뒤에 넣으면 됩니다.
2. openssl passwd 명령어 활용
두 번째 방법은 더 간단한데, 바로 openssl 명령어를 사용하는 것입니다:
openssl passwd password_to_be_encrypted
이 명령 역시 암호화된 비밀번호 문자열을 출력해 주므로, 결과값을 useradd의 -p 옵션에 전달하면 됩니다.
정리
이처럼 perl crypt() 또는 openssl passwd로 비밀번호를 먼저 암호화한 뒤 useradd -m -p 명령에 넘겨주면, 스크립트나 셸 파일 안에서 사용자 상호작용 없이도 비밀번호가 설정된 리눅스 계정을 손쉽게 자동 생성할 수 있습니다. 서버 초기 세팅이나 대량 계정 발급 작업에서 특히 유용한 방법입니다.