Posted on 2009/01/14 09:39
Filed Under Study/Cygwin

cygwin에서 제공하는 텔넷 서비스 기동 여부 환경 파일
/etc/inetd.conf

ftp     stream  tcp     nowait  root    /usr/sbin/ftpd ftpd
telnet  stream  tcp     nowait  root    /usr/sbin/telnetd telnetd -h
위와 같이 telnetd에 '-h'옵션을 추가한다.
(-h, --no-hostinfo        do not print host information before login has been completed)

/etc/motd 파일에 banner내용을 작성한다.

결과: host info(CYGWIN어쩌구)는 출력되지 않고, motd내용만 출력된다.
(예)
Looking up host 'localhost'...
Host 'localhost' resolved to 127.0.0.1.
Connecting to 127.0.0.1:23...
Connection established.
Escape character is '^@]'.
login: UltraTwins
Password:
Microsoft (R) Windows V.5.1 (build.2600.xpsp_sp3_gdr.080814-1236:Service Pack3)
 XXX XXX   XX                            XXXXXXX            X                  
  X   X     X      X                     X  X  X                               
  X   X     X      X                        X                                  
  X   X     X     XXXX   XXX XX   XXXX      X    XXX XXX  XXX    XX XX    XXXXX
  X   X     X      X       XX  X      X     X     X   X     X     XX  X  X     X
  X   X     X      X       X      XXXXX     X     X X X     X     X   X   XXX  
  X   X     X      X       X     X    X     X     X X X     X     X   X      XX
  X   X     X      X  X    X     X    X     X      X X      X     X   X  X     X
   XXX    XXXXX     XX   XXXXX    XXXX X   XXX     X X    XXXXX  XXX XXX  XXXXX
                                                         Welcome to My Server :)
2009/01/14 09:39 2009/01/14 09:39
TAG :

Posted on 2006/11/17 12:57
Filed Under Study/Cygwin

경우에 따라 Cygwin을 자신의 시스템에서 완전히 제거해야 할 경우가 있을 수 있다. 이제부터 이미 설치되어 있는 Cygwin을 제거하는 방법에 대해서 알아보겠다.

Cygwin 제거 방법은 매우 쉽지만, 일반적인 Windows 응용 프로그램과는 달리 Cygwin은 별도의 Uninstall 프로그램을 지원하지 않기 때문에 다음과 같이 수동으로 삭제해야 한다.

  1. 프로세스 및 서비스 제거
  2. OpenSSH나 Inetd 와 같은 서비스를 설치한 경우에는 Windows Service에 등록되므로 Cygwin을 제거하기에 앞서 이를 내려 주어야 한다. 서비스를 제거하는 방법은 아주 간단하다. Cygwin상에서 cygrunsrv (cygrunsrv -R <service-name>) 툴을 이용하거나 Windows NT/2000 리소스 킷중 srvinstw.exe 나 instsrv.exe 를 이용할 수 있다.

  3. 파일 허가권 및 소유권 확인
  4. NTFS 파일시스템에서 NTSEC을 사용하고 있다면 Cygwin상의 chmod (cd / ; chmod -R 644) 명령어를 통해 원래대로 돌려야 한다. 즉, 관리자(Administrators)가 모든 권한을 갖도록 설정한다. 이 작업은 Windows 상에서도 가능하나 경험상 불가능한 경우도 있다.

  5. Windows 환경설정(변수) 수정
  6. 위의 경우와 같이 Cygwin에서 특정 서비스를 설치하거나 사용자가 직접 Windows 시스템의 환경설정(변수)를 변경한 경우 Cygwin이 설치되기 이전의 상태로 돌려야 한다.

  7. 설치 디렉토리 삭제
  8. 설치 위치가 "C:\cygwin" 이라면 탐색기와 같은 파일 관리자를 통해 해당 디렉토리를 통채로 지운다. 명령 프롬프트에서는 "rmdir /s /q C:\Cygwin"

  9. 레지스트리 삭제
  10. 레지스트리 편집기(시작→실행→regedit.exe)를 실행시켜 다음 3개의 키(key)를 삭제한다.
    "HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions"
    "HKEY_CURRENT_USER\Software\Cygnus Solutions"
    "HKEY_USERS\.Default\Software\Cygnus Solutions "

    위 2개의 키만 삭제하더라도 별 문제는 없지만 자신의 시스템에서 Cygwin의 흔적을 완전히 제거하고 싶다면 레지스트리 편집기에서 'cygwin'으로 검색하여 검색된 모든 키(key)를 삭제하면 된다.

  11. 바로가기 아이콘 삭제
  12. "C:\Documents and Settings\All Users\시작 메뉴\프로그램\Cygwin"
    "C:\Documents and Settings\All Users\바탕 화면\Cygwin"

2006/11/17 12:57 2006/11/17 12:57
TAG :

Posted on 2006/11/17 12:50
Filed Under Study/Cygwin

Cygwin 에 OpenSSH를 설치하고 sshd를 윈도우 서비스로 등록해서 사용하고 있다.
요즘, 리눅스를 지워버린 상태기 때문에 Cygwin을 사용해서 이런 저런 일 하는 경우가 많다.

참조 문서 : http://pigtail.net/LRP/printsrv/cygwin-sshd.html

1. 일단, Cygwin의 setup.exe 에서 openssh를 선택해서 설치한다.

2. 내컴퓨터->속성->고급->환경변수->시스템 변수에서 CYGWIN=ntsec을 설정한다. "ntsec"은 Cygwin이 Windows의 보안 규칙을 사용해서 파일 등의 접근 권한을 설정함을 의미한다.(참조 : http://pigtail.net/LRP/printsrv/ntsec.html)

3. 윈도우의 각 사용자에게 비밀번호를 지정한다.

4. Cygwin 셸을 실행하고서 ssh-host-config명령을 실행한다. 그리고 모든 질문에 yes 로 대답한다. 마지막에 CYGWIN 옵션을 물을 때는 "ntsec"을 지정한다.

kwon37xi@kwonnam ~
$ ssh-host-config
Generating /etc/ssh_host_key
Generating /etc/ssh_host_rsa_key
Generating /etc/ssh_host_dsa_key
Generating /etc/ssh_config file
Privilege separation is set to yes by default since OpenSSH 3.3.
However, this requires a non-privileged account called 'sshd'.
For more info on privilege separation read /usr/share/doc/openssh/README.privsep.

Should privilege separation be used? (yes/no) yes
Warning: The following function requires administrator privileges!
Should this script create a local user 'sshd' on this machine? (yes/no) yes
Generating /etc/sshd_config file
Added ssh to C:WINDOWSsystem32driversetcservices


Warning: The following functions require administrator privileges!

Do you want to install sshd as service?
(Say "no" if it's already installed as service) (yes/no) yes

Which value should the environment variable CYGWIN have when
sshd starts? It's recommended to set at least "ntsec" to be
able to change user context without password.
Default is "ntsec". CYGWIN=ntsec

The service has been installed under LocalSystem account.
To start the service, call `net start sshd' or `cygrunsrv -S sshd'.

Host configuration finished. Have fun!

5. 제어판의 서비스에서 Cygwin sshd를 끄고 켤 수 있으며, Cygwin 셸에서는 cygrunsrv -S sshd 명령이나, 윈도우 명령창에서 net start sshd으로 마찬가지로 sshd를 켤 수 있다.

6. Putty 등으로 Cygwin sshd 가 실행중인 컴퓨터에 접속할 수 있다.

7. 외부에서 접속이 안될 때는 윈도우의 방화벽을 확인하고, 22포트를 열어준다.

8. 윈도우에 여러명의 사용자가 있을 경우, Cygwin과 동기화를 하려면 Cygwin 셸에서

# 사용자 동기화하기
$ mkpasswd --local > /etc/passwd
$ mkgroup --local > /etc/group
2006/11/17 12:50 2006/11/17 12:50
TAG :

Posted on 2006/11/17 12:43
Filed Under Study/Cygwin

고급 사용자나 개발자의 경우 Dos/Cygwin Prompt를 실행할때 Window 탐색기와 연동되지 않아서 여간 불편한게 아니다. Prompt 띠우고 CD에 ls에....

아래 방법을 사용하면 탐색기에 Menu를 추가해서 쉽게 Prompt를 실행할 수 있다. 탐색기를 통해서 실행되지 않는 경우는 기본 설정한 경로로 실행된다.

Dos Prompt 메뉴 생성 방법

1. 레스스트리 에디터로 아래 항목을 선택한다.
     HKEY_LOCAL_MACHINE/Software/Classes/Folder/Shell
  그리고 "Command Prompt"라고 이름으로 새로운 Key를 생성한다.

2. 생성된 키의 default 문자열에 Command Prompt(&Z)를 입력한다.

3. 새롭게 생성된 키 아래에 다시 "command"라는 Key를 생성하고, default문자열에 아래와 같이 입력한다.
      Cmd.exe /k pushd %L

4. 탐색기에서 Command Prompt라는 메뉴가 생성 되었는지 오른쪽 마우스를 폴더에 클릭해서 확인한다.

5. cmd.exe가 실행이 안될 경우 전체 path를 넣어서 사용한다.


Cygwin Prompt 메뉴 생성 방법

1. 위와 동일한 방법으로 아래 값을 사용하면 된다.
Cygwin Prompt : Default : Cygwin (&B)ash shell
  command : Default :  D:\cygwin\FromMenuCygwin.bat

2. Cygwin Prompt를 시행하기 위해서는 아래의 bat파일와 shell Script를 추가해야 한다.
FromMenuCygwin.bat

@echo off
set START_BASH_DIR=%CD%
d:\cygwin\bin\bash --login -i

.profile

if [ "$START_BASH_DIR" ]
then
  cd $START_BASH_DIR
else
  cd /cygdrive/d/Projects/goblin/win32_tx1000
fi


* 실행화면

사용자 삽입 이미지

2006/11/17 12:43 2006/11/17 12:43
TAG :

Posted on 2006/11/17 09:16
Filed Under Study/Cygwin

cygwin최초 설치 후 한글 지원을 위해(안해도 무관하나 필요할 경우를 위해) 해야할 사항들.
(난 이렇게 안했는데....; 암튼 백업<?>용으로 게시물 불펌 -_-;)
이제 default prompt를 linux형태로 변경하는 Tip만 남았네...

-----------------------------------------------------------------------------------
긴급 한글 패치
전정호 (mahajjh@myscan.org)
-----------------------------------------------------------------------------------

Copyright (c) 2001 Jeon, Jeongho.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

-----------------------------------------------------------------------------------
Cygwin에 포함된 소프트웨어들은 기본적으로 영어권을 대상으로 컴파일되거나 설정되있다. 이 글은 최소한의 노력으로 한글을 사용할 수 있게하는 것이 목적이다. 완전한 한글화는 C 라이브러리 등의 제약으로 상당한 노력이 필요하다.

1. 쉘(bash)에서 한글 쓰기
~/.inputrc 파일을 만들고 다음 내용을 입력한다.
set meta-flag On
set convert-meta Off
set output-meta On


2. ls에서 한글 파일명 제대로 보기
~/.bashrc에 다음 내용을 입력한다.
alias ls='ls -F --color=auto --show-control-char'

옵션을 간단히 설명하면, -F는 파일형식에 따라 파일명 뒤에 (디렉토리) /, (실행파일) *, (심볼릭링크) @를 붙이고, --color=auto는 파일형식에 따라 다른 색으로 표시하고, --show-control-char는 한글을 보이게 한다. ~/.bash_profile 대신 ~/.bashrc에 추가하는 이유는 부모쉘의 alias가 자식쉘에 전달되지 않기때문에 alias 정의가 쉘이 시작할때마다 실행되는 ~/.bashrc에 있어야 한다.

3. vi(vim)에서 화면 안깨지고 한글 쓰기
기본으로 설치된 vi에서 한글을 입력할때마다 화면이 깨지면, vi를 다시 컴파일해야 한다. vim 소스는 http://www.vim.org/에서 받을 수 있다.

./configure에 --enable-multibyte 옵션을 추가해야 한다. (최근 Cygwin의 vim 6.0 버전에서는 다시 컴파일할 필요가 없다. vi --version에서 +multi_byte를 확인할 수 있다.) 설치하면 vim 이름으로만 설치되니, vi로도 링크를 걸어준다. 또 필요하다면 /usr/local/share/vim/vim60/vimrc_example.vim을 /usr/local/share/vim/vimrc나 ~/.vimrc로 복사한후 알맞게 수정한다.

여기서 한 글자가 2바이트인 한글을 올바로 처리하려면, ~/.vimrc에 다음 내용을 추가한다.

set fileencodings=euc-kr
set encoding=cp949

화면 폭보다 긴 줄이 화면에서 제일 아래 줄인 경우 줄 대신 '@' 표시가 나오는데, 이때 한글을 입력하면 화면이 한줄씩 밀리게 된다. 터미널과 관련된 문제로 보이지만 아직 정확한 이유를 찾지못했다. 만약 알고있다면 알려주길 바란다. 대신 편법으로 아래 내용을 ~/.vimrc에 추가하면 한 줄을 넘어서는 부분은 (뒤에 더 있음) >, (앞에 더 있음) <으로 표시된다.

set nowrap
set listchars=extends:>,precedes:<

보통 다음도 추가한다. 첫번째 줄은 Tab 간격을 정하고, 두번째 줄은 시끄러운 삐소리를 없앤다.
set tabstop=4
set visualbell t_vb=

4. 그런데 아직도 vi(vim)에서 한글이 계속 깨져요!
불행히도 Windows command.exe가 제공하는 터미널에 문제가 많아서 한글을 사용할때 불편한 경우가 있다. 구체적으로 행바꿈시 화면에 두칸이 띄어지는 것처럼 보이는 문제, 한글 상태에서 화면정리(Ctrl-L)시 한줄이 밀리는 현상, 긴줄이 화면 밑에 있을때 한줄이 밀리는 현상, 화면이 깨져서 자주 화면정리를 해줘야하는 문제 등이 있다. 아래의 방법으로 부분적으로 해결할 수 있다. 혹시 좋은 방법을 알고 있다면 알려주길 바란다.

TERM 환경변수 수정
TERM 환경변수를 기본값인 cygwin이 아닌 다른 값으로 수정하여 문제를 줄일 수 있다. 그러나 Windows command.exe 문제때문에 영어권에서도 ncurses가 완벽하게 동작하지 않음을 볼 때 큰 기대를 가지진말라. 또 다른 프로그램이 정상적으로 작동하지 않을 수도 있다. ~/.bash_profile에 export TERM=ansi-mini와 같이 다른 터미널 이름을 입력하면 된다.

vi(vim) 설정 수정
(Vim 6.0 버전에서는 적용이 안된다.)

위의 두방법은 원격 호스트에서 vi를 사용한다면 해당 호스트의 설정도 수정해야 한다는 단점이 있다. 편집기 서버 기능(vim 도움말 remote.txt 참조)이나 scp, rcp, ftp로 네트웍에서 파일 읽고쓰기 기능(pi_netrw.txt 참조)이 조금 도움이 될 수 있다.

완전히 다른 터미널을 사용하는 방법도 있다. 사실 이 방법들을 더 추천한다.

vim Win32 GUI 사용
vim Win32 GUI를 따로 설치한후 PATH 환경변수에 추가하여 사용한다. (예, ~/.bash_profile에 export PATH=/cygdrive/c/Vim/vim60:$PATH) gvim이란 파일명으로만 설치되므로 vi나 vim 이름으로 심볼링크를 걸거나 alias를 만들어둔다. (alias 예, ~/.bashrc에 function vim() { gvim $1 & }) vim 도움말 gui_win32.txt에 있는 팁들도 유용하다. 단점은 command.exe를 사용할때와 마찬가지로 원격 호스트에서 편집할때 문제가 있다.

telnetd 사용
cygwin의 inetd를 활성화한후 (팁 모음 참조) 터미널 문제가 없는 원격 터미널 에뮬레이터(teraterm 등)를 사용하여 localhost에 접속하여 Cygwin을 사용한다. 경우에 따라 원격 테미널 에뮬레이터에 맞게 TERM 환경변수를 수정할 필요가 있다. (혹시 접근하는데 문제가 있다면 Windows 2000의 '텔넷 서버 관리'에서 서비스를 중지하라.)

rxvt 사용 (재컴파일 필요)
rxvt는 cygwin에 기본적으로 포함된 터미널이다. 따로 창이 뜨고 X11은 필요없다. 그러나 폰트 등 2바이트 지원을 위해 새로 컴파일해줘야 한다.

X11에서 hanterm 사용
Windows에 X11 display server(Cygwin/XFree86, Xmanager 등)와 hanterm을 설치하고, hanterm에서 vim을 사용한다. 아니면 vim X11 GUI를 사용할 수도 있다.
-----------------------------------------------------------------------------------

(출처 : http://www.it.pe.kr/zboard/zboard.php?id=technical&page=1&sn1=&divpage=1&category=4&sn=off&ss=on&sc=on&select_arrange=reg_date&desc=asc&no=50)
2006/11/17 09:16 2006/11/17 09:16
TAG :

Posted on 2006/11/17 09:06
Filed Under Study/Cygwin

PC가 한 대 뿐이고, 리눅스 환경이 필요한 상황이라면
Cygwin을 설치하여 어느정도 해결할 수 있으나,
서버/클라이언트 프로그래밍과 같은 네트워크 기능이 필요할 때가 생기더군요.
Cygwin창이 불편하기도 하고.....(복사/붙여넣기 등이 아주 힘듬 -_-)

이거저거 찾아보니 cygwin으로도 리눅스에서 제공하는 네트웍 서비스를 대부분 제공하더군요. 물론 윈도우 시스템에 설치되어 있기 때문에 단독으로(?)는 적용되는 것이 아니고,
윈도우 서비스에 하나의 서비스로 등록되어 제어/사용될 수 있도록 되어 있습니다.

이제는 윈도우 시스템인 자신의 PC에서 리눅스 프로그래밍(소켓,IPC등), 컴파일(gcc,cross..), 테스트가 모두 가능하다고 생각됩니다.

< 설정 순서 >
1. Cygwin 설치 (설치시 list를 'default'보다는 'install' 설정 권장, C-drive 보다는 D와
  같은 별도의 driver에 설치 권장: 많은 파일로 인한 시스템 저하 방지)
2. 실행 (만약 prompt모양이 마음에 들지 않는다면, 본인의 home/.bash_profile이나
    /etc/profile 에서 PS1을 익숙한 prompt모양으로 수정:  PS1='[\u@h \W]\$ ')

3. '
iu-config' (enter)
4. '
mkpasswd -l > /etc/passwd' (enter) 이 후에 vi로 /etc/passwd 를 열고
  administrator와 본인의 윈도우 계정(administrator만 쓴다면 그 것만)을 제외하고
  모두 삭제.
5. '
cygrunsrv -I inetd -d "CYGWIN inetd" -p /usr/sbin/inetd -a
  -d -e CYGWIN=ntsec
'
(enter)
6. '
cygrunsrv -S inetd' (enter)
7. vi로 /etc/inetd.conf 파일을 열고 원치 않은 서비스들은 주석 처리.
8. 재부팅


< 설치 후 접속(localhost) 화면 >
사용자 삽입 이미지


(아래 영문 설명을 기준으로 했으며 6번 이후의 내용은 적용 안했습니다.)

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

Step-By-Step Configuration

NOTE: You should follow these instructions while logged in to your workstation as the local Administrator.  It may work if you don't, but it depends on what permissions your account has.

  1. Install cygwin.  When prompted, be sure to install the Admin\cygrunsrv package.
  2. Run iu-config at the Cygwin prompt.
  3. Run "mkpasswd -l > /etc/passwd" at the Cygwin prompt.  This creates the passwd file which is similar in format and function to the Linux passwd file.  Run mkpasswd with no parameters for a usage summary.  You might need to add a -d parameter to grant domain users access.
  4. Edit /etc/passwd and delete everything but the accounts you want to have access permissions.  (In most cases, you'll end up with only two lines in this file -- your account and Administrator.)
  5. Make sure that your home directory (ie, c:\cygwin\home\kc5frp\) exists.

If you're running a recent release of Cygwin, you can complete the configuration by running the following two commands.  (Thanks to Nick Duffek for the suggestion.)

  1. Run the following two commands:
    cygrunsrv -I inetd -d "CYGWIN inetd" -p /usr/sbin/inetd -a -d -e CYGWIN=ntsec
    cygrunsrv -S inetd
  2. Now, you should be able to telnet and ftp into your machine.

Otherwise, here's what you need to do:

  1. Right-click "My Computer" and select Properties.  Click the "Environment Variables" button on the "Advanced" tab.  Add a new system variable...the name is CYGWIN and the value is "ntsec" (no quotes).  This tells Cygwin to use your Windows 2000 security.
  2. Add C:\Cygwin\Bin\ to the PATH system variable.  (Stick it at the end, separated from everything else with a semicolon (";")).
  3. Run "/usr/sbin/inetd.exe --install-as-service".
  4. Reboot!
  5. Now, you should be able to telnet and ftp into your machine.
2006/11/17 09:06 2006/11/17 09:06
TAG :

너의 길을 걸어라. 그리고 사람들로 하여금 말하게 내버려 두어라. (Segui il tuo corso, e lascia dir le gentil) - 단테, '신곡' [연옥]편 제5절 - by Twins

Counter

· Total
: 103784
· Today
: 126
· Yesterday
: 139


Locations of visitors to this page
free counters