cmod.ify
[LINUX] 사용자 계정 생성 스크립트 본문
728x90
반응형
1) 시나리오 및 주요 기능
- 입력 데이터: 사용자 계정 리스트와 해당 패스워드 리스트.
- 유효성 검사: 인자값(계정, 비번)이 입력되지 않으면 사용법을 출력하고 종료함.
- 중복 체크: /etc/passwd 파일을 조회하여 이미 존재하는 계정인지 확인 후 생성함.
- 반복 처리: for 문을 사용하여 리스트 내의 모든 사용자를 순차적으로 생성함.
2) 관련 핵심 명령어
- useradd: 새로운 사용자 계정 생성.
- passwd: 계정의 비밀번호 설정. 스크립트 내에서는 echo "비번" | passwd --stdin "계정" 형태나 표준 입력을 활용함.
- wc -l: 결과값의 라인 수를 카운트하여 존재 여부(0 또는 1)를 판단함.
3) 스크립트 코드 작성 (sudo nano adduser-script.sh)
#!/bin/bash
if [[ -n $1 ]] && [[ -n $2 ]]
then
# 인자값을 배열로 변환
UserList=($1)
Password=($2)
for (( i=0; i < ${#UserList[@]}; i++ ))
do
# 1. 계정 존재 여부 확인 (grep -w로 정확한 아이디만 체크)
if [[ $(cat /etc/passwd | grep -w ${UserList[$i]} | wc -l) == 0 ]]
then
# 2. 계정 생성
useradd ${UserList[$i]}
# 3. 비밀번호 설정 (passwd 대신 chpasswd 사용)
# '아이디:비밀번호' 형식을 파이프로 넘김
echo "${UserList[$i]}:${Password[$i]}" | chpasswd
echo "User ${UserList[$i]} created and password set."
else
echo "this user ${UserList[$i]} is existing"
fi
done
echo "Job Finished: Success"
else
echo -e "Usage: $0 'user01 user02' 'pw01! pw02!'"
fi
4) 스크립트 실행 및 테스트
작성한 스크립트에 실행 권한을 부여한 뒤, 관리자 권한(sudo)으로 실행해야 함.
실행 명령어:
# 권한 부여
chmod +x adduser-script.sh
# 실행 (쌍따옴표로 묶어서 여러 명 전달)
sudo ./adduser-script.sh 'u1 u2' 'Pass1234@@@C Pass1234!@@@B'
5) 코드 포인트 정리
- [[ -n $1 ]]: 첫 번째 인자값이 비어 있지 않은지 확인하는 조건문임.
- ${#UserList[@]}: 배열에 담긴 요소의 전체 개수를 반환함.
- grep -w: 정확히 일치하는 단어만 찾도록 하여 user1을 찾을 때 user11이 걸리는 간섭을 방지함.
[부록] 생성된 유저 삭제 및 정리하기
실습을 마치고 테스트로 만든 유저들을 지우고 싶을 때 사용하는 방법임.
1. 개별 유저 삭제 (userdel)
가장 기본이 되는 명령어로, 계정 정보를 시스템에서 제거함.
- 단순 삭제: sudo userdel 유저명
- 완전 삭제 (권장): 유저의 홈 디렉토리와 메일함까지 싹 다 지우려면 -r 옵션을 꼭 붙여야 함.
sudo userdel -r u1
2. 여러 유저 한꺼번에 지우기 (반복문 활용)
실습할 때 여러 명을 만들었다면, 일일이 지우기 귀찮으므로 for 문을 사용함.
# u1, u2를 한 번에 삭제
for name in u1 u2
do
sudo userdel -r $name
echo "$name 삭제 완료"
done
3. 삭제 확인하기
유저가 진짜 지워졌는지 확인하려면 /etc/passwd 파일에서 해당 이름이 남아있는지 체크하면 됨
grep "u1" /etc/passwd
# 아무 결과도 나오지 않으면 정상적으로 삭제된 것임
728x90
반응형
'BASIC > LINUX' 카테고리의 다른 글
| [LINUX] Windows에서 Linux로 OS 변경하기 - MSI (0) | 2026.01.21 |
|---|---|
| [LINUX] Shell Programming(Script) (2) | 2026.01.16 |
| [LINUX] 서버 구축 및 데이터베이스 설치 가이드 (1) | 2026.01.15 |
| [LINUX] Programming Language 개발 환경 구축 (1) | 2026.01.15 |
| [LINUX] Virtual Box 전용 네트워크 구성 (0) | 2026.01.14 |