본문 바로가기
네트워크/리눅스

리눅스 실습서버 만들기 part2 - Shell script를 이용해 학생 아이디, 패스워드 생성하는 코드 작성하기

by anjulia 2023. 8. 3.

 

이제 서버에서 학생들이 접속할 수 있다.

그런데 학생들마다 리눅스 실습을 하기 위해서는 계정이 필요할 것이다.

 

총 80명의 학생들의 계정을 일일히 adduser 명령어로 생성해줄 수 있겠지만 번거로우므로 

Shell script를 사용해서 한 번에 80명 학생들의 계정과 패스워드를 만들어 주도록 하자!

 

 

1. 학생들의 학번 정보를 엑셀로 다운 받는다. 

어떤 학교든 이 시스템이 구축되어있을 것이며 필자 또한 이 시스템에서 수강 학생들의 정보를 다운 받을 수 있었다.

엑셀을 잘 몰라서 파이썬의 판다스를 이용해 이 엑셀파일의 학번을 제외한 나머지 컬럼들은 삭제하였다. 

그리고 이 엑셀파일을 다시 txt파일로 변환해주었다. 

 

이 txt파일에는  앞에 알파벳 한글자 + 학번 이렇게 저장했고 이 파일은 결국 리눅스 계정을 생성하기 위해서 만들었다. 

 

아래 블로그를 참고하면 좋을 것 같다. 

 

 

https://hanabi43.tistory.com/4

 

[왕초보 Python] 텍스트 파일(txt) ↔ 엑셀 파일(xlsx) , 확장자 변환하기

교재를 가지고 열심히 파이썬 독학에 돌입했다. 그런데 이 책은 출판년도가 2017년이라 벌써 4년 정도 된 책이다. 서울시 홈페이지 등에서 다운받을 수 있는 공공 데이터의 파일양식이 그새 좀 바

hanabi43.tistory.com

 

2. Shell Script를 이용해 txt파일에 있는 학생 학번을 불러와 계정과 패스워드를 생성한다. 

 

 

계정 생성하는 쉘스크립트

#!/bin/sh

PASS = "1234" // 모든 유저의 패스워드를 1234로 변경 
while read line
do

        #useradd -d /home/$line $line
        useradd $line # user 생성 
        echo "$line:1234" | chpasswd
        tail -n2 /etc/passwd 
        mkdir /home/$line # user의 home 디렉토리 생성 
        chown $line:$line /home/$line # user의 홈 디렉토리 소유자를 user로 설정 
        chmod 700 /home/$line # 접근 권한 설정
        echo $line
done < user_list.txt # userID가 되는 목록이 있는 텍스트 파일

 

학생들이 home안에 있는 자신의 계정 폴더 이외에

다른 학생의 폴더에 접근하는 것을 막기위해

소유자 설정 (chown), chmod 명령어를 이용해 접근권한을 설정하였다. 

 

 

계정을 삭제하는 쉘 스크립트

#/bin/bash

while read line
do
        userdel -r $line #userlist로 읽어온 user들을 모두 삭제
        echo $line
done < userlist.txt

 

다음과 같이 유저를 생성했고, 이 유저들은 각각의 유저이름으로 된 폴더의 rwx 권한을 가지고 있다.

 

3. WSL2는 내 컴퓨터와 마운트 되기 때문에 학생들이 이곳에 접근하지 못하도록 접근권한을 변경해주어야한다.

 

WSL2는 내 윈도우 컴퓨터의 파일시스템과 리눅스 파일시스템을 왔다갔다 할 수 있다.

내 윈도우 컴퓨터의 파일시스템의 경로는 

/mnt

이며

 

리눅스 파일 시스템의 경로는 

/home

이다. 

 

mnt의 root로 변경 (원래 root일 수도 있다)

후 chmod 700 명령어를 이용해서 root 사용자만 mnt 폴더를 접근할 수 있도록 하였다.