Active Directory 사용자 추가 batch 파일 만들기
작성자 : 정원호 (lion21@nownuri.net)
편집자 : 정원호 (lion21@nownuri.net)
최초 게시일 : 2003년 3월 3일
편집자 : 정원호 (lion21@nownuri.net)
최초 게시일 : 2003년 3월 3일
시나리오
Active Directory는 LDAP 프로토콜을 사용하기 때문에 일반 Stand-alone Windows Server나 Linux에서 사용자를 추가하는 것과는 약간 차이가 있다. 특히나 OU라는 논리적 구성요소가 존재하기 때문에 모든 사용자 시스템에 적용할 수 있는 배치파일을 만들 수는 없다.
하지만 아래 필자가 예로 제시한 배치파일의 전체적인 구조를 이해한다면 자신의 환경에 맞는 배치파일을 생성하는 것은 그리 어렵지 않을 것이다. 참고로 아래 배치파일은 필자의 동아리에서 운영하는 Active Directory 에서 사용하는 것이다.
시나리오는 다음과 같다.
- Active Directory 도메인명은 ezbox.net 이고, 호스트명은 dcbox 이다.
- 사용자 프로파일 폴더의 UNC는 ezbox.netprofile 이며, 물리적인 위치는 C:Documents and settings 이다.
- 사용자 홈폴더의 UNC는 ezbox.nethome 이며, 물리적인 위치는 D:home 이다.
- 최상위 OU는 members 이며, 실제 사용자 계정은 하위 OU (01st, 02nd, ... 07th, ... 14th, 15th) 에 위치한다. 이는 동아리 회원들의 기수를 의미한다. OU는 이미 존재하고 있다.
- 정의할 LDAP Attribute는 DN, objectClass, displayName, sn, givenName, homeDirectory, homeDrive, profilePath, sAMAccountName, userAccountControl, userPrincipalName 에 한한다.
- 계정을 추가함과 동시에 프로파일 폴더 및 홈폴더가 생성되며, 해당 사용자 계정이 Owner 가 되고, 모든 권한을 갖는다.
- C:Inetpub에 IIS 5.0 이 설치되어 있다.
- 해당 사용자가 자신의 홈폴더에 ftp로 접근(읽기, 쓰기)할 수 있도록 IIS 가상디렉토리를 생성한다.
- 해당 사용자 홈폴더 아래에 public_html 폴더를 추가하고, web 서비스(IUSR_%computername% 에 읽기 권한만 부여)를 할 수 있도록 IIS 가상디렉토리를 생성한다. 디렉토리명은 ~%username% 이다. → http://ezbox.net/~username
배치파일 예제
@echo off rem ---- UserAdd.cmd ------ rem ---- Created Nov. 26 2002 by 정원호 ------ rem ---- Lion21@nownuri.net ------- rem ---- Essential files are : subinacl.exe(rskit), mkftpdir.vbs(download from MS Site) rem ---- mkftpdir.vbs - http://support.microsoft.com/default.aspx?scid=KB;en-us;q254808 rem ---- Location of files : %Systemroot%system32 ------ rem ---- %1 = 계정명(Account) rem ---- %2 = 성(Surname) rem ---- %3 = 이름(Givenname) rem ---- %4 = 기수 rem 매개 변수 확인 if '%1'=='' goto wrong if '%2'=='' goto wrong if '%3'=='' goto wrong if '%4'=='' goto wrong rem 홈폴더 및 프로파일 폴더 생성 (public_html 는 웹 가상디렉토리) mkdir ezbox.nethome%1 mkdir ezbox.nethome%1public_html mkdir ezbox.netprofile%1 rem 지역 변수 설정 setlocal set DN="CN=%2 %3,OU=%4,OU=Members,DC=ezbox,DC=net" set objectClass=user set displayName=%2 %3 set sn=%2 set givenName=%3 set homeDirectory=\ezbox.nethome%1 set homeDrive=Z: set profilePath=\ezbox.netprofile%1 set sAMAccountName=%1 set userAccountControl=66048 set userPrincipalName=%1@ezbox.net set csv=C:user.csv rem %csv% 파일 만들기 echo DN,objectClass,displayName,sn,givenName,homeDirectory,homeDrive,profilePath,sAMAccountName,userAccountControl,userPrincipalName>%csv% echo %DN%,%objectClass%,%displayName%,%sn%,%givenName%,%homeDirectory%,%homeDrive%,%profilePath%,%sAMAccountName%,%userAccountControl%,%userPrincipalName%>>%csv% rem csvde 명령어를 통해 AD에 정보 입력 csvde -i -f %csv% rem 홈폴더 및 프로파일 폴더 소유자 변경 subinacl /subdirectories ezbox.nethome%1 /owner=%1 subinacl /subdirectories ezbox.nethome%1public_html /owner=%1 subinacl /subdirectories ezbox.netprofile%1 /owner=%1 rem 사용자에게 퍼미션 부여 echo y | cacls ezbox.nethome%1 /t /e /c /g %1:F echo y | cacls ezbox.nethome%1public_html /t /e /c /g IUSR_%computername%:R echo y | cacls ezbox.netprofile%1 /t /e /c /g %1:F rem %csv% 및 로그파일 지우기 del /f /q %csv% del /f /q csv.log rem virtual ftp 및 web 디렉토리 설정 (adsutil은 접근 권한 설정) Cscript C:InetPubAdminScriptsmkftpdir.vbs -f "ezbox.net" -v "%1","d:home%1" Cscript C:InetPubAdminScriptsadsutil.vbs set MSFTPSVC/1/root/%1/accesswrite "true" Cscript C:InetPubAdminScriptsmkwebdir.vbs -w "ezbox.net" -v "~%1","d:home%1public_html" Cscript C:InetpubAdminScriptsadsutil.vbs set W3SVC/1/root/~%1/accesswrite "False" goto end :wrongclsecho **************************************************************echo **************************************************************echo *** ***echo *** 명령이 올바르지 않습니다. 문법을 확인해 주세요. ***echo *** ***echo *** ***echo *** useradd (계정명) (성) (이름) (기수) ***echo *** ***echo *** ***echo *** ex. useradd lion21 정 원호 07th ***echo *** ***echo **************************************************************echo **************************************************************pause:endendlocal 'Computer > Etc' 카테고리의 다른 글
|