리눅스 사용자 관리 · 8 min read · Dec 15, 2025
리눅스 OS에 텍스트 파일에서 사용자 추가하는 방법
리눅스 OS에 텍스트 파일에서 사용자 추가하는 방법
이 튜토리얼은 텍스트 파일에서 사용자를 추가, 삭제 및 확인하는 bash 스크립트에 관한 것입니다. 이 스크립트는 사용자의 정보를 텍스트 파일에서 가져와 리눅스 OS에 추가, 삭제 및 확인할 수 있으며, 사용자를 수동으로 추가, 삭제 또는 수정할 수도 있습니다. 두 가지 기능을 하나의 스크립트 파일에 넣었습니다. 텍스트 파일은 관리자에 의해 지정될 수 있습니다.
:-) !!!이 스크립트는 완전히 사용자 친화적입니다!!! :-)
이 튜토리얼의 끝에서 스크립트를 찾을 수 있습니다.
스크립트 시작하기
스크립트를 시작하면 다음과 같은 메뉴가 나타납니다:
메뉴
사용자 추가
사용자 확인
사용자 삭제
4. 종료1. 사용자 추가
이제 메뉴에서
1. 사용자 추가
옵션을 선택하고
“1”
키보드에서 누릅니다.
이제 스크립트는 사용자가 root여야 한다고 확인하며, 우리는 root의 UID가 0(0)임을 알고 있습니다. 그래서 먼저 현재 사용자의 UID를 0과 비교합니다. 만약 UID가 root의 UID와 일치하지 않으면 다음 메시지를 표시합니다:
**이 스크립트를 실행하려면 root 사용자여야 합니다!그리고 만약
UID
가 root의 UID와 일치하면 다음 메시지를 표시하고 스크립트를 실행합니다:
*신원 확인됨_당신은 Root입니다*
현재 사용자의 UID를 확인하려면 터미널에 다음 명령어를 입력합니다:
echo $UID사용자가 root이면 1. 사용자 추가 기능이 수행됩니다.
이제 스크립트는 사용자에게 사용자를 수동으로 추가할 것인지 아니면 스크립트가 텍스트 파일에서 사용자 정보를 가져오도록 할 것인지 묻습니다. 이를 위해 다음 메뉴를 표시합니다:
#########################################
“모드를 선택하세요!!!
- 사용자를 수동으로 추가
2. 텍스트 파일에서 자동으로 사용자 읽기###########################################
이제 사용자가 1. 사용자를 수동으로 추가를 선택하면 스크립트는 사용자에게 사용자 이름, 그룹 및 비밀번호를 입력하라고 요청합니다. 사용자 이름과 그룹에 대해 다음 명령어를 사용합니다:
read usr_name
read usr_group이제 위 정보를 사용하여 다음 명령어로 사용자를 추가합니다:
useradd -g $usr_group -m $usr_name비밀번호는 다음 명령어를 사용합니다:
passwd $usr_name이제 사용자가 2. 텍스트 파일에서 자동으로 사용자 읽기 옵션을 선택하면 스크립트는 텍스트 파일을 찾고 존재하는지 확인한 후 텍스트 파일에서 사용자 이름, 그룹, 비밀번호와 같은 정보를 읽습니다.
이제 스크립트는 텍스트 파일이 위치해야 하는 현재 작업 디렉토리를 사용자에게 표시합니다. 다음 명령어를 사용하여:
echo $(pwd)/users.txt
이제 스크립트는 위의 텍스트 파일 경로가 올바른지 또는 파일 경로를 수동으로 입력할 것인지 묻습니다. 사용자에게 다음 메시지를 표시합니다:
위의 기본 경로를 사용하시겠습니까? 예=1 & 아니오=2사용자가 예를 위해 1을 누르면 스크립트는 표시된 경로에서 텍스트 파일을 로드합니다. 다음 명령어를 사용하여:
Path=$($pwd)users.txt사용자가 아니오를 위해 2를 누르면 스크립트는 사용자에게 텍스트 파일의 올바른 경로를 입력하라고 요청하고 다음 명령어를 사용하여 파일 경로를 읽습니다:
read Path텍스트 파일의 경로는 변수 “Path”에 저장됩니다. 파일의 존재를 확인하기 위해 다음 명령어를 사용합니다:
if [ -e $Path ];텍스트 파일에서 사용자 이름을 추출하기 위해 다음 명령어를 사용합니다:
Username=`grep "Username00$num" $Path | cut -f2 -d:`텍스트 파일에서 그룹을 추출하기 위해 다음 명령어를 사용합니다:
Group=`grep "Group" $Path |cut -f2 -d:`텍스트 파일에서 비밀번호를 추출하기 위해 다음 명령어를 사용합니다:
Password=`grep "Password" $Path | cut -f2 -d:`이제 스크립트는 사용자에 대한 정보를 포함하는 변수를 사용하여 리눅스 OS에 추가합니다. 다음 명령어를 사용하여 그룹을 추가합니다:
groupadd $Group사용자를 그룹에 추가하기 위해 다음 명령어를 사용합니다:
useradd -g $Group -m $Username모든 사용자의 비밀번호를 설정하기 위해 다음 명령어를 사용합니다:
echo $Password | /usr/bin/passwd --stdin $Username비밀번호는 텍스트 파일에서 추출된 모든 사용자에 대해 동일한 비밀번호를 포함하는 변수입니다.
2. 사용자 확인
메뉴에서:
### 메뉴 ###- 사용자 추가
- 사용자 확인
- 사용자 삭제
- 종료
사용자가 2. 사용자 확인 옵션을 선택하면 다른 메뉴가 나타납니다:
#################################
모드를 선택하세요!!!
1. 시스템의 모든 사용자 확인- 텍스트 파일의 모든 사용자 확인
#################################
위 메뉴에서 사용자가 1. 시스템의 모든 사용자 확인 옵션을 선택하면 시스템의 모든 사용자가 사용자에게 표시됩니다. 이를 위해 다음 명령어를 사용했습니다:
cat /etc/passwd |grep bash이 명령어의 결과는 다음과 같은 bash 사용자들을 반환합니다:
root:x:0:0:root:/root:/bin/bash
lucky:x:501:501:Lucky:/home/lucky:/bin/bash
이제 사용자가 2. 텍스트 파일의 모든 사용자 확인 옵션을 선택하면 텍스트 파일에 언급된 모든 사용자가 확인됩니다. 이 경우, 리눅스 OS에 추가된 사용자와 몇 명의 사용자가 있는지 확인하기 위해 다음 명령어를 사용했습니다.
사용자를 확인하기 위해 스크립트에서 다음 명령어를 사용했습니다:
Path=$($pwd)users.txt
varify=grep "varify" $Path |cut -f2 -d:
cat /etc/passwd | grep $varify
확인은 사용자 이름의 고유 값을 포함하는 변수입니다.
총 사용자 수를 표시하기 위해 다음 명령어를 사용했습니다:
echo -e “ 현재”
cat /etc/passwd | grep $varify |wc -l;
echo “텍스트 파일에서 추가된 사용자”
위 명령어의 결과는 다음과 같습니다:
fa05btn001:x:502:502::/home/fa05btn001:/bin/bash
fa05btn002:x:503:502::/home/fa05btn002:/bin/bash
fa05btn003:x:504:502::/home/fa05btn003:/bin/bash
fa05btn004:x:505:502::/home/fa05btn004:/bin/bash
fa05btn005:x:506:502::/home/fa05btn005:/bin/bash
fa05btn006:x:507:502::/home/fa05btn006:/bin/bash
fa05btn007:x:508:502::/home/fa05btn007:/bin/bash
fa05btn008:x:509:502::/home/fa05btn008:/bin/bash
현재 8 텍스트 파일에서 추가된 사용자
3. 사용자 삭제
메뉴에서:
메뉴
사용자 추가
사용자 확인
사용자 삭제
4. 종료사용자가 3. 사용자 삭제 옵션을 선택하면 진행하기 전에 사용자가 root인지 확인합니다. 사용자가 root로 성공적으로 확인되면 다른 메뉴가 나타납니다:
##############################################
모드를 선택하세요!!!
특정 사용자 삭제
텍스트 파일에 지정된 모든 사용자 삭제
##############################################
이제 위 메뉴에서 사용자가 1. 특정 사용자 삭제 옵션을 선택하면 스크립트는 시스템의 현재 사용자를 표시하고 삭제할 사용자 이름을 입력하라고 요청합니다.
시스템의 모든 사용자를 표시하기 위해 다음 명령어를 사용했습니다:
cat /etc/passwd |grep bash 위 명령어는 다음과 같은 결과를 표시합니다:
현재 시스템에 추가된 사용자는 다음과 같습니다:
root:x:0:0:root:/root:/bin/bash
lucky:x:501:501:Lucky:/home/lucky:/bin/bash
fa05btn001:x:502:502::/home/fa05btn001:/bin/bash
fa05btn002:x:503:502::/home/fa05btn002:/bin/bash
fa05btn003:x:504:502::/home/fa05btn003:/bin/bash
fa05btn004:x:505:502::/home/fa05btn004:/bin/bash
fa05btn005:x:506:502::/home/fa05btn005:/bin/bash
fa05btn006:x:507:502::/home/fa05btn006:/bin/bash
fa05btn007:x:508:502::/home/fa05btn007:/bin/bash
fa05btn008:x:509:502::/home/fa05btn008:/bin/bash
삭제할 사용자의 이름을 입력하세요:이제 사용자는 삭제할 사용자의 이름을 입력하라는 요청을 받으며, 사용자가 삭제하고자 하는 사용자의 이름을 입력하면 리눅스 OS는 위 파일에서 사용자를 검색하고 다음 명령어를 사용하여 사용자를 삭제합니다:
read user_name
userdel -r $user_name
이제 사용자가
2. 텍스트 파일에 지정된 모든 사용자 삭제
옵션을 선택하면 스크립트는 해당 텍스트 파일에 나열된 모든 사용자를 삭제합니다.
다음 명령어는 텍스트 파일에서 사용자 이름을 추출합니다:
Username=`grep "Username00$num" $Path | cut -f2 -d:`다음 스크립트 세그먼트는 파일의 끝으로 이동하고 루프를 종료합니다:
if [ $Username == “EOF” ]; then
clear
main
fi
다음 명령어는 텍스트 파일에 나열된 사용자를 삭제합니다:
userdel -r $Username참고: 저는 PCLinuxOS에서 ADDUSER.sh 스크립트를 테스트했으며, 다른 리눅스 배포판에서도 잘 작동할 것이라고 기대합니다. 누구나 코드를 수정할 수 있으며, 다른 사람들과 공유해 주세요.
즐거운 시간 되세요. :-)
다음은 리눅스 OS에서 사용자를 추가, 삭제 및 확인하는 전체 스크립트입니다.
작성자: USMAN AKRAM (ajaonchat)
#!/bin/bash ############################################################### #이 스크립트는 생성되었습니다. # # USMAN AKRAM (ajaonchat) # # FA05-BTN-005 # # BTN-6 # ############################################################### add_users() { ROOT_UID=0 #root 사용자의 UID는 0입니다. if [ "$UID" -ne "$ROOT_UID" ]; then echo "이 스크립트를 실행하려면 root 사용자여야 합니다!**" exit fi echo echo 신원 확인됨_당신은 Root입니다 echo echo -e "\n#########################################\n" echo -e "사용자 모드를 선택하세요!!!\n" echo -e "1. 사용자를 수동으로 추가\n 2. 텍스트 파일에서 자동으로 사용자 읽기\n" echo -e "###########################################" read add_opt case $add_opt in 1) echo -e "사용자 이름을 입력하세요:" read usr_name echo -e "사용자 그룹을 입력하세요" read usr_group groupadd $usr_group useradd -g $usr_group -m $usr_name echo -e "사용자 $usr_name의 비밀번호를 입력하세요" passwd $usr_name ;; 2) echo echo "현재 작업 디렉토리는: `pwd`/users.txt" echo echo -e "위의 기본 경로를 사용하시겠습니까? 예=1 & 아니오=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "파일의 올바른 경로를 입력하세요 (예: /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then #사용자가 지정한 파일이 존재하는 경우 Username=lucky num=1 while [ $Username != "EOF" ] do Username=`grep "Username00$num" $Path | cut -f2 -d:` #텍스트 파일에서 사용자 이름 추출 num=$(($num+1)) Password=`grep "Password" $Path | cut -f2 -d:` #텍스트 파일에서 비밀번호 추출 Group=`grep "Group" $Path |cut -f2 -d:` #텍스트 파일에서 그룹 추출 groupadd $Group #시스템에 사용자를 추가하고 비밀번호를 부여합니다. if [ $Username == "EOF" ]; then clear main fi #시스템에 사용자 추가 useradd -g $Group -m $Username #사용자의 비밀번호 추가 echo $Password | /usr/bin/passwd --stdin $Username #사용자 비밀번호가 할당됩니다. done else #사용자가 지정한 파일이 존재하지 않는 경우 echo -e "\n#############################################" echo -e "\n######파일을 찾을 수 없습니다!!!!#####" echo -e "\n#############################################" fi;; *) echo -e "잘못된 선택입니다!!!" esac } varify() { echo -e "#################################" echo -e "모드를 선택하세요!!!\n" echo -e "1. 시스템의 모든 사용자 확인\n 2. 텍스트 파일의 모든 사용자 확인\n" echo -e "#################################" read varify_user case $varify_user in 1) cat /etc/passwd |grep bash;; 2) echo echo "현재 작업 디렉토리는: `pwd`/users.txt" echo echo -e "위의 기본 경로를 사용하시겠습니까? 예=1 & 아니오=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "파일의 올바른 경로를 입력하세요 (예: /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then Path=$($pwd)users.txt varify=`grep "varify" $Path |cut -f2 -d:` cat /etc/passwd | grep $varify echo -e "\n현재" cat /etc/passwd | grep $varify |wc -l echo "텍스트 파일에서 추가된 사용자" else #사용자가 지정한 파일이 존재하지 않는 경우 echo -e "\n#############################################" echo -e "\n######파일을 찾을 수 없습니다!!!!#####" echo -e "\n#############################################" fi ;; *) echo -e "잘못된 선택입니다" esac } del_users() { #이 스크립트는 홈 디렉토리에서 사용자를 삭제합니다!!!! ROOT_UID=0 #root 사용자의 UID는 0입니다. if [ "$UID" -ne "$ROOT_UID" ]; then echo "**이 스크립트를 실행하려면 root 사용자여야 합니다!**" exit fi echo echo 신원 확인됨_당신은 Root입니다 echo echo "현재 작업 디렉토리는: `pwd`/students.txt" echo #사용자 삭제 모드를 선택하는 메뉴입니다. 특정 사용자를 삭제하거나 텍스트 파일에 있는 모든 사용자를 삭제할 수 있습니다. echo -e "####################################" echo -e "\n모드를 선택하세요!!!\n 1. 특정 사용자 삭제\n 2. 텍스트 파일에 지정된 모든 사용자 삭제\n" echo -e "####################################" read del_opt case $del_opt in 1) echo -e "\n\n현재 시스템에 추가된 사용자는 다음과 같습니다.\n" cat /etc/passwd |grep bash echo -e "\n\n 삭제할 사용자의 이름을 입력하세요:" read user_name userdel -r $user_name ;; 2) echo echo "현재 작업 디렉토리는: `pwd`/users.txt" echo echo -e "위의 기본 경로를 사용하시겠습니까? 예=1 & 아니오=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "파일의 올바른 경로를 입력하세요 (예: /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then #사용자가 지정한 파일이 존재하는 경우 num=1 Username=lucky while [ $Username != "EOF" ] do Username=`grep "Username00$num" $Path | cut -f2 -d:` #텍스트 파일에서 사용자 이름 추출 if [ $Username == "EOF" ]; then clear main fi userdel -r $Username num=$(($num+1)) done else #사용자가 지정한 파일이 존재하지 않는 경우 echo -e "\n#############################################" echo -e "\n######파일을 찾을 수 없습니다!!!!#####" echo -e "\n#############################################" fi ;; *) echo -e "잘못된 선택입니다" esac } main() { opt=1 while [ $opt -le 4 ] do clear echo -e " ### 메뉴 ###\n 1. 사용자 추가\n 2. 사용자 확인\n 3. 사용자 삭제\n 4. 종료\n" read opt case $opt in 1) add_users ;; 2) varify ;; 3) del_users ;; 4) exit 0 ;; *) echo -e "잘못된 선택입니다!!!" esac echo -e "\n스크립트를 다시 실행하시겠습니까? 예=1 & 아니오=4." read opt done } main exit 0
제가 스크립트와 함께 사용한 텍스트 파일입니다
#######################################################
작성자
USMAN AKRAM (LUCKY)
FA05-BTN-005
[email protected]
#######################################################
COMSATS Abbottabad 학생 계정
==============================
파일 이름:users.txt
연도:2008
캠퍼스:CIIT-ABTD
그룹:btn
##다음은 홈 디렉토리에 추가될 사용자입니다!!!
Username001:fa05btn001
Username002:fa05btn002
Username003:fa05btn003
Username004:fa05btn004
Username005:fa05btn005
Username006:fa05btn006
Username007:fa05btn007
Username008:fa05btn008
Username009:EOF
#사용자의 끝
varify:fa05btn
비밀번호:123456
텍스트 파일의 끝!!!!작성자: USMAN AKRAM(Lucky), COMSATS 대학교 Abbottabad 학생 [BS(TN)-6] 이메일 주소: [email protected]
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.