Windows 서버의 Administrator 비밀번호 초기화 하기 ( Administrator 패스워드 분실 )

Posted by taeho Tae-Ho
2011.10.25 09:43 운영체제
VMWare로 여러개의 Windows 서버 이미지를 사용하다보면 오랫 동안 사용하지 않던 서버 이미지의 Administrator 패스워드를 잊어버리는 경우가 있다. 이 때 참 난감해진다. 그래서 방법을 찾아 봤다.

역시 스누피님의 블로그가 연결된다. 윈도 운영체제의 대단한 실력자.... 덕분에 비밀번호를 쉽게 초기화(비밀번호 없는 상태)할 수 있었다.

VMWare를 기준으로 다시 한번 재구성해 본다. 다른 부분은 스누피님의 블로그 글과 동일하다. 다만 VMWare에서 윈도 설치 이미지를 마운트하는 법이 추가되어 있다.

먼저 Administrator 패스워드를 잊어버린 VMWare 이미지를 선택하고 오른쪽 하단의 "Edit virtual ..." 메뉴를 클릭한다.


VMWare 설정화면이 표시되면 "CD/DVD..."를 선택하고 부팅가능한 Windows 서버 운영체제의 ISO 파일을 선택한다. 가급적이면 해당 VMWare 이미지를 만든 CD 이미지를 선택하는 것이 좋다.


부팅 가능한 CD/DVD 이미지를 선택한 뒤 "Play ..."를 선택하여 서버를 구동한다.
Play 시키면 아래와 같이 가상 머신이 초기화 되면서 부팅을 시작하는데 만약 CD/DVD 부팅 프롬프트가 보이지 않으면 "F2" 키를 눌러 바이오스로 들어가서 부트 디바이스 순서를 바꾸어 주어야 한다.

CD/DVD 부트 여부를 묻는 프롬프트가 보이면 "Enter"키를 눌러 아래와 같이 CD/DVD로 부팅한다. 사실은 VMWare 이미지를 만들 때 사용된 ISO 파일로 부팅하는 것이다.


잠시 부팅 과정을 지켜보면 아래와 같이 최초 윈도 설치 화면이 뜨게 된다. "다음" 버튼을 눌러 넘어간다. Windows XP/7 PE CD나 DVD 이미지로 부팅하였다면 이 화면에서 "Shift + F10" 키를 누르면 CMD 창이 실행되었던 것으로 기억되는데 Windows 2008 설치 이미지의 경우 CMD가 실행되지 않았다. "복구" 모드로 진행하여 CMD 창을 실행하기 위해 "다음" 버튼을 누른다.


설치 화면이 보인다. 하지만 "지금 설치"를 누르면 안된다. 아래쪽의 "컴퓨터 복구"를 클릭하여 복구모드로 진행한다.


복구할 파티션을 선택한다. 그냥 Windows가 설치되어 있는 드라이브를 선택한 뒤 "다음"을 누른다.


복구 작업에 사용할 도구를 선택하는 화면이 표시된다. 여기서 "명령 프롬프트"를 선택한다.


명령프롬프트(CMD) 창이 실행된다. 기본적로 X: 드라이브가 표시된다.

이 단계에서 PC (혹은 노트북이 되겠다)에 USB 드라이브를 꼽는다. USB 드라이브에는 더~~아래에 보이는 recovery.reg 파일이 포함되어 있어야 한다. 파일의 내용은 이 글을 모두 보면 알게 된다. ^^


USB 드라이브가 PC에 인식이 되면 VMWare 하단의 아이콘 중 아래 화면처럼 작은 적색 박스가 표시된 부분의 아이콘을 마우스로 우클릭 한다. 그러면 팝업메뉴 창이 실행되고 "Connect ..." 메뉴가 보인다.  그 메뉴를 클릭한다. (반드시 PC에 USB 메모리가 완전하게 인식된 뒤 실행하라)


VMWare Player가 뭐라~뭐라~ 궁시렁 거린다. 그냥 조용하게 입을 닫아주기 위해 "OK" 버튼을 클릭한다.


잠시 기다리면 VMWare에서 USB 메모리를 정상적으로 게스트OS에 인식시켰음을 알려준다. 인식이 안된다면 VMWare 이미지의 설정에서 USB 장치가 추가되어 있지 않았을 수 있으므로 조용히 Power를 Off 하고 USB 장치를 추가해준 뒤 다시 시도해 본다.


정상적으로 VMWare 이미지에서 USB 메모리를 인식했다면 아래와 같이 D: 혹은 E: 드라이브로 USB 메모리가 인식된다.
그리고 그 안에 Recovery.reg 파일이 보인다.

이 파일이 바로 레지스트리를 수정하여 SAM 파일의 Administrator 계정 비밀번호를 초기화할 오늘의 핵심 내용이다.


Recovery.reg 파일의 내용이다. 아... Hexa Code..... -.- 언제 봐도 머리가 아프다. -.-


Recovery.reg 파일이 준비되었다면 아래와 같이 실행해준다.


정상적으로 실행되었다면 이제 CMD 창을 살포시 닫아주고 "다시 시작" 버튼을 클릭한다.


Administrator 비밀번호 없이 곧바로 로그인 될 것이다. 와우~~~~

이 방법은 Windows xp, vista, 7, 2003, 2008 등 현존하는 대부분의 Windows에서 적용 가능하다고 스누피님께서 말씀하셨다. ^^

Recovery.reg 파일은 여기에는 올리지 않겠다. 대신 스누피님의 블로그에 방문하여 다운로드 받기를 권해드린다.
(http://snoopybox.co.kr/1515)




신고
이 댓글을 비밀 댓글로

VMWare Player에서 NAT 설정하기

Posted by taeho Tae-Ho
2011.09.03 16:07 운영체제

서버 운영체제의 가상화 열풍이 무섭다. 하지만 클러스터와 HA의 개념을 정확하게 구별하지 못하는 사람들이 많듯 가상화라는 용어도 역시나 여기저기 마구~ 붙여지고 있다. 영업적 측면에서 유행을 쫒아야하는 마케팅 때문이긴 하겠지만 엔지니어인 만큼 가상화의 개념도 정확하게 이해하고 있어야 할 듯 싶다.

VMWare Workstation이나 무료로 사용이 가능한 VMWare Player는 S/W 가상화 솔루션이다. 따라서 CPU가 가상화를 지원하지 않는 구형 PC에서도 사용이 가능하다. (물론 요즘 사용되는 PC에 사용되는 CPU는 보다 빠른 속도를 구현할 수 있도록 H/W 측면에서 가상화를 지원하고 있다.)

내가 하는 일이 서버 보안 분야의 일이다 보니 다양한 운영체제를 필수적으로 다루어야 한다. 데스크탑이나 노트북에서 VMWare를 이용하여 구동할 수 있는 가상 OS는 Solaris (x86), Linux (RedHat , CentOS 등), Windows 2003/2008 이다.  모두 Intel x86/x64 기반의 CPU를 지원하는 운영체제다.

VMWare Player에서 NAT 설정 메뉴가 사라졌다.

여기 저기 이동하면서 서로 다른 네트워크 환경에서 VMWare를 이용하면 VMWare 상에서 구동되는 게스트 OS에서 인터넷에 접속하기 위해 NAT 설정이 필수다. 그런데 VMWare Workstation (유료)에서는 지원되는 NAT 설정화면이 무료버전인 VMWare Player 에서는 사라졌다. 당연히 될것으로만 생각했지만 아무리 찾아도 NAT 설정은 없다.

숨어있는 네트워크 설정 도구

VMWare Player의 설치 파일에는 사실 Network 설정 유틸리티가 포함되어 있지만 어쩐 일인지 설치하게 되면 설치되지 않는다. 아마도 일부러 막아 놓은 듯 싶다.( 치사빤스다~~ )

설치 파일에 포함되어 있기 때문에 다음과 같이 /e 옵션을 주어 설치파일을 실행하면 extract 라는 폴더에 모든 파일의 압축이 해제된다.

       4.0 테스트 도중 위의 명령어에 오류가 발견되었습니다.   /e .\extract 와 같이 폴더명을 주어야 합니다.

해제된 폴더에 들어가보면 다음과 같이 VMWare Player가 설치될 때 필요한 셋업 파일들이 모두 보인다. 그중에서 network.cab 파일에 VMWare Network 설정 유틸리티가 포함되어 있다.

이 network.cab 파일을 알집으로 열어보면 다음과 같이 몇개의 파일이 보인다. 이 파일들을 VMWare Player가 설치된 경로에 압축을 해제하고 vmnetcfg.exe를 실행하면 NAT 설정을 할 수 있는 화면이 보이게 된다.

아래 화면과 같이 VMWare Player 설치 폴더에 압축을 해제하고 vmnetcfg.exe를 실행하면 Virtual Network Editor가 실행된다. 아래 화면은 vmnet 8번 가상 이더넷을 NAT용도로 설정한 화면이다.  (VMWare 에서는 항상 8번을 NAT용으로 기본 사용하도록 되어 있다.)

이후의 설정 방법은 이전의 포스트와 동일한 내용이므로 생략한다.

아래의 포스트를 참조하기 바란다.

http://blogger.pe.kr/35



신고
이 댓글을 비밀 댓글로
    • 지나가다
    • 2011.09.24 01:52 신고
    nat설정 있습니다.
    edit virtual machine settings - hardware탭 - network adapter 항목
    • 아...네....
      그 항목은 VMWare에서 생성하고 구동되는 GuestOS를 Host 머신에 접속하는 네트워크 형태를 NAT로 설정하겠다는 것이구요...
      이 포스트에서 설명하는 것은 GuestOS를 NAT로 설정할 때 필요한 Host 머신의 네트워크 설정을 의미하는 것입니다...

      ^^ 요즘... 태클이 많네요~~~
      하지만 태클도 환영합니다~~~
    • zRain
    • 2012.01.06 16:47 신고
    이것 때문에 몇 시간을 삽질했는데, 여기서 해결하고 가네요.. 역시 WMWare player 에 설정이 없는 것이었군요.
    고맙습니다. ^^

[vbscript / ftp] FTP 반복 실행하는 스크립트

Posted by taeho Tae-Ho
2011.08.15 18:51 운영체제

서버보안 S/W의 BMT를 하다보면 서버의 성능을 너무 저하시킨다는 잘못된 정보를 갖고 있는 운영 담당자들을 종종 만날 수 있다. 그중에는 SecureOS를 한번도 직접 사용해보지 않은 분들도 많다. 지인이나 다른 업체의 담당자들이 특정 제품을 사용 중 한두번 장애가 발생하거나 원인을 알 수 없는 서버의 성능 저하로 인해 곤란을 겪고나서 "SecureOS 제품을 올린 서버에 과부하가 걸렸다. 다른 서버는 문제 없는데 그 서버만 문제가 발생했다."는 이야기를 듣고 그런 생각을 갖게 되는 경우가 많은것 같다.

정말 문제는...
원인파악조차 못하고 그냥 SecureOS 제품을 "정지"시켜 놓는다는 점이다. 많은 경우 상황을 "재현"시켜 놓고 여러가지 정보를 분석해보아야 원인을 찾을 수 있는데 "감히~ 문제를 재현" 시켜야 한다는 말을 하지 못하는 경우가 많다. 우리나라 기업의 전산실은 아직 "재발방지를 위해 혹은 원인 파악을 위한 상황 재현"보다는 "무정지 서비스"가 우선이기 때문이다. 그러다 보니 장애가 발생해도 "원인 불명" 혹은 "OO과 OO의 충돌"같은 이해하기 힘든 결과 보고가 올라가는 것이 다반사다. 또 그런 보고를 받아도 "지금" 서비스가 잘되고 있으면 그냥 넘어가는 경우가 많다.

본론으로 돌아가면 ... ^^
BMT를 위해 이따금씩 만들어 사용하는 스크립트다.

1. 반복적으로 정해진 IP로 FTP 접속을 시도한다.
2. 반복시도 횟수 및 IP, 계정, 비밀번호를 입력받는다.
3. 접속한 뒤 작은 크기의 파일을 업로드(put) 한다.
4. FTP 접속을 끊는다.
5. FTP 접속을 시도하는 인터벌을 설정할 수 있다. ( 1/1000 초)

이 스크립트는 vbs 즉 vbscript로 작성되어 있으며 윈도에 내장된 기본 ftp 클라이언트를 사용한다. 
임시로 생성된 스크립트 파일은 수동으로 삭제해주어야 한다. 필요하다면 다운로드/업로드 등 다양한 행위를 추가할 수 있다.

------------------ SCRIPT ------------------
CONST LOCALFTPDIR = "D:\vbscripts"
CONST TARGETFTPDIR = "50.STUDY"
CONST FTPINTERVAL = 100  ' 1/1000 أت ´ـہ§.

DIM intRepeatCount
DIM strFtpServerIp
DIM strUsername
DIM strPassword
DIM i

strFtpServerIp = InputBox ("FTP 서버의 IP주소를 입력하세요")
strUsername = InputBox ("FTP 서버 접속에 사용될 계정이름을 입력해주세요")
strPassword = InputBox ("비밀번호를 입력해주세요")
intRepeatCount = InputBox ("반복시도 횟수를 입력해주세요")

FOR i = 1 to intRepeatCount

 SET fso=createobject("scripting.filesystemobject")
    SET ftpscript=fso.createTextfile(LOCALFTPDIR & "\put" & i & ".txt", true)


 WITH ftpscript
  .writeline "open " & strFtpServerIp
  .writeline strUsername
  .writeline strPassword
  .writeline "lcd " & LOCALFTPDIR
  .writeline "cd " & TARGETFTPDIR
  .writeline "put put" & i & ".txt"
  .writeline "bye"
 end with
 ftpscript.close
NEXT

FOR i = 1 to intRepeatCount

 SET SHL=createobject("wscript.shell")
 SHL.run "ftp -s:" & LOCALFTPDIR & "\put" & i & ".txt", 1, false
 WSCRIPT.sleep FTPINTERVAL
 
NEXT
-----------------------------------------------------------------

신고
이 댓글을 비밀 댓글로

[FTP 서버/파일서버] Windows 7 FTP 서버 인증 및 계정 만들기, 가상 디렉토리 접근 권한 설정하기

Posted by taeho Tae-Ho
2011.08.07 15:28 운영체제

오래전 올렸던 "Windows 7 으로 FTP 서버 만들기" 포스트 (http://blogger.pe.kr/161)를 많은 분들이 찾아주고 있다. 그만큼 개인 파일서버에 대한 요구가 많다는 이야기일 것이다. 그래서 지난번 포스트에 이어 Windows 7의 FTP 서버에 여러 계정을 만들고 계정별로 디렉토리에 대한 접근 권한을 세분화하는 방법을 설명해 볼까 한다.

처음에는 Windows 7 자체의 FTP서버에서 계정을 만들고 디렉토리 별로 접근권한을 세분화하는 방법을 찾지 못해 베리즈 웹쉐어, HTTP File Server, Serv-U FTP 서버 등 몇몇 다른 솔루션을 찾아봤지만 썩 만족할만한 수준의 기능은 얻지 못했다. 하나가 되면 하나가 안되는 등 높은 수준(?)의 요구사항을 충족해줄 만한 제품은 없었다.

그렇다면... 그냥 Windows 7의 기본 FTP 서버를 이용하는 것이 최선일지도 모른다는 생각에 Windows 7 자체에서 해결해보기로 하자.

먼저 Windows 7의 FTP를 설치하는 것은 앞의 포스트 "Windows 7으로 FTP 서버 만들기 (http://blogger.pe.kr/161) 를 참고하라.

Windows 7의 FTP 서버를 설치했다면 다음의 순서대로 따라해보자.

1. IIS/FTP관련 인증 모듈 설치

"제어판"에서 "프로그램제거"를 실행하고 "Windows 기능 사용/사용안함"을 실행합니다.
그리고 아래와 같이 보안 기능의 두가지를 추가로 체크해서 기능을 활성화 시킵니다.



2. IIS/FTP에서만 사용할 수 있는 계정 추가하기

윈도7과 윈도2003 이상의 서버에서는 사용자 계정을 많이 생성할 수 있는데 일반적으로 잘 사용하지 않는 이유중의 하나가 웹과 FTP 에서만 사용하면 되는데 경우에 따라서는 그 계정으로 서버에 직접 로그인할 수 있다고 생각하기 때문입니다.

이 문제를 해결하기 위해서는 윈도에 계정을 만들 때 사용자의 그룹을 IIS_IUSRS 로 지정하면 됩니다. 윈도 7의 경우 IIS_IUSRS 그룹으로 지정하면 제어판의 계정관리와 PC를 리부팅 후 처음 로그인할 때 새로 만든 계정은 로컬로그인 권한이 없기 때문에 아예 보이지 않게 됩니다.

계정을 만들기 위해 도스창을 실행하고 control userpasswords2 명령을 실행합니다.
그리고 실행되는 창에서 "사용자 이름과 암호를 입력해야~" 항목에 체크를 해줍니다.


다음으로 계정을 추가하기 위해 "추가" 버튼을 누르고 표시되는 창에 계정 정보를 다음과 같이 입력합니다.


"다음"을 눌러 패스워드를 입력합니다.


"다음" 버튼을 눌러 생성할 계정의 그룹을 "IIS_IUSRS"로 입력합니다.


그룹설정이 되면 "마침" 버튼을 눌러 계정생성을 완료합니다. 다음과 같이 생성된 계정이 보입니다.
아래의 경우 IIS 웹서버 및 FTP서버에서 사용자 인증에 사용될 계정이 3개가 생성되어 있습니다.



이쯤에서 한번 눌러주심이.. ^^



3. FTP 서버 접근 시 ID / Password 인증 설정하기

계정을 생성하고 나면 IIS의 FTP서버에 가상디렉토리를 추가하고 생성한 계정에 대해 접근권한을 부여할 수 있습니다.

먼저 IIS 관리자를 실행하기 위해 "제어판"-"시스템 및 보안"-"관리도구"에 들어가서 IIS(인터넷 정보 서비스) 관리자"를 실행합니다.


다음과 같이 IIS에 FTP사이트를 생성합니다.
그리고 이 FTP서버에 익명사용자가 접근하지 못하도록 하기 위해 왼쪽 창에서 FTP 서버를 선택하고 가운데 창에 보이는 "FTP 권한 부여 규칙" 아이콘을 클릭합니다.
(나중에 가상디렉터리를 생성하고 디렉터리 별로 접근권한을 부여할 때는 오른쪽 하단의 "가상 디렉터리 보기"를 클릭하고 들어갑니다.) 


"FTP 권한 부여 규칙"은 왼쪽 창의 FTP서버와 하위의 가상디렉터리를 선택하면 가운데 창에 보이는 아이콘들 중 하나입니다. 사이트의 FTP 서버를 선택하고 "FTP 권한 부여 규칙"을 클릭하면 아래와 같이 해당 FTP 사이트에 대한 사용자들에 대한 접근 권한을 설정할 수 있습니다.

 

 

위의 화면처럼 "모드:허용, 사용자:모든사용자, 사용권한:읽기" 로 설정하면 이 FTP 서버의 / (root 디렉터리)에 접근하기 위해서는 계정을 갖고 있어야하며 로그인(인증)을 거쳐야만 합니다.

이 접근 규칙을 선택하고 오른쪽 창의 "편집"을 누르면 다음과 같이 권한을 변경할 수 있는 창이 실행됩니다.


위의 화면에서 "모든 사용자"와 "모든 익명 사용자는 다릅니다. 모든 사용자는 "FTP서버에 계정을 갖고 있는 사용자 모두"를  의미하고 모든 익명사용자는 FTP에서 말하는 "anonymous(익명,로그인 하지 않고 접근하는 모든 사용자)"를  의미합니다.

즉 "모든 사용자"를 선택하면 ftp://IPAddress 로 접근할 때 최상위 Root 디렉터리 목록을 보여주기 전에 사용자 인증 창을 보여주고 ID와 패스워드를 입력할 것을 요구한 뒤 정상적으로 인증되어야만 디렉토리 목록을 보여줍니다.

즉 모든 사용자에게 ID와 패스워드를 요구하고자 한다면 위와 같이 FTP 권한 부여 규칙을 적용하면 됩니다.
위의 화면과 같이 권한 부여 규칙을 만든 뒤 웹 브라우저에서 ftp://Ipaddress 와 같이 접근하면 아래처럼 로그인 창이 먼저 실행됩니다.


4. 가상디렉터리에 특정 계정만 읽을 수 있도록 접근 권한 규칙 적용하기


앞에서 적용한 정책은 FTP 사이트에 대한 접근 시 ID/Password 인증을 거치도록 설정한 것이죠. 다음은 로그인 한 뒤 특정 디렉터리에 대한 접근 권한을 설정할 필요가 있습니다. 특정 가상디렉터리에 특정 계정만 접근할 수 있도록 설정하고자 한다면 아래와 같이 가상디렉터리를 선택한 화면에서 "FTP 접근 권한 규칙"을 클릭합니다.


가상 디렉터리를 선택하고 "FTP 권한 부여 규칙"을 클릭하면 다음과 같이 창이 실행됩니다.


위의 화면은 taeho 라는 계정에게만 읽기 /쓰기 권한을 부여하고 다른 계정은 접근하지 못하도록 설정한 규칙입니다. 위와 같이 특별한 계정에게만 읽기/쓰기 권한을 부여하고자 한다면 다른 규칙은 모두 삭제하고 위와 같이 규칙을 설정하면 됩니다.

규칙을 추가하기 위해서는 오른쪽 창의 "허용 규칙 추가"를 클릭하면 됩니다.


이 창에서 "지정한 사용자"에 앞에서 만든 계정의 ID를 입력하면 됩니다.  그리고 사용 권한에 읽기와 쓰기를 모두 체크하면 다운로드 및 업로드 권한을 모두 갖게 됩니다.

지금까지 Windows 7의 내장 IIS의 FTP서버와 가상디렉터리에 대한 사용자 인증 및 권한 제한 방법에 대해 살펴보았습니다.

주요 과정은 다음과 같습니다.

1. Windows 7에 IIS 서버와 인증모듈을 설치 한 뒤
2. IIS_IUSR 그룹에 웹서비스 및 FTP 서비스를 통해서만 사용이 가능한 계정을 생성하고
3. IIS 관리자 창에서 FTP서버와 특정 디렉터리에 "FTP 접근 권한 규칙"을 생성

지금까지 전용 웹하드 장비를 구매하지 않고 오래된 PC나 저사양의 PC를 이용해 자료를 저장하고 외부에서 다운로드 하거나 다른 사람들에게 일부 자료를 공유할 수 있도록 도와주는 Windows 7의 FTP 서버 사용법에 대해 살펴봤습니다.

즐거운 인터넷 서핑이 되길~~~~

 
 


신고
이 댓글을 비밀 댓글로
    • 떠든사람
    • 2011.08.23 20:34 신고
    좋은 정보 감사합니다. FTP 구축이 필요했는데.. PC로 가볍게 할 수 있겠네요~~
    • 흐름결
    • 2011.09.02 13:10 신고
    감사합니다!! 도움이 되었어요! ^^

Windows 7이 설치된 PC로 FTP 서버 만들기

Posted by taeho Tae-Ho
2011.07.11 22:57 운영체제

예전에는 크랙이나 기타 불법 시리얼을 이용해서 FTP서버로 활용할 수 있는 S/W들이 꽤 많았다. 그중에서도 ServU FTP 서버는 정말 다양하고도 훌륭한 기능들을 많이 갖고 있다. 지금은 10 버전 이상까지 버전업그레이드가 되어 있을 정도다.

Serv-U 9 버전의 크랙을 구해 적용해 봤지만 MS 처럼 온라인으로 정품여부를 체크하는 것 같다. Serial 발생기로 일련번호를 만들어 넣어도 몇일 지나 확인해보면 Trial 이라고 바뀌어 있고 한달이 지나면 라이센스가 만료되어 더 이상 사용할 수 없다.

그래서...
추가 비용이 발생하지 않는 Windows7에 추가로 설치 가능한 IIS의 FTP 기능을 적용하기로 했다.

Windows에 옵션으로 설치 가능한 FTP서버는 계정관리나 권한 관리가 조금 불편하다. 계정을 추가하기 위해서는 Windows7에 새로운 계정을 만들어야 하고 계정별 홈디렉토리를 벗어나지 못하게 하는 등의 편의 기능이 없다.

폴더마다 접근권한을 부여하여야 하는 불편함을 감수해야 한다. 그래도 어쩌겠나... 별도의 비용을 들일 돈이 없는 가난한 월급쟁이가 FTP서버가 필요하다고 덜컥... 거금을 들여 별도의 S/W를 살 수는 없으니.. -.-
그럼 잠자코... FTP서버를 설치 하자.




추천해주실거죠??

먼저 Windows7의 제어판으로 들어가 "프로그램 제거" 아이콘을 누른다.


제어판이 표시되면 왼쪽의 "Windows 기능 사용/사용 안함" 을 클릭한다. 그러면 앞의 화면에서 처럼 윈도의 여러가지 숨은 기능들이 표시된다. 맨~아래 쪽으로 스크롤해 내려가면 "인터넷 정보 서비스"가 보인다.  여기에 Windows XP/7에서 사용할 수 있는 IIS 웹서버와 FTP서버를 설치할 수 있는 기능이 있다.

앞의 화면처럼 FTP 서버를 선택하고 "확인"을 누른다.

경우에 따라 CD/DVD를 넣으라는 메시지가 나온다. CD/DVD를 넣지 않고 FTP서버를 설치할 방법은 없으니 시키는 대로 넣어준다. 그러면 자동으로 설치가 진행된다.

설치가 완료되면 기본 설정을 해주어야 한다. 기본 설정은 관리자 권한이 필요하다. 
 

위의 화면처럼 "컴퓨터" (xp의 경우 "내 컴퓨터" 인것으로 기억)에서 마우스를 우클릭하면 나오는 메뉴의 "관리" 를 선택한다.
그러면 아래 화면처럼 컴퓨터 관리 화면이 실행된다. 맨 아래쪽에 "서비스 및 응용프로그램" 트리에 IIS웹서버와 FTP서버의 설정을 수행할 수 있는 메뉴가 있다.


앞의 화면을 보면 FTP사이트를 추가하고 기본 설정 및 포트, IP 설정을 할 수 있는 화면을 표시해 두었다.
Windows7에 기본적으로 탑재가능한 FTP서버에도 다른 디스크의 폴더를 FTP ROOT에 가상 디렉토리로 연결하는 기능 그리고 Windows의 계정에 따라 폴더의 접근 권한을 제한할 수 있는 기능 등 다양한 기능을 갖고 있다.

다만...설정이 조금 불편할 뿐이다.
성능?? 당연히 Windows와 최적화 되어 있으므로 안정적이고 빠르다.

FTP계정관리 및 폴더별 권한설정 포스트 보기

신고
이 댓글을 비밀 댓글로
    • 떠든사람
    • 2011.08.23 20:35 신고
    포스트 두개 덕분에 윈도7 만으로 FTP 구축이 되겠네요...감사합니다~~~
    • 김창회
    • 2012.09.04 10:11 신고
    CD가 왜 필요한가요?
    처음에 프로그램 제거에 들어가서 CD/DVD를 넣으라는 말이 있길래,,,,
    • Windows7을 디폴트로 설치하면 FTP서버 모듈이 설치되지 않기 때문에 CD/DVD가 필요합니다.
    • 이석범
    • 2013.07.18 17:29 신고
    ftp 웹 페이지에서 디렉토리 내에 있는 한글파일 다운로드 받을 때, 한글이 깨져서 다운되는데요~ 어떻게 해야할까요
    • ftp 서버에 알FTP, DaFTP 등 전용 클라이언트 툴로 접속할 때도 클라이언트의 캐릭터셋 설정에 따라 한글이 깨져보이기도 합니다. 당연히 웹브라우저를 통해 FTP에 접속했을 때도 서버측과 클라이언트 측의 캐릭터셋과 인코딩 방법에 따라 파일명이 깨져서 다운로드 되기도 합니다. 클라이언트인 웹브라우저와 서버의 캐릭터셋을 맞춰주어야 합니다.

부팅가능한 Windows 7 설치 USB 메모리 만들기

Posted by taeho Tae-Ho
2011.03.18 15:11 운영체제

불상사(?)가 발생해 Averatec ES-200 노트북의 돌아가셨습니다. T.T  본체의 LCD를 감싸고 있는 플래스틱 하우징도 휘었는지 덮개도 잘 덮히지 않는다. T.T 수리를 맏길 시간도 넉넉치 않아 눈물을 머금고 새 노트북을 영입했습니다.

비싼건 두눈뜨고 못사는 성격상....
무겁고 큰건 너무도 싫고...
ES-200의 조루(?)도 너무 꼴보고 싫어서...

AC 전원없이도 롱~타임을 뛰어 나를 즐겁게(?)해줄 녀석으로 알아봤습니다.
삼성은 왠지 정이 안가서 탈락... 엘쥐는 디자인이나 가격이나 내 마음을 흡족하게 해주지 못해 탈락...
결국 Acer의 Aspire Timeline 1810Tz 으로 낙점했습니다.

1.4kg... 8시간의 Long Time 배터리... 높은 해상도... HDMI포트...
풀사이즈키보드에 커다란 Shift키... 예쁜 색상(사파이어블루...)




각설하고...

근데 이넘 난감하게도... Windows 7 64bit가 깔려있습니다. 초기 모델이 Windows Vista 였던것 보다는 훨 좋지만 아직 호환성이 많이 떨어져 ActiveX에서 많은 문제가 있기때문에 그냥 쓸 수 없고 32bit를 깔아야했죠. 하지만 이넘은 CD롬이 옵션입니다. 고로 외장으로 따로 사서 써야합니다.

그래서 USB 메모리를 부팅가능하게 해서 Windows7 32bit를 넣어 설치하기로 했습니다. 당연히 놀고 있는 아주 오래된 4G 메모렛 USB 메모리를 출동시켰습니다. 뚜껑도 어디서 분실했는지 없습니다.


예전에 보기론 USB를 부팅할 수 있도록 해주는 유틸리티를 준비하고 부팅이미지(ISO파일)와 윈도7 DVD가 필요하다고 알고 있었습니다. 하지만 새로운 방법... 도스창에서 diskpart 명령을 이용해 부팅가능한 USB 메모리를 만들 수 있다는 소식에 무식한 방법을 좋아하는 전... 도스창에서 하는 방법을 따라해보기로 했습니다.





여기서부턴.... 반말..들어갑니다.. ^^

1. 먼저 USB 메모리를 PC혹은 노트북에 꼽는다.
2. 윈도7 DVD의 ISO 파일을 구해 알집과 같은 압축유틸리티로 USB 메모리에 압축해제할 준비를 한다.

3. 도스창을 연다. (윈도 시작메뉴에서 보조프로그램-명령프롬프트 를 실행)
4. 다음의 굵은 글씨의 절차대로 실행한다.

C:\> diskpart  [엔터]

해설 -  diskpart>  와 같이 프롬프트가 바뀐다.

diskpart > list disk [엔터]

해설 - 현재 컴퓨터에 장착되어 있는 하드디스크, USB메모리, 외장디스크의 물리적인 디스크 목록을 보여준다. 그중에서 크기(용량)를 기준으로 부팅가능하게 만들고자 USB포트에 꼽은 USB 메모리가 디스크 몇번인지 찾는다. 만약 1번이라고 하면 아래와 같이 1번 디스크를 선택한다.

diskpart > select disk 1  [엔터]

해설 -  1번 디스크를 선택하였다는 메시지가 나온다. 한번 초기화를 해준다.

diskpart > clean  [엔터]

해설 - USB의 내용이 모두 지워지고 초기화가 된다.
         이제 다음과 같이 주파티션을 하나 만들어준다.

diskpart > create partition primary  [엔터]

해설 - Windows 7의 설치파일을 부어넣을 파티션을 생성한 것이다.
         파티션을 만들었으면 부팅이 가능하도록 활성화(Actavation) 해 줍니다.

diskpart > active [엔터]

해설 - 활성화 되었다고 나오면 한번 포맷을 해줍니다. 빠른 포맷으로 해도 무관하다.

diskpart > format fs=ntfs quick [엔터]

해설 - 포맷이 완료되면 diskpart 에서 필요한 작업은 모두 완료되었다.
          이제 다음의 명령으로 diskpart에서 빠져나간다.

diskpart > exit [엔터]

이제 Windows 7 이미지파일(ISO)을 알집 등을 이용해서 USB 메모리에 압축해제 합니다.
만들고 나면 다음 그림과 같이 부팅가능한 Windows 7 설치 USB 디스크가 됩니다.

아래에 보이는 CDROM 드라이브는 UltraISO로 만든 가상 CD롬입니다.

이제 USB 메모리를 이용해 Windows 7을 설치하는 일만 남은것 같지만 ^^ 한가지 더 확인해주어야 할 것이 있습니다. 바로 PC 혹은 노트북의 바이오스 설정입니다.

컴을 리부팅하면서 F2, F10, Del 등 각 컴에 맞는 방법으로 바이오스에 들어가 부팅 순서를 정하는 곳을 찾아갑니다. 그리고 부팅 순서를 USB HDD를 가장위로 올립니다. 기기에 따라 USB 혹은 USBCD만 있는 경우도 있는 것 같은데.... USB가 붙어있는 항목을 위로 올리고 HDD와 CDROM을 USB 아래로 내리면 됩니다. 순서를 정하였으면 저장하고 빠져나가 USB 메모리로 부팅하고 윈도7을 설치하면 됩니다.

신고
이 댓글을 비밀 댓글로

vsftp의 다양한 설정 방법

Posted by taeho Tae-Ho
2010.12.13 22:41 운영체제
리눅스(CentOS 또는 RedHat)에서 기본적으로 제공되는 FTP서비스는 gssftp 혹은 vsftp이다. (2010년 현재) 이중에서 vsftp는 정말 다양한 설정방법을 제공한다.


passive 모드 사용 시 데이터포트의 범위 지정이라든가 각 계정별 혹은 전체 계정에 대해 chroot 제한을 걸어 계정의 홈디렉토리 이외의 디렉토리로 벗어나지 못하게 하는 설정도 가능하며 시스템의 기본계정들과 root에 대해 로그인하지 못하도록 하는 기능도 제공한다.

자... 강력하면서도 기본적으로 제공되는 vsftp 서비스 설정에 대해 알아보자.

***********************************************************
* FTP 서버 (vsftpd)
***********************************************************

* vsftpd 관련 파일들
/etc/xinetd.d/vsftpd  xinetd 환경에서 서비스하기 위한 vsftpd의 xinetd 설정파일
/etc/vsftpd/vsftpd.conf  vsftpd의 주된 설정파일.
/usr/sbin/vsftpd  vsftpd의 데몬파일.
/etc/initd./vsftpd  vsftpd 시작/종료/재시작 스크립트.
/etc/pam.d/vsftpd  vsftpd의 PAM설정
/var/log/vsftpd.log  vsftpd의 로그파일
/etc/vsftpd/user_list  ftp접속을 제한할 사용자 리스트
/etc/vsftpd/ftpusers  PAM에서 사용하는 ftp접속제한자 리트스파일. 이 파일에 등록된 사용자들은 ftp접속을 할 수 없다.

* 계정별 vsftpd 접속제한 파일
1. /etc/vsftpd/user_list
   vsftpd에서 기본으로 사용하는 계정별 접속제어 파일은 /etc/vsftpd/user_list(or /etc/vsftpd.user_list)파일이다.
   이 파일에 등록된 사용자들은 ftp접속을 거부하게 된다.
   이 파일에 등록할 때에는 다으 3가지 룰을 지켜주면 된다.
   - 가능한 시스템 계정들은 모두 등록한다.
   - 한 행에 한 계정씩만 등록한다.
   - /etc/vfstpd/vsftpd.conf파일(or /etc/vsftpd.conf)에서
     "userlist_deny=NO"으로 설정되었을 경우에 여기에 등록한 사용자들은 접속을 허용하는 사용자들이며
     "userlist_deny=YES"로 설정하였을 경우에는 접속을 거부하는 사용자리스트가 된다.
     YES가 기본이므로 기본설정을 변경하지 않는다면 이 파일은 접속거부자리스트파일이 된다.
2. /etc/vsftpd/ftpusers
   다음은 PAM의 VSFTPD설정파일로서 /etc/vsftpd/ftpusers파일에 등록된 사용자들은 접속을 거부하겠다는 의미의 설정파일이다.
   즉, /etc/vsftpd/ftpusers파일은 PAM에서 설정하여 사용하고 있는 ftp접속거부자 이스트파일이다.
#cat /etc/pam.d/vsftpd
#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth

* /etc/vsftpd/vsftpd.conf 설정옵션
- anonymous_enable=YES (default YES)
  익명(anonymous)접속을 허용할 것인(YES) 허용하지 않을 것인가(NO)를 결정한다.
- anon_root=/var/ftp
  익명(anonymous)접속시 루트디렉토리를 지정한다.
- local_enable=YES (default YES)
  로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정한다.
  YES로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것이다.
- write_enable=YES (default YES)
  이 설정은 ftp전용명령어 중에 write명령어를 허용할 것인가를 결정하는 것이다.
  허용하려면 YES, 허용하지 않으려면 NO를 설정한다.
- local_umas=022 (default 022)
  로컬계정 사용자들의 umask값을 설정한다.
- anon_upload_enable=YES (default NO)
  익명(anonymous)계정 사용자에게 파일 어로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정한다.
  가능한 익명계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 좋다.
- anon_mkdir_write_enable=YES (default NO)
  익명(anonymous)계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자이다.
  가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 좋다.
- ftpd_banner=Welcome to blah FTP service.
  ftp서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하면 된다.
- dirmessage_enable=YES
  ftp접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 안을 것인가(NO)를 설정하다.
- message_file=.message
  ftp접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한다.
- xferlog_enable=YES
  ftp접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남기지 않을 것인가(NO)를 설정한다.
- xferlog_file=/var/log/vsftpd.log
  ftp로그파일의 위치를 결정한다.
- xferlog_std_format=YES
  로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정한다.
- connect_from_port_20=YES
  ftp서비스는 깁ㄴ적으로 21번 포트와 20번 포트를 사용한다.
  ftp 접속돠 명령어에 사용되는 포트는 21ㅓㄴ이며 실제 데이터전송에 사용되는 기본포트는 20번이다.
  이 때 20번 포트의 데이터전송 연결을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 설정한다.
- session_support=YES
  이 설정이 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp에 ftp접속관련기록을 남기게 된다.
  last라는 명령어는 각 사용자들의 접속기록을 wtmp파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last명령어로 ftp접속기록을 확인할 수 있다.
- idle_session_timeout=600
  ftp연결에서 idle타임에 대한 타임아웃값을 설정한다.
- data_connection_timeout=120
  데이터 전송시 적용되는 타임아웃값을 설정한다.
- anon_max_rate=0
  local_max_rate=0
  trans_chunk_size=0
  ftp서비스의 전송속도를 제한하는 설정이다.
  초당 byte수를 지정할 수 있으며 제한없이 허용하려면 0으로 설정한다.
  이 설정은 vsftpd가 독립뎀ㄴ(standalone)모드로 서비스될 때에만 적용되는 것이다.
- max_clients=30
  max_per_ip=3
  이 설정은 동시 ftp접속자수를 제한하는 설정이다.
  max_clients는 ftp접속을 최대 30명까지만 허용하는 설정이다.
  max_per_ip는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정이다.
- ascii_upload_enable=YES
  ascii_download_enable=YES
  기본적으로 ASCII모드로 업로드/다운로드하는 것은 제한되어 있다.
  이 설정으로 ASCII모드로의 업로드/다운로드를 허용하도록 설정할 수 있다.
- deny_email_enable=YES
  banned_email_file=/etc/vsftpd/banned_emails
  익명접속시에 기본적으로 사용되는 계정명을 anonymous이며 패스워드는 email형식으로 입력하면 된다.
  이 때 패스워드로 인정하지 않을 즉, 패스워드로 사용하지 못하도록 할 email 주소를 사용하도록 하는 지시자이다.
  즉, "deny_email_enable=YES"로 설정하시고 "banned_email_file=/etc/vsftpd/banned_emails"로 설정되어 있다면
  패스워드로 허용하지 않을 email 주소를 /etc/vsftpd/banned_emails 파일에 넣어두면 된다.
  그러면 이 파일에 등록된 email주소는 패스워드로 인정하지 않는다.
- chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list
  전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정이다.
  먼저 "chroot_list_enable=YES"로 설정하고 /etc/vsftpd/chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록하면 된다.
  즉, /etc/vsftpd/chroot_list 파일에 등록된 사용자들에 한하여 chroot기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한된다.
- chroot_local_user=YES
  특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토리 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정한다.
  만약 "chroot_list_enable=YES" 이고 "chroot_local_user=YES"이면 /etc/vsftpd/chroot_list파일에 등록된 사용자들만 chroot()적용을 받지 않게 된다.
  즉, 이 두 설정이 모두 YES로 되어있다면 /etc/vsftpd/chroot_list에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용된다.
- ls_recurse_enable=YES
  ftp접속에서는 ls 사용시 -R옵션을 허용하지 않는 것이 기본 설정이다.
  -R옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것이다.
  이 지시자의 값이 YES로 되어 있다면 ftp접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 하넌에 볼 수 있는 -R옵션을 허용하게 된다.
- pam_service_name=vsftpd
  vsftp에서 PAM설정파일명으로 사용할 파일명을 지정한다.
- listen=YES
  listen_port=21
  만약 vsftpd를 xinetd모드가 아닌 독립데몬(standalone)으로 서비스하려면 위의 listen지시자를 YES로 설정하고 listen_port에 서비스할 포트번호(기본 21번)를 지정하면 된다.

* ftp 전용명령어 요약
ascii : 전송모드를 ASCII모드로 설정한다.
binary : 전송모드를 BINARY로 설정한다.
bell : 명령어 완료시에 벨소리를 나게한다.
bye : ftp접속을 종료하고 빠져나간다.
cd : remote시스템의 디렉토리를 변경한다.
cdup : remote시스템에서 하단계 사우이디렉토리로 이동한다.
chmod : remote시스테의 파일퍼미션을 변경한다.
close : ftp저속을 종료한다.
delete : remote시스템의 파일을 삭제한다.
dir : remote시스템의 디렉토리 내용을 출력한다.
disconnect : ftp접속을 종료한다.
exit : ftp접속을 종료하고 빠져나간다.
get : 지정된 파일 하나늘 가져온다.
hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.
help : ftp명령어 도움알을 볼 수 있다.
lcd : local시셈의 디렉토리를 변경한다.
ls : remote시스템의 디렉토리 내용을 출력한다.
mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.
mget : 여러개으 파일을 한꺼번에 가져오려할 때 사용한다.
mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.
open : ftp접속을 시도한다.
prompt : 파일전송시에 확인과정을 거친다. on/off 토글
put : 하나의 파일을 remote시스템에 올린다.
pwd : remote시스템의 현재 작업디렉토리를 표시한다.
quit : ftp접속을 종료하고 빠져나간다.
rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.
rename : remote시스템의 파일명을 바꾼다.
rmdir : remote시스템의 디렉토리를 삭제한다.
size : remote시스템에 있는 파일의 크기를 byte단위로 표시한다.
status : 현재 연결된 ftp세션 모드에 대한 설정을 보여준다.
type : 전송모드를 설정한다.

* ncftp
- ncftp를 이용한 원격서버로의 익명(anonymous) ftp접속하기
# ncftp
NcFTP 3.1.9 (Mar 24, 2005) by Mike Gleason (http://www.NcFTP.com/contact/).
ncftp> open ftp.bora.net
Connecting to ftp.bora.net...                                                                                               
ProFTPD 1.2.7 Server (FTP.Bora.Net) [ftp5]
Logging in...                                                                                                               
Anonymous access granted, restrictions apply.
Logged in to ftp.bora.net.
ncftp / >
# ncftp ftp.bora.net
NcFTP 3.1.9 (Mar 24, 2005) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to ftp.bora.net...                                                                                               
ProFTPD 1.2.7 Server (FTP.Bora.Net) [ftp5]
Logging in...                                                                                                               
Anonymous access granted, restrictions apply.
Logged in to ftp.bora.net.                                                                                                  
ncftp / >
- 원격서버의 계정사용자를 지정하여 저속하기
# ncftp -u dhan ftp.bora.net
- 원격서버의 계정사용자 패스워드 지정하여 자동접속하기
# ncftp -u dhan -p dhan ftp.bora.net
- 특정포트를 지정하여 원격서버 접속하기
# ncftp -u dhan -P 2121 ftp.bora.net
- 원격서버의 특정파일을 로컬서버로 가져오기
ncftp /home/widemail/a > get spas.sql
- 원격서버의 여러개의 파일을 한번에 로컬서버로 가져오기
ncftp /home/widemail/a > mget *.html
- 원격서버의 특정 디렉토리내의 모든 파일을 한번에 로컬서버로 가져오기
ncftp /home/widemail/a > mget *
- 원격서버의 특정 디렉토리내의 모든 파일과 서브디렉토리를 한번에 가져오기
ncftp /home/widemail/a > mget -R www
- 원격서버의 현재 디렉토리내의 모든 파일과 서브디렉토리들을 한번에 가져오기
ncftp /home/widemail/a > mget -R *
- 원격서버내의 특정 파일 내용 확인하기
ncftp /home/widemail/a > cat README
- 원격서버내의 특정 파일 내용을 한 페이지씩 확인하기
ncftp /home/widemail/a > page README
- 로컬서버내의 특정 파일 내용을 한 페이지씩 확인하기
ncftp /home/widemail/a > lpage INSTALL
- 로컬서버의 현재 작업디렉토리 확인하기
ncftp /home/widemail/a > lpwd
- 로컬서버의 현재 작업디렉토리 내에 파일리스트 확인하기
ncftp /home/widemail/a > lls
ncftp /home/widemail/a > lls -l
ncftp /home/widemail/a > lls -al
ncftp /home/widemail/a > lls -alR
- 로컬서버 내에 존재하는 특정파일명 변경하기
ncftp /home/widemail/a > lreanem file1 newfile
- 원격서버내의 특정 파일 삭제하기
ncftp /home/widemail/a > rm list
- 로컬서버내의 특정 파일 삭제하기
ncftp /home/widemail/a > lrm local_list
- 로컬서버내의 특정 파일 퍼미션 변경하기
ncftp /home/widemail/a > lcmod 777 local_list
- ㄹ컬서버내의 특정 디렉토리 삭제하기
ncftp /home/widemail/a > lrmdir local_dir
- 로컬서버내의 새로운 디렉토리 생성하기
ncftp /home/widemail/a > lmkdir local_new_dir
- ncftp에서 특정 도메인 및 호스트정보 확인하기
ncftp /home/widemail/a > lookup ftp.bora.net
ncftp /home/widemail/a > lookup -v ftp.bora.net
- ncftp의 북마크 설정과 사용방법
# ncftp -u widemail -p "12345" localhost
NcFTP 3.1.9 (Mar 24, 2005) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to localhost...                                                                                                  
(vsFTPd 2.0.3)
Logging in...                                                                                                               
Login successful.
Logged in to localhost.                                                                                                     
ncftp /home/widemail > bookmark
Enter a name for this bookmark, or hit enter for "localhost": spas_dev


You logged into this site using a password.
Would you like to save the password with this bookmark?

Save? [no] yes
Bookmark "spas_dev" saved.
ncftp /home/widemail >

[widemail@dev f]$ ncftp spas_dev
NcFTP 3.1.9 (Mar 24, 2005) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to localhost...                                                                                                  
(vsFTPd 2.0.3)
Logging in...                                                                                                               
Login successful.
Logged in to localhost.                                                                                                     
ncftp /home/widemail > bookmarks

* ncftpget
# ncftpget [flags] 원격서버 로컬디렉토리 원격서버디렉토리
# ncftpget -f login.cfg [flags] 로컬디렉토리 원격서버디렉토리
# ncftpget -u 사용자명 -p 패스워드 원격서버 로컬디렉토리 원격서버디렉토리
  -u XX : 사용자명(익명 anonymouss계정을 대신하게됨)
  -p XX : 지정된 사용자의 패스워드
  -P XX : FTP서비스포트 21번 대신 다른 포트번호 사용시 포트번호 지정
  -a    : ASCII 전송모드 지정(지정하지 않으면 BINARY가 기본 전송모드임)
  -t XX : 타임아웃(전송종료)할 초단위 시간지정
  -f XX : 호스트명, 사용자명, 패스워드가 지정된 설정파일
  -A    : 로컬파일에 덮어쓰기하지 않고 추가저장하기
  -F    : PASSIVE 모드 사용(기본값)
  -DD   : 파일 수신 후에 원격서버의 파일 삭제하기
  -R    : 지정한 원격디렉토리의 서브디렉토들까지 통째로 전송하기
- 익명계정으로 원격서버에 접속하여 특정 파일을 가져오기
# ncftpget ftp://ftp.superuser.co.kr/tools/lib.tar.gz
- 익명계정으로 원격서버에 접속하여 지정한 두개 이상의 파일을 한번에 가져오기
# ncftpget ftp.superuser.co.kr . /tools/lib.tar.gz /utility/rsync/rsync-2.5.5.tar.gz
- 익명계정으로 원격서버에 접속하여 지정한 모든 파일을 한번에 가져오기
# ncftpget ftp.superuser.co.kr /tmp/tools/ /tools/*.tar.gz
- 익명계정으로 원격서버에 접속하여 특정 디렉토리의 내용을 통째로 가져오기
# ncftpget -R ftp.superuser.co.kr /root/ /tools/
- 특정계정으로 원격서버에 접속하여 지정한 파일 가져오기
# ncftpget -u dhan ftp.mycom.net . /home/dhan/www/domain.tar.gz
# ncftpget -u dhan ftp.mycom.net /tmp /home/dhan/www/domain.tar.gz
- 특정 계정으로 원격서버에 접속하여 지정한 디렉토리의 모든 내용 통째로 가져오기
# ncftpget -u dhan -R ftp.mycom.net /tmp /home/dhan/www/
- 특정 계정가 패스워드를 지정하여 원격서버에 접속하여 지정한 파일 가져오기
# ncftpget -u dhan -p 12345 ftp.mycom.net . /home/dhan/www/
# ncftpget -u dhan -p 12345 ftp.mycom.net /tmp/ /home/dhan/www/
- 로그인정보파일을 이용하여 원격서버에 접속하여 지정한 파일 가져오기
# cat ncftplogin.cfg
host 192.168.0.100
user dhan
pass 12345
# ncftpget -f ncftplogin.cfg ftp.mycom.net /tmp/ /home/dhan/www/index.html

* ncftpput
# ncftpput [flags] 원격서버 원격서버디렉토리위치 로컬파일
# ncftp -f login.cfg [flags] 서버디렉토리위치 로컬파일
  -u XX : 사용자명(익명 anonymouss계정을 대신하게됨)
  -p XX : 지정된 사용자의 패스워드
  -P XX : FTP서비스포트 21번 대신 다른 포트번호 사용시 포트번호 지정
  -a    : ASCII 전송모드 지정(지정하지 않으면 BINARY가 기본 전송모드임)
  -t XX : 타임아웃(전송종료)할 초단위 시간지정
  -f XX : 호스트명, 사용자명, 패스워드가 지정된 설정파일
  -A    : 로컬파일에 덮어쓰기하지 않고 추가저장하기
  -F    : PASSIVE 모드 사용(기본값)
  -DD   : 파일 수신 후에 원격서버의 파일 삭제하기
  -R    : 지정한 원격디렉토리의 서브디렉토들까지 통째로 전송하기
- 익명계정으로 원격서버에 파일 업로드하기
# ncftpput 192.168.0.00 /pub/ zlib.tar.gz
- 특정계정명으로 원격서버에 파일 업로드하기
# ncftpput -u dhan 192.168.0.00 /home/dhan/ zlib.tar.gz
- 특정 계정명과 패스워드를 지정하여 원격서버에 파일 자동업로드하기
# ncftpput -u dhan -p 12345 192.168.0.00 /home/dhan/ zlib.tar.gz
- 로그인정보파일을 사용하여 원격서버에 자동으로 파일업로드하기
# cat ncftplogin.cfg
host 192.168.0.100
user dhan
pass 12345
# ncftpput -f ncftplogin.cfg /home/dhan/ domain.tar.gz
- 지정한 디렉토리의 모든 파일을 통째로 원격서버에 자동으로 업로드하기
# ncftpput -R -f ncftplogin.cfg /home/dhan/ www

* ncftp배치작업을 위한 ncftpbatch
# ncftpbatch -d
# ncftpbatch -l
# ncftpbatch -D
  -d : 개인 홈디렉토리의 $HOME/.ncftp/spool/디렉토리에 현재 FTP작업들을 백그라운드로 실행한다.
  -l : 계정사용자아ㅢ FTP배치작업큐의 작업리스트를 출력한다.
  -D : -d옵션과 같지만 데몬형식으로 실행되지는 않는다.
- ncftpget을 이용하여 ncftpbatch 작업큐에 백그라운드로 작업하도록 설정
# ncftpget -b ftp.superuser.co.kr . /tools/zlib.tar.gz
- ncftpput을 이용하여 ncftpbatch 작업큐에 백그라운드로 작업하도록 설정
# ncftpput -b 192.168.0.100 /pub/ ./zlib.tar.gz

출처 : http://blog.naver.com/lovelettee01/80045109165

신고
이 댓글을 비밀 댓글로

vi 에디터에서 ^M 문자 한번에 모두 지우기 ( ^M, ^L을 이해하자)

Posted by taeho Tae-Ho
2010.11.30 08:50 운영체제
윈도에서 개발하던 개발자 혹은 SE들이 Unix로 전향(?)한 뒤 고생하는 문제중에 하나가 바로 텍스트파일의 포맷차이로 인한 문제다.  또한 FTP로 파일을 Upload하거나 Download 할 때 Binary 모드와 ASCII 모드의 차이를 이해하지 못하는 엔지니어들이 종종 이 문제로 인해 사고를 치곤한다.

Unix/Linux의 /etc/passwd 파일을 FTP를 통해 윈도PC로 다운로드 받을 때 Binary 모드로 다운로드를 받게 되면 다음과 같이 텍스트파일이 깨져(?) 보인다.


하지만 이것은 파일이 깨진것이 아니다. ASCII 모드로 passwd 파일을 다운로드 받으면 정상적으로 보인다.

이 문제(?)는 윈도와 Unix/Linux의 텍스트파일, 엄밀하게 말하면 ASCII 파일의 포맷차이로 인해 발생하는 문제다. 그 포맷의 차이란 바로 줄바꿈의 표기방법의 차이로 인한 것이다.

Unix의 경우 텍스트편집기인 vi에서 한줄을 모두 입력한 뒤 <ENTER> 키를 누르면 해당 라인의 끝에 ^L (ASCII코드 10번, LineFeed) 하나만 넣어 줄바꿈이 되었음을 표시한다.
하지만 Dos/windows의 경우 ^M^L 두개를 넣어서 줄바꿈을 표시한다. ^M은 아스키코드 13번의 문자로서 캐리지리턴(Carriage Return)을 의미한다. 즉 커서를 1컬럼으로 돌린다는 것을 의미한다.

FTP를 이용해 줄바꿈이 ^L(라인피드)만으로 입력되어 있는 Unix의 텍스트파일을 다운로드 받으면 FTP프로그램이 자동으로 ^L을 ^M^L로 변환하여 저장해 준다. 따라서 노트패드로 해당 파일을 열었을 때 위의 화면과 같이 깨져보이지 않고 정상적으로 줄바꿈이 된것 처럼 보인다. 하지만 실제로는 파일의 크기가 커진다. (행의 수만큼)

따라서 PC에서 수정 후 업로드를 할 때도 반드시 ASCII 모드로 업로드를 해야한다. 만약 바이너리 모드로 업로드를 하게되면 ^M^L이 그대로 업로드 된다. 따라서 Unix의 vi로 해당 파일을 열게되면 다음과 같이 보인다.


윈도에서는 인식되어 줄바꿈 표시의 일부로 인식되던 ^M (캐리지리턴문자)가 줄바꿈으로 인식되지 않고 화면에 표시되어 버린다.

만약 위외 같이 패스워드파일을 쉽게 편집하기 위해 FTP를 이용해 다운로드 받은 뒤 수정하고 바이너리모드로 잘못 업로드하게 되면 대형사고가 발생하게 된다.
아무도 텔넷, FTP, rlogin 등으로 접속하지 못하는 상태가 되어버린다. 왜냐하면 패스워드 파일의 맨 끝의 쉘을 지정하는 부분이 제대로 인식되지 못하여 no shell 메시지가 발생하면서 쉘을 실행하지 못하기 때문이다.

^M 한번에 모두 지우기

이 ^M이 왜 생기는지는 모두 이해했으리라 생각된다. 그렇다면 이 수많은 ^M을 한번에 지우는 방법은 없을까...   당연히 있다.

vi로 해당 파일을 열고 다음의 명령을 수행하면 아주 간단하게 지울 수 있다.


다만 키보드에서 ^M 을 그냥 ^ 키와 M을 입력해서는 인식되지 않는다. ASCII 코드의 13번 문자인 CR은 키보드의 Control키를 누른상태에서 v와 m을 차례대로 입력해야 입력할 수 있다.

%s/^M$//g

이 명령을 기억하라.

참고로 인터넷에 떠다니는 ASCII코드표를 첨부한다.


사족 : 아주 오래전 Ingres라는 데이터베이스 S/W의 기술지원을 할 때 종종 사용했던 팁이었는데 한참을 써먹지 않았더니 기억이 나지를 않아 애를 먹었던 적이 있다. ㅋㅋ





신고
이 댓글을 비밀 댓글로

awk 명령을 활용하여 설정파일의 특정 옵션 변경하는 스크립트

Posted by taeho Tae-Ho
2010.10.12 18:11 운영체제
unix와 linux에서 기본적으로 지원되는 명령어 중에 awk가 있다. 이 awk는 무척이나 강력한 기능을 갖고 있는 파일 핸들링 및 문자열 처리 능력을 갖고 있는데 제목과 같이 설정파일에서 특정 옵션값을 검사하고 조건과 비교하여 변경하여 저장할 때 유용하게 사용할 수 있다.

#!/usr/bin/ksh

# cat 명령으로 login.cfg를 출력하여 awk의 표준입력으로 보낸다.
# 만약 필드의 구분자가 : 라면 awk -F: '{ 와 같이 -F 옵션으로 필드 구분자를 지정할 수 있다.
cat /etc/security/login.cfg | awk '{

# 만약 login.cfg의 각라인에서 첫번째 필드($1)의 값이 auth_type 이면
if ($1 == "auth_type") {
        print "auth_type = PAM_AUTH"
        # auth_type 옵션을 PAM_AUTH로 설정하는 문자열로 바꾸어 출력한다.
} else {
        # 만약 auth_type이 아니면 원본라인을 그대로 출력한다. ($0)
        print $0
}
# 새파일을 login.cfg.new로 저장한다.
# AIX에서 테스트 되었습니다.


}' >> ./login.cfg.new

# 원본 설정파일을 백업한다.
cp /etc/security/login.cfg /etc/security/login.cfg.20101013

# 새파일을 login.cfg로 복사하여 덮어 쓴다.
cp ./login.cfg.new /etc/security/login.cfg
신고
이 댓글을 비밀 댓글로

[AIX 5.3] 특정 계정에서 du 명령 실행 시 "cannot find the current directory" 에러 발생

Posted by taeho Tae-Ho
2010.09.30 18:04 운영체제
AIX 서버에서 특정 계정(이 경우는 oracle 등등~)에서 du 명령을 실행하면 아래와 같은 에러가 발생하면서 정상적으로 실행되지 않는 경우가 있다.

$ du -sk *
du:0653-175 Cannot find the current directory.
$

보통 현재의 계정에서 접근권한이 없는 디렉토리 혹은 파일이 하위에 있더라도 permission 에러가 발생하면서 다른 파일들에 대한 사이즈를 체크하여 그 합계를 보여주는 것이 일반적인 경우인데 이런 경우에는 아예 실행한 이후 전혀 용량을 계산하지 못하고 위와같은 에러 메시지를 출력한다.

이런 경우 /etc/group 파일의 system그룹에 해당 계정을 등록해주면 정상적으로 실행된다. 하지만 이것은 편법일 뿐이다. system 그룹에 등록하여 문제가 해결된다는 것 자체가 비록 화면상에 permission 관련 오류가 표시되지는 않지만 권한 상의 문제라는 추측을 할 수 있다.

이 문제가 발생하는 경우는 현재 위치한 디렉토리의 상위 디렉토리 혹은 .. 디렉토리의 퍼미션이 부족한 경우였다. 하지만 아무리 봐도 아래와 같이 육안 상으로는 현재 디렉토리의 퍼미션에 아무런 문제가 없는 경우가 대부분일 것이다.

drwxr-xr-x  5  oracle  dba  4096  Jun 02 2010  oracle

그럼에도 불구하고 oracle 계정으로 위의 oracle 디렉토리에 들어가서 du -sk * 를 실행하면 "cannot find the current directory" 라는 에러메시지가 발생한다.

그 원인은 바로 이 서버의 기술지원을 담당하셨던 15년 경력의 엔지니어분도 감탄(?)한 mount 명령의 마술(?)에 있었다. 이 경우 시스템의 장애로 인해 운영체제가 있는 디스크를 Restore 하였고 /usr/ssw/oracle 디렉토리를 mkdir 명령을 이용해 생성한 뒤 /usr/ssw/oracle에 마운트를 하였다.
그리고 퍼미션은 drwxr-xr-x (755)가 되어 있었다. 여기서 중요한 것은 바로 mount 하기 이전의 /usr/ssw/oracle 디렉토리의 퍼미션이다. 테스트를 해보니 mount 하기 전에 rwxr-x--- 퍼미션(750)의 디렉토리를 만들고 mount를 시켜보니 rwxr-xr-x로 바뀌어 있었다. 즉 mount 한 상태에서는 mount 하기 이전의 퍼미션을 확인할 방법이 없다. (적어도 난 모른다~~~) mount를 하면 퍼미션이 바뀐다는 것도 처음알게 됐다. (비록 순수OS만은 아니지만 경력 15년인데.. -.-)

이 사실을 근거로 히스토리를 추적해보니... umask가 027 로 설정되어 있었다. 그 상태에서 수작업으로 /usr/ssw를 만들고 /usr/ssw/oracle을 만들었으니 당연히 두 디렉토리는 rwxr-x--- (750) 으로 생성되어 있었다. (umount 후 확인)

그리고 마운트포인트의 퍼미션을 755로 변경하고 다시 mount를 하니 du 명령은 물론 /bin/pwd 명령도 잘 수행되었다.

참고로 pwd는 쉘(ksh,csh)의 내부명령과 /bin/pwd가 서로 다른 명령이다. 그냥 pwd는 잘 실행되나 경로를 지정하여 /bin/pwd를 실행하면 위와 같은 경우 퍼미션 에러가 발생한다.

만약 특정 디렉토리에서 /bin/pwd를 실행했는데 에러가 발생한다면....

^^

아래는 해당 문제에 대한 IBM의 질의 응답이다.
정말 큰 도움이 되었다.


신고
이 댓글을 비밀 댓글로