독까의 이야기

서버가 한 대면 계정 생성을 수동으로 진행을 하겠는데, 여러 대의 서버에 동일 계정을 생성해야 할 경우 수동으로 하나씩 진행하는게 비효율적이다. 


계정 생성 및 그룹 설정, 암호 사용 기간 제한 해제 까지 가능한 구문 이다. 


내용을 알맞게 수정 후 cmd 에서 그냥 복사 붙이기 하면 된다. 


net user 신규계정명 패스워드 /add /comment:"신규계정에 대한 설명" 

net localgroup administrators 신규계정명 /add

wmic useraccount where name="신규계정명" set passwordexpires=false


자세한 설명은 cmd 에서 net help user 하면 나오는데 그냥 아래거 참고 하면 된다. 



이 명령에 대한 구문:


NET USER

[username [password | *] [options]] [/DOMAIN]

         username {password | *} /ADD [options] [/DOMAIN]

         username [/DELETE] [/DOMAIN]

         username [/TIMES:{times | ALL}]

         username [/ACTIVE: {YES | NO}]


NET USER는 컴퓨터에 사용자 계정을 만들고 기존 사용자 계정을 수정합니다.

스위치 없이 이 명령을 사용하면 컴퓨터의 모든 사용자 계정이 나열됩니다.

사용자 계정 정보는 사용자 계정 데이터베이스에 저장되어 있습니다.


username     추가하거나 삭제, 수정 또는 조회할 사용자 계정의 이름입니다.

             사용자 계정의 이름은 최대 20자까지 

             지정할 수 있습니다.

password     사용자 계정에 대한 암호를 지정하거나 변경합니다.

             암호 길이는 NET ACCOUNTS 명령의 /MINPWLEN 옵션에 설정된 

             최소 길이를 충족해야 합니다. 암호에는 최대 14자까지 

             지정할 수 있습니다.

*            암호에 대한 프롬프트를 생성합니다. 암호 프롬프트에 

             암호를 입력하면 화면에 암호가 표시되지 않습니다.

/DOMAIN      현재 도메인의 도메인 컨트롤러에서 작업을

             수행합니다.

/ADD         사용자 계정을 사용자 계정 데이터베이스에 추가합니다.

/DELETE      사용자 계정 데이터베이스에서 사용자 계정을 제거합니다.


옵션          다음과 같습니다.


   옵션                        설명

      --------------------------------------------------------------------

   /ACTIVE:{YES | NO}         계정을 활성화하거나 비활성화합니다.

                              계정이 활성화되어 있지 않으면 사용자가 서버에

                              액세스할 수 없습니다. 기본값은 YES입니다.

   /COMMENT:"text"            사용자 계정에 대한 설명을

                              입력합니다. 텍스트는 따옴표로

                              묶습니다.

   /COUNTRYCODE:nnn           운영 체제 국가 코드를 사용하여

                              사용자의 도움말 및 오류 메시지에 대해 지정된

                              언어 파일을 구현합니다. 0 값은

                              기본 국가 코드를 나타냅니다.

   /EXPIRES:{date | NEVER}    날짜가 설정되어 있는 경우 계정이 만료됩니다.

                              NEVER는 계정에 시간 제한을 설정하지

                              않습니다. 만료 날짜는 mm/dd/yy(yy)와 같은

                              형식으로 지정합니다. 월에는 숫자, 영어 단어

                              또는 세 자리 약자를 사용할 수 있습니다.

                              연도에는 두 자리 또는 네 자리 숫자를 사용할 수 있습니다.  

                              날짜는 공백 없이 슬래시(/)를 사용하여

                              구분합니다.

   /FULLNAME:"name"           사용자 이름이 아닌 사용자의 전체

                              이름입니다. 이름은 따옴표로

                              묶습니다.

   /HOMEDIR:경로 이름         사용자 홈 디렉터리의 경로를 설정합니다. 

                              이 옵션은 해당 경로가 있어야 사용할 수 있습니다.

   /PASSWORDCHG:{YES | NO}    사용자가 자신의 암호를 변경할 수 있는지 여부를

                              지정합니다. 기본값은 YES입니다.

   /PASSWORDREQ:{YES | NO}    사용자 계정에 암호를 지정해야 하는지 여부를

                              지정합니다. 기본값은 YES입니다.

   /LOGONPASSWORDCHG:{YES|NO} 다음에 로그온할 때 사용자가 암호를

                              변경해야 하는지 여부를 지정합니다. 기본값은 NO입니다.

   /PROFILEPATH[:path]        사용자의 로그온 프로필 경로를 설정합니다.

   /SCRIPTPATH:pathname       사용자의 로그온 스크립트

                              위치입니다.

   /TIMES:{times | ALL}       로그온 시간입니다. TIMES는 

                              요일[-day][,day[-day]],시간[-time][,time[-time]]과 같은 형식으로 나타내며 

                              1시간 단위로 증가하도록 제한됩니다.

                              요일에는 전체 단어나 약어를 사용할 수 있습니다.

                              시간에는 12시간 또는 24시간 표기법을 

                              사용할 수 있습니다.12시간 표기법에서는 am, pm, a.m. 또는

                              p.m.을 사용합니다. ALL은 사용자가 언제든지 로그온할 수 있음을 나타내며 

                              값을 입력하지 않으면 사용자가 로그온할 수 없음을 나타냅니다.

                              요일과 시간은 쉼표로 구분하여 입력하고

                              요일과 시간 항목이 여러 개인 경우에는 

                              세미콜론으로 구분합니다.

   /USERCOMMENT:"텍스트"      관리자가 계정에 대한 사용자 설명을 추가하거나 

                              변경할 수 있습니다. 

   /WORKSTATIONS:{computername[,...] | *}

                              사용자가 네트워크에 로그온할 수 있는 컴퓨터를

                              최대 8개까지 나열합니다. /WORKSTATIONS에 목록을

                              지정하지 않거나 별표(*)를 지정하면 사용자는 어느

                              컴퓨터에서나 네트워크에 로그온할 수 있습니다.


NET HELP 명령 | MORE는 한 번에 한 화면씩 도움말을 표시합니다.



이전에 리눅스 서버에 DNS 서비스를 구축 하였다. 

리눅스를 마스터 DNS 로 이용하는 윈도우 슬레이브 DNS 서비스를 구축하려고 한다. 


우선은 윈도우에 서버에 DNS 서비스를 설치를 한다.


역할 및 기능 추가에서 설치를 진행하면 된다. 



설치가 완료가 되었으면, DNS 관리자를 실행하여 정방향 조회 영역에서 새 영역을 만들어 준다. 

윈도우 DNS 는 슬레이브 이므로, 영역 형식은 반드시 "보조 영역" 으로 선택 후 진행을 한다.



영역 이름은 그냥 gunnm.xyz 로 한다. 



마스터 DNS 서버의 정보를 입력한다. 




마스터에서 정보를 갖고 오지 않았으므로, 영역 로드가 되지 않는다.



마스터에서 전송을 선택하여 영역을 로드 한다. 



정상적으로 로드가 완료 되면 마스터에서 생성 된 DNS 정보가 출력 된다. 




DNS 서버를 이중화하여 구축시, 마스터에서 장애가 발생하여도 슬레이브에서 처리를 하므로 웹사이트 호출에는 이상이 없다. 


IIS + node.js  환경을 구축하였다. 


진행하면서 확인 된 사항들에 대해 기록을 한다. 



node.js 프로그램은 공식 홈페이지에서 다운 받으면 된다. 


https://nodejs.org/ko/



iisnode 모듈은 github 에서 다운 받으면 된다.


https://github.com/tjanczuk/iisnode/wiki/iisnode-releases


두 개 다 default 로 설치를 진행 하면 된다. 



필수로 구축되어 있어야 하는 사항에 대해 확인 한다. 



1.  웹폴더가 등록 된 파티션에 Users 의 "읽기" 권한이 할당되어 있어야 한다. 없을시 아래와 같은 오류 출력 된다. 


Application has thrown an uncaught exception and is terminated:
Error: EPERM: operation not permitted, lstat 'd:\'
    at Object.realpathSync (fs.js:1617:13)
    at toRealPath (module.js:164:13)
    at Function.Module._findPath (module.js:213:22)
    at Function.Module._resolveFilename (module.js:545:25)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Program Files (x86)\iisnode\interceptor.js:210:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)






2.  해당 웹사이트의 web.config 에 구문 추가가 필요하다. 


        <handlers>
            <add name="iisnode" path="*.js" verb="*" modules="iisnode" resourceType="File" />
        </handlers>


만약 구문을 추가 했는데, 아래와 같은 오류가 출력 된다면 구문을 한 줄 더 추가 한다. (x64 버전 설치시에만)


The iisnode module is unable to start the node.exe process. Make sure the node.exe executable is available at the location specified in the system.webServer/iisnode/@nodeProcessCommandLine element of web.config. By default node.exe is expected in one of the directories listed in the PATH environment variable.


 <iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="\program files\nodejs\node.exe"/>



3.  iisnode 폴더가 웹사이트 루트 디렉토리에 생성되어 있어야 한다. 폴더가 없거나 생성 할 수 있는 권한이 없을 시에는 아래와 같은 오류 출력 된다. 


iisnode encountered an error when processing the request.

HRESULT: 0x2
HTTP status: 500
HTTP subStatus: 1002
HTTP reason: Internal Server Error

You are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is 'true'.
In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW traces to further diagnose the problem.
The node.exe process has not written any information to stderr or iisnode was unable to capture this information. Frequent reason is that the iisnode module is unable to create a log file to capture stdout and stderr output from node.exe. Please check that the identity of the IIS application pool running the node.js application has read and write access permissions to the directory on the server where the node.js application is located. Alternatively you can disable logging by setting system.webServer/iisnode/@loggingEnabled element of web.config to 'false'. 


루트 디렉토리에 응용프로그램풀 계정을 쓰기 및 삭제 권한 포함하여 할당하면, 자동으로 iisnode 폴더를 생성하고, 로그 기록 및 삭제 해준다.


또는 iisnode 폴더를 생성하고, 해당 폴더에 응용프로그램풀 계정을 쓰기 및 삭제 권한 포함하여 할당하면 로그 기록 및 삭제 가능하다. 




쓰기 권한이 할당 된 폴더는 반드시 처리기 매핑에서 스크립트 사용 권한을 제거해야 한다. 


보안 침해로 인해 웹쉘 업로드 및 스크립트 실행으로 인해 서버 권한 탈취 가능성을 방지해야 한다.