[Note] dsadd 유틸리티를 이용한 대량 사용자 계정 생성방법 (Bulk Import) Extra Articles2008. 11. 23. 02:32
어떤 회사라도 회사직원들의 인명부나 주소록 정도는 가지고 있을 것이다. 또한 회사에서 사용하는 인사프로그램들의 경우 요즈음 프로그램의 대부분은 출력포맷으로 마이크로소프트의 오피스제품인 엑셀(Excel) 프로그램과 호환되는 파일포맷을 지원해 주고 있다. 이렇듯 회사의 직원명부를 엑셀 형태의 데이터로 가지고 있는 경우라면 간단하게 사용자 계정을 생성하는 것이 가능하다.
Windows Server 2003의 Active Directory에서 기본제공되는 dsadd 유틸리티는 대량계정생성작업에 아주 유용한 도구이다. 명령프롬프트에서 “dsadd /?”를 입력하여 도움말을 열어보았다.
설명: 이 도구는 디렉터리에 특정 개체 유형을 추가할 수 있도록 합니다. dsadd 명령: dsadd computer - 디렉터리에 컴퓨터를 추가합니다. dsadd contact - 디렉터리에 연락처를 추가합니다. dsadd group - 디렉터리에 그룹을 추가합니다. dsadd ou - 디렉터리에 조직 구성 단위를 추가합니다. dsadd user - 디렉터리에 사용자를 추가합니다. dsadd quota - 디렉터리 파티션에 할당량 지정을 추가합니다. 특정 명령의 도움말을 보려면 "dsadd <개체 유형> /?"를 입력하십시오. <개체 유형>은 위에 표시되어 있는 지원된 개체 유형입니다. 예, dsadd ou /? 참고: 고유 이름에 구분 기호로 사용되지 않는 쉼표는 백슬래시("\")로 이스케이프되어야 합니다. (예, "CN=Company\, Inc.,CN=Users,DC=microsoft,DC=com") 고유 이름에 사용되는 백슬래시는 백슬래시로 이스케이프되어야 합니다. (예, "CN=Sales\\ Latin America,OU=Distribution Lists,DC=microsoft,DC=com") 디렉터리 서비스 명령줄 도구 도움말: dsadd /? - 개체 추가에 대한 도움말 dsget /? - 개체 표시에 대한 도움말 dsmod /? - 개체 수정에 대한 도움말 dsmove /? - 개체 이동에 대한 도움말 dsquery /? - 검색 조건에 해당되는 개체 찾기에 대한 도움말 dsrm /? - 개체 삭제에 대한 도움말 |
도움말에서 볼 수 있듯이 다양한 개체를 생성할 수 있는 것을 알 수 있다. 사용자 계정 만드는 것은 “dsadd user”라는 명령이라는 것을 알았다. 이번에는 dsadd user /? 를 입력해 보면 다음과 같은 결과를 얻을 수 있다.
설명: 디렉터리에 사용자를 추가합니다. 구문: dsadd user <사용자 DN> [-samid <SAM 이름>] [-upn <UPN>] [-fn <이름>] [-mi <이니셜>] [-ln <성>] [-display <표시 이름>] [-empid <직원 ID>] [-pwd {<암호> | *}] [-desc <설명>] [-memberof <그룹 ...>] [-office <사무실>] [-tel <전화 번호>] [-email <전자 메일>] [-hometel <집 전화 번호>] [-pager <호출기 번호>] [-mobile <휴대폰 번호>] [-fax <팩스 번호>] [-iptel <IP 전화 번호>] [-webpg <웹 페이지>] [-title <직함>] [-dept <부서>] [-company <회사>] [-mgr <관리자>] [-hmdir <홈 디렉터리>] [-hmdrv <드라이브 문자:>] [-profile <프로필 경로>] [-loscr <스크립트 경로>] [-mustchpwd {yes | no}] [-canchpwd {yes | no}] [-reversiblepwd {yes | no}] [-pwdneverexpires {yes | no}] [-acctexpires <일 수>] [-disabled {yes | no}] [{-s <서버> | -d <도메인>}] [-u <사용자 이름>] [-p {<암호> | *}] [-q] [{-uc | -uco | -uci}] 매개 변수: 값 설명 <사용자 DN> 필수. 추가할 사용자의 고유 이름(DN)입니다. 대상 개체가 생략되면 표준 입력(stdin)으로부터 얻습니다. -samid <SAM 이름> 사용자의 SAM 계정 이름을 <SAM 이름>으로 설정합니다. <SAM 이름>이 생략되면 <사용자 DN>에 대한 일반 이름(CN)의 첫 20문자를 사용하여 SAM 계정 이름을 만듭니다. -upn <UPN> upn 값을 <UPN>으로 설정합니다. -fn <이름> 사용자 이름을 <사용자 이름>으로 설정합니다. -mi <이니셜> 사용자 중간 이니셜을 <이니셜>로 설정합니다. -ln <성> 사용자 성을 <성>으로 설정합니다. -display <표시 이름> 사용자 표시 이름을 <표시 이름>으로 설정합니다. -empid <직원 ID> 사용자 직원 ID를 <직원 ID>로 설정합니다. -pwd {<암호> | *} 사용자 암호를 <암호>로 설정합니다. *를 지정하면 암호를 묻습니다. -desc <설명> 사용자 설명을 <설명>으로 설정합니다. -memberof <그룹 ...> 사용자를 <그룹 ...> 구성원으로 등록합니다. -office <사무실> 사용자 사무실 위치를 <사무실>로 설정합니다. -tel <전화 번호> 사용자 전화 번호를 <전화 번호>로 설정합니다. -email <전자 메일> 사용자 전자 메일 주소를 <전자 메일>로 설정합니다. -hometel <집 전화 번호> 사용자 집 전화 번호를 <집 전화 번호>로 설정합니다. -pager <호출기 번호> 사용자 호출기 번호를 <호출기 번호>로 설정합니다. -mobile <휴대폰 번호> 사용자 휴대폰 번호를 <휴대폰 번호>로 설정합니다. -fax <팩스 번호> 사용자 팩스 번호를 <팩스 번호>로 설정합니다. -iptel <IP 전화 번호> 사용자 IP 전화 번호를 <IP 전화 번호>로 설정합니다. -webpg <웹 페이지> 사용자 웹 페이지 URL을 <웹 페이지>로 설정합니다. -title <직함> 사용자 직함을 <직함>으로 설정합니다. -dept <부서> 사용자 부서를 <부서>로 설정합니다. -company <회사> 사용자 회사 정보를 <회사>로 설정합니다. -mgr <관리자> 사용자 관리자를 <관리자>로 설정합니다(DN 형식). -hmdir <홈 디렉터리> 사용자 홈 디렉터리를 <홈 디렉터리>로 설정합니다. UNC 경로인 경우 이 경로에 매핑될 드라이브 문자를 -hmdrv로도 지정해야 합니다. -hmdrv <드라이브 문자:> 사용자 홈 드라이브 문자를 <드라이브 문자:>로 설정합니다. -profile <프로필 경로> 사용자 프로필 경로를 <프로필 경로>로 설정합니다. -loscr <스크립트 경로> 사용자 로그온 스크립트 경로를 <스크립트 경로>로 설정합니다. -mustchpwd {yes | no} 사용자가 다음 로그온 시 암호를 변경해야 하는지 지정합니다. 기본값: no -canchpwd {yes | no} 사용자가 암호를 변경할 수 있는지 지정합니다. -mustchpwd 값이 "yes"인 경우 "yes"여야 합니다. 기본값: yes -reversiblepwd {yes | no} 사용자 암호를 해독 가능한 암호화로 저장할 것인지 지정합니다. 기본값: no -pwdneverexpires {yes | no} 사용자 암호가 만료될 수 있는지 지정합니다. 기본값: no -acctexpires <일 수> 사용자 계정이 오늘부터 <일 수> 후에 만료되도록 설정합니다. 0 값은 계정이 오늘 만료될 것을 의미합니다. 양수는 계정이 미래에 만료될 것을 의미합니다. 음수는 계정이 이미 만료된 것을 의미하며 만료 날짜를 지난 날짜로 설정합니다. "never" 문자열은 계정이 만료되지 않는 것을 의미합니다. -disabled {yes | no} 사용자 계정을 사용 불가능 또는 사용 가능하게 설정합니다. 기본값: no {-s <서버> | -d <도메인>} -s <서버>는 <서버> 이름을 가진 도메인 컨트롤러(DC)에 연결하도록 합니다. -d <도메인>은 <도메인> 도메인에 있는 DC에 연결하도록 합니다. 기본값: 로그온 도메인에 있는 DC -u <사용자 이름> <사용자 이름>으로 연결합니다. 기본값: 로그인된 사용자 <사용자 이름>은 사용자 이름, 도메인\사용자 이름 또는 UPN이 될 수 있습니다. -p {<암호> | *} <사용자 이름> 사용자의 암호입니다. *를 입력하면 암호를 묻습니다. -q 자동 모드: 화면에 출력을 표시하지 않습니다. {-uc | -uco | -uci} -uc 파이프로부터 입력 또는 파이프로의 출력이 유니코드로 인코딩되도록 지정합니다. -uco 파이프 또는 파일로의 출력이 유니코드로 인코딩되도록 지정합니다. -uci 파이프 또는 파일로부터의 입력이 유니코드로 인코딩되도록 지정합니다.
대략 짐작이 갈 것이다. 기본적인 사용법은 다음과 같다.
dsadd user CN=
이것을 제대로 사용하기 위해서는 dsadd user 뒤에 따라오는 매개별수들을 잘 이해해야 한다. 위의 도움말을 참고하여 이해하도록 하자.
위의 내용을 근거로 윈도우네트웍스사에서 사용할 파일을 생성하고 있다.<그림14-12>
<그림14-12. 엑셀프로그램을 이용한 사용자 계정 생성 파일 준비>
파일을 저장할 때 파일형식을 “텍스트(탭으로 분리)(*.txt)”를 선택하고, 파일이름은 상관없지만 bat 확장자를 가진 배치파일로 저장한다. 파일이름을 큰 따옴표로 묶어서 txt확장자가 붙지 않도록 주의한다. 그 다음 명령프롬프트에서 이 배치파일을 실행했다.
<그림14-13. dsadd를 이용한 사용자 계정 대량생성>
작업이 완료되었다. 결과는?
<그림14-14. dsadd를 이용해서 생성한 사용자 계정>
사용자OU에 19개의 사용자계정이 생성된 것을 확인할 수 있다.
이것은 맨처음 Active Directory를 구축하고서 초기작업에는 유용하지만 인사이동에 따른 지속적인 변경관리를 하기에는 역부족이다. 단순히 사용자 계정만 생성하면 될 것이 아니라 인사이동에 따라 사용자들의 그룹멤버쉽 추가 및 제거, OU의 이동, 입사/퇴사/휴직/복직 등의 인사발령에 따른 계정의 변동 등 사용자/그룹 계정관리를 지속적으로 유지하는 것은 Active Directory의 안정성과 신뢰성을 유지하는데 매우 중요한 작업이다. 이러한 작업을 위해서는 인사시스템과 연동하여 자동으로 AD계정을 관리해 주는 솔루션 [1]도입이 검토되어야 할 것이다. 이러한 이유로 많은 기업들이 Active Directory 인프라 구축의 범위에 인사연동 계정관리시스템 구축까지 포함하고 있다.
[1] 계정(Identity)관리를 위해 국내에 많이 도입되는 솔루션으로는 Microsoft Identity Integration Server (MIIS), 컨설팅업체인 필라넷의 ArtIDM 등이 있다.