사용자 및 그룹 생성 및 삭제 일괄 처리

LinuxBeginner
지금 연습하기

소개

이 챌린지에서는 서버에서 사용자를 일괄 추가 및 삭제하는 bash 스크립트인 userctr.sh를 작성합니다. 작업 (add 또는 del), 선생님 사용자 이름, 학생 사용자 이름 접두사, 관리할 학생 수를 지정하는 명령줄 인수를 받는 스크립트를 작성하게 됩니다. 이 작업은 시스템 관리에 필수적인 쉘 스크립팅, 사용자 관리 및 자동화 기술을 향상시킬 것입니다.

이것은 챌린지입니다. 실험 (Lab) 과 달리, 학습을 위해 실험의 단계를 따르는 것이 아니라, 독립적으로 챌린지 작업을 완료해야 합니다.챌린지는 일반적으로 조금 어렵습니다. 어려움을 겪었다면, Labby 와 논의하거나 해결책을 확인할 수 있습니다. 과거 데이터에 따르면, 이것은 중급 레벨의 챌린지이며 통과율은 67%입니다.학습자들로부터 93%의 긍정적인 리뷰율을 받았습니다.

사용자 및 그룹 생성 및 삭제 일괄 처리

시스템 관리자는 교실 서버에 선생님 한 명과 여러 학생 사용자를 효율적으로 추가할 수 있는 방법이 필요합니다. 각 계정을 수동으로 생성하는 것은 지루하고 오류가 발생하기 쉽습니다. 이 작업에서는 이 프로세스를 자동화하는 bash 스크립트인 userctr.sh를 작성합니다. 스크립트는 작업 유형, 선생님 이름, 학생 이름 접두사 및 학생 수를 매개변수로 받습니다.

작업

  • /home/labex/project 디렉토리에 userctr.sh라는 Bash 스크립트를 생성합니다.
  • 스크립트는 첫 번째 명령줄 인수에 의해 결정되는 adddel의 두 가지 주요 작업을 구현해야 합니다.
  • add 작업의 경우 선생님 사용자 한 명과 지정된 수의 학생 사용자를 생성합니다.
  • del 작업의 경우 지정된 선생님 및 학생 사용자를 삭제합니다.
  • 스크립트는 아래 요구 사항에 따라 모든 입력 매개변수를 검증해야 합니다.

요구 사항

  • 실행 형식: 스크립트는 네 개의 인수로 실행 가능해야 합니다.

    sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>
  • 매개변수 검증:

    • 스크립트는 정확히 네 개의 인수를 받아야 합니다. 그렇지 않으면 parameter error를 출력하고 종료해야 합니다.
    • student_count(네 번째 인수) 는 1 에서 10 사이의 정수여야 합니다. 그렇지 않으면 parameter error를 출력하고 종료해야 합니다.
    • student_prefix(세 번째 인수) 는 소문자만 포함해야 합니다. 그렇지 않으면 parameter error를 출력하고 종료해야 합니다.
  • add 작업 세부 정보:

    • 추가할 사용자가 이미 존재하는 경우, 생성하려고 시도하지 마십시오. 대신 해당 사용자 이름을 출력하고 뒤에 ******를 붙입니다 (예: stu3:******).
    • 새 사용자의 경우 무작위 6 자리 숫자 비밀번호를 생성합니다.
    • 새로 생성된 각 사용자에 대해 사용자 이름과 비밀번호를 콜론으로 구분하여 출력합니다 (예: teacher:901231).
    • 생성된 모든 사용자는 기본 쉘로 /bin/zsh를 사용해야 합니다.
    • 선생님 사용자는 관리자 권한을 부여하기 위해 sudo 그룹에 추가되어야 합니다.
  • del 작업 세부 정보:

    • 스크립트는 지정된 선생님 및 학생 사용자를 홈 디렉토리를 포함하여 삭제해야 합니다.
    • del 작업은 출력을 생성하지 않아야 합니다.
    • 삭제할 사용자가 존재하지 않는 경우, 스크립트는 오류를 보고하지 않고 다른 기존 사용자를 삭제하는 작업을 계속해야 합니다.

예시

다음 예시는 스크립트의 예상 동작을 보여줍니다.

  • 사용자 추가: 이 명령은 선생님 한 명 (teacher) 과 학생 여섯 명 (stu1부터 stu6까지) 을 추가합니다.

    sh userctr.sh add teacher stu 6
  • 예시 출력:

    teacher:901231
    stu1:271828
    stu2:928172
    stu3:******
    stu4:384712
    stu5:098273
    stu6:921098

    이 출력에서 stu3의 별표는 해당 사용자가 이미 존재했음을 나타내므로 새 비밀번호가 생성되지 않았습니다.

  • 사용자 삭제: 이 명령은 동일한 사용자 세트를 삭제합니다. 성공적으로 완료되면 출력이 없어야 합니다.

    sh userctr.sh del teacher stu 6

힌트

  • useradduserdel과 같이 루트 권한이 필요한 명령 앞에 sudo를 사용하십시오.
  • $#로 인수의 수를 확인하십시오.
  • $1, $2 등을 사용하여 인수에 접근하십시오.
  • 사용자가 존재하는지 확인하려면 id -u <username>을 사용할 수 있습니다. 사용자가 존재하지 않으면 이 명령은 0 이 아닌 종료 코드를 갖습니다.
  • 홈 디렉토리를 생성하고 Zsh 쉘을 설정하려면 useradd -m -s /bin/zsh <username>을 사용하십시오.
  • 사용자를 sudo 그룹에 추가하려면 usermod -aG sudo <username>을 사용하십시오.
  • 사용자와 해당 홈 디렉토리를 삭제하려면 userdel -r <username>을 사용하십시오.
  • 무작위 6 자리 숫자를 생성하려면 shuf -i 100000-999999 -n 1을 사용할 수 있습니다.
  • 학생 수를 반복하려면 for ((i=1; i<=$student_count; i++))와 같은 for 루프가 유용합니다.
  • 매개변수를 검증하기 위해 패턴 일치에는 if [[ "$string" =~ "regex" ]]를 사용하십시오.
✨ 솔루션 확인 및 연습

요약

축하합니다! 사용자 관리를 자동화하는 bash 스크립트를 성공적으로 작성했습니다. 이 스크립트는 사용자를 일괄적으로 추가 및 삭제하고, 입력 매개변수를 검증하며, 기존 사용자를 처리할 수 있어 모든 시스템 관리자에게 필수적인 기술입니다. 스크립트 내에서 조건문, 루프, 명령줄 인수 및 useradd, userdel과 같은 외부 명령을 사용하는 연습을 했습니다.