>> Edit article
이름
제목
패스워드
: 쉘스크립트이용한 수백명의 사용자 단한번에 끝내기! : : 학교나, 관공서, 군대(?) 등에서 번호나, 일정한 패턴을 가진 아이디로 유저 : 를 생성할때 : 그 작업을 일일히 하자면 아주 따분하고 시간이 많이 걸리게 된다. 그러나, : 간단한 쉘 스크립트를 : 이용해서, 수천명의 사람도 단 한번에 끝낼수있다. (컴퓨터의 성능에따라 틀 : 리나, 셀러론 300의 서버에서도 : 200명의 사용자는 약 5초정도에 끝났다) : : 1. 스크립트의 구성 : : 스크립트는 3부분으로 나누어진다(필자가만든것이 복잡할수도있다.) : : - txtmaker : 유저를 일괄생성하는 프로그램이 참조하는 txt 파일을 생성한 : 다. : - deltxt : 중복을 방지하기위해 이전에 생성된 txt 파일을 삭제한다. : - autoadduser : txtmaker 만든 userinfo.txt 파일을 참조하여, 유저를 일괄 : 생성하고 비밀번호를 아이디와 같게한다. : : 보안상문제는 상당하게 있을수있다. 일단 이러한 정보를 아는사람이면, 운영 : 자가 : 유저를 생성했을때 이미 비밀번호를 알수있기때문에 그때 위험할 가능성이있 : 다. : 이러한 가능성을 배제하는 독특한 아이디어는 떠오르지 않는다-_-; : (사람들을 믿을뿐이죠^^;) 혹시 좋은 아이디어라도? : : 2. 스크립트의 소스 : : # 주의 : 이 예제는 저희 고등학고 의 이니셜을 딴 sdhs에 학번을 결합시켜 : sdhs[학번] 과 같은꼴의 아이디를 : 생성하는 프로그램입니다. sdhs 대신에 어떤것이든 수정이 가능하니, 소스 : 를 잘 보시고 상황에맞게 : 고쳐쓰시기바랍니다.^^ : : - txtmaker 의 소스 : : #!/bin/bash : echo " 지금부터 $1 사용자부터 $2 사용자까지의 텍스트 파일을 생성합니 : 다." : echo " 형식 : [0000:0000] " : limit=$2 : for ((a=$1; a<=limit ; a++)) : do : echo sdhs$a:sdhs$a >> userinfo.txt : done : echo " $1 부터 $2 까지 생성을 완료하였습니다 " : : 매우 난잡한 소스다-_-;; $1 과 $2 가 의미하는것은 쉘에서 다음과같이 입력 : 이 가능하다 : : #shell> txtmaker 1 9999 : : 이렇게 하게되면 $1 은 1이되고 9999는 $2 가 되는것이다. 고로 1부터 9999 : 번까지의 파일을 생성하라는 : 말이된다. txtmaker 가 있는 디렉토리에 userinfo.txt 파일이 위치하게되고 : 다른프로그램이 이를 참조하여 : 유저를 일괄생성한다. : : - userinfo.txt 의 내용 : : sdhs1:sdhs1 : sdhs2:sdhs2 : sdhs3:sdhs3 : sdhs4:sdhs4 : sdhs5:sdhs5 : 아이디:비밀번호 : : 아이디:비밀번호의 꼴입니다. 즉 아이디와 비밀번호가 같게 되는것이죠. 모 : 든사용자의 비밀번호를 똑같게 : 하려면, 저 소스에서 비밀번호에 해당하는 부분을 바꿔주시면되겠죠? : : - deltxt 의 소스 : : #!/bin/bash : rm -f userinfo.txt : echo "삭제완료" : : 단지 userinfo.txt 파일을 삭제하고, 삭제완료라는 메시지를 출력하는 프로 : 그램입니다. : : - autoadduser 의 소스 : : #!/bin/bash : for i in `awk -F : '{print $1}' userinfo.txt` : do : echo "$i 사용자의 계정생성작업 시작" : useradd -m -k /webhosting/skel -s /bin/bash -d /home/students/$i -g : webhost $i : : ####################################################################### : ################### : # /webhosting/skel 대신에 홈디렉토리에 채워질 내용을 담은 디렉토리를 지 : 정해주세요. 스켈레톤디렉토리 : # /bin/bash 대신에 /bin/false 를 하시면 텔넷접속을 막습니다. 그러나 : ftp 데몬에서 쉘이없는 사용자도 : # 로그인이 가능하게 해줘야겠죠? : # -d 옵션다음에는 홈디렉토리를 정해줍니다. : # -g 옵션다음에는 기본그룹을 지정해주지요 : ####################################################################### : ################### : : echo "$i 사용자의 홈디렉토리, 쉘, 그룹설정완료" : echo "$i 사용자의 홈디렉토리 권한을 701 로 설정합니다.." : chmod 701 /home/students/$i : echo "$i 사용자의 홈디렉토리 권한이 701 로 설정되었습니다.." : echo "$i 사용자의 public_html 권한을 705 로 설정합니다" : chmod 705 /home/students/$i/public_html : echo "$i 사용자의 모든 설정을 완료 하였습니다." : : done : : echo "지금부터 모든 사용자의 패쓰워드를 일괄적으로 바꿉니다" : chpasswd < userinfo.txt : echo "모든사용자의 비밀번호가 일괄적으로 바뀌었습니다" : echo "모든사용자의 계정세팅이 끝났습니다" : echo "이전에 생성된 userinfo.txt 파일을 삭제합니다" : ./deltxt : : 쭈욱 따라가보시면 굉장히 쉬운 소스입니다. 마지막에는 deltxt 프로그램을 : 실행시켜서, 유저파일을 삭제하게되죠. : 중간 중간에 디렉토리의 권한을 www 서비스에 맞게 바꿔즈는 소스가 있습니 : 다.(나름대로 변형이 가능하죠) : : 3. 맺음 : : 저 3개 의 간단한 스크립트로, 학교,관공서 군대 또는 실습중인 학원 등에 : 서 재빨리 계정을 생성할수있습니다. : 그리고 skel 의 내용안에는 public_html 이 위치해야겠죠? 그리고 ftp 서비 : 스도 가동하셔야겠구요. : 저의 skel 디렉토리에는 다음과 같은 파일이 존재합니다. : : drwxr-xr-x 3 root root 4096 May 9 16:22 . : drwxr-xr-x 13 root root 4096 May 9 16:31 .. : -rw-r--r-- 1 root root 24 May 2 15:57 .bash_logout : -rw-r--r-- 1 root root 233 May 2 16:00 .bash_profile : -rw-r--r-- 1 root root 125 May 2 15:58 .bashrc : drwxr-xr-x 2 root root 4096 May 3 13:39 public_html : : .bashrc 나 .bash_profile 같은 파일이없으면 사용자가 비밀번호를 변경하 : 려 로그인했을때 약간 낯선 쉘을 : 맞이하게되니까, 넣어주시는게 좋습니다^^ : public_html 은 apache 에서 정해준 디렉토리에 따라 수정이 가능하죠. : public_html 안에는 index.html 을 기본으로 넣어줘서 계정 생성이 제대로 : 됐나 확인할수있게합니다. : 저의 index.html 의 내용은 이렇습니다.. : : [root@dopesoul public_html]# cat index.html : <html> : <title>Welcome to Dopesoul web server</title> : <body> : <h1>환영합니다!</h1> : <br><br> : 당신은 정상적인 방법에의해 계정을 취득하셨습니다.<br> : 서버이용에관한 자세한 문의는 관리자에게 해주십시요.<br> : 당신은 ftp 서버에 접속하거나, 나모웹에디터, 드림위버와같은 WYSIWYG 툴을 : 이용<br> : 하여, 본 서버에 홈페이지를 등록할수있습니다.<br> : <br><br> : - Root 드림 -<br> : <br> : 관리자 E-mail : byulkorea@empal.com<br> : </body> : </html> : [root@dopesoul public_html]# : : : 이로써 -_- 날림 스크립트로 쉽게쉽게 계정생성하는 법을 알려드렸습니다. : 아무쪼록 쓸모있게 쓰시길 바라면서! 물러갑니다.. (__)(--) : : 질문이 있으시면 plaese e-mail to [byulkorea@empal.com]. 이것관 약간 다르다 할 수 있으나... 전 이전에 제로보드에 가입된 회원(영문 아이디만 사용)을 일괄적으로 계정을 만드는 쉘을 만들었었죠... 그때 비밀번호는 회원 정보에서 생년월일을 따서 비밀번호로 넣었죠... 회원 정보가 없다면 더 나은 방법은 뭐가 있을까...;; 어쨋든 그런 셈이구요... 위 내용에서 두가지 부분만 지적을 한다면... 먼저 계정 등록(adduser 명령어 사용) 시에 비밀번호까지 한꺼번에 설정해 버리면 나을듯... 나중에 별도로 비밀번호를 변경할 필요가 없겠죠 ? adduser 명령어에 비밀번호를 바로 설정하도록 옵션을 주면 되겠죠.. 그리고... echo "$i 사용자의 홈디렉토리 권한을 701 로 설정합니다.." chmod 701 /home/students/$i echo "$i 사용자의 홈디렉토리 권한이 701 로 설정되었습니다.." echo "$i 사용자의 public_html 권한을 705 로 설정합니다" chmod 705 /home/students/$i/public_html echo "$i 사용자의 모든 설정을 완료 하였습니다." 이 부분... 먼저 홈디렉토리의 권한은 별도로 설정할 피료가 없이... /etc/login.defs 여기에 UMASK 를 설정해 둔다면 ? 다시 퍼미션 잡을 필요가 없겠죠... 또한 public_html 디렉토리도 skel 디렉토리에서 public_html 디렉토리의 퍼미션이 755 로 되어져 있다면 또다시 퍼미션 잡지 않아도 퍼미션은 skel 에 있는 그대로 유지가 되겠죠... 조금이나마 절차가 간단해 지겠죠 아닌가? 아님 말구 -_-;; -- irc.ircnara.net ----Hi - http://www.hi.pe.kr/ -=- ICQ#14555857 MSN:choibit@chollian.net *** 메일로 질문 사절 *** 거부 *** 질문과 답변 게시판을 이용하세요 ***
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved