2013. 1. 18. 20:19

연구실에서 현재 ubuntu 12.10이 설치된 PC와 windows 8 이 설치된 PC를 같이 쓰다 보니, 서로 파일을 주고받을 일이 종종 생긴다. 이걸 전부 메신저나 ftp같은걸로 주고받을려면 상당히 귀찮다. 그래서 windows 홈 디렉토리를 SMB로 공유해서 리눅스에 마운트시키고, 리눅스 홈 디렉토리도 samba로 공유해서 윈도에 네트워크 드라이브로 연결해서 쓰고 있었다.

근데 이게 좀 애매했던 것이, windows 홈 디렉토리를 리눅스에 마운트시키려고 할 때 계정 정보를 파일로 어딘가에 써놔야만 한다는거다. 그것도 plain text로! 그동안은 600으로 퍼미션을 줘서 숨긴다고 숨겼지만 여전히 불안한 것은 사실이었다.

그래서 이번에 뭘 좀 찾아보다 보니 pam_mount란걸 발견해서 잘 쓰고 있었다. 과거형인 이유는, Windows 7 쓰다가 8로 바꾸는 과정에서 계정을 라이브 계정으로 바꿨는데, 이게 라이브 계정이 되면서 계정 자체가 이메일처럼 바뀌면서 리눅스 계정과 호환이 안되는 사태가 발생했기 때문이다 ㅜㅜ

그래도 로컬 계정을 쓴다거나 Windows 7을 쓴다거나 하는 경우는 별 문제가 없으니 일단 팁으로 써본다.

pam_mount 모듈은 linux에서 계정 인증할때 쓰는 pam의 모듈로써, linux 인증 시스템의 정보를 이용해서 인증을 필요로 하는 여러 가지 파일 시스템을 계정 로그인시 자동으로 mount해주는 기능을 가지고 있다. 지원되는 것 중에 굵직한 것 몇 가지만 예를 들어보면, 내가 예전까지 잘 쓰고 있던 SMB(CIFS), 또 ssh 서버만 있으면 특별한 서버가 따로 필요 없는 sshfs 정도가 있고, fuse를 이용한 경우도 적용이 되는 것으로 보인다.

우분투의 경우 pam_mount 모듈을 설치하기가 쉬운데, 간단하게

apt-get install libpam-mount

명령으로 설치 가능하다.

global한 환경 파일은 /etc/security/pam_mount.conf.xml (Ubuntu 12.10 기준)에 들어 있는데, 여기서 luserconf 항목의 주석을 해제해주면 각 사용자별 설정을 홈디렉토리/.pam_mount.conf.xml 파일에서 설정해줄 수 있다. 또 mntoptions 항목에서 mount 명령어에 -o 옵션으로 넘겨지는 옵션 중 허용할 것과 불허할 것을 설정해 줄 수 있는데, 허용되지 않은 옵션을 넘길 경우 pam_mount.conf.xml 파일의 해당 명령을 무시하고 에러메시지를 밷는다. 기본적으로 화이트리스트 기반이며, allow="*" 항목을 추가시켜주면 블랙리스트 기반으로 처리 가능하다.

그리고 실제 마운트시키는 볼륨에 대한 정보는, LDAP등으로 동시에 계정이나 홈디렉토리가 관리되는 계정이 아닌 이상에는 각자 개인별로 설정파일을 갖는 편이 나을텐데, 내가 설정해놓은 CIFS 설정 파일을 첨부한다.

<?xml version="1.0" encoding="utf-8" ?>

<pam_mount>

  <volume
    options="uid=%(USER),dir_mode=0755,file_mode=0644,ip=x.x.x.x,nodev,nosuid"
    user="*"
    mountpoint="/home/%(USER)/Mounts/Windows"
    path="Users"
    server="WINDOWS-PC"
    fstype="cifs"
    />

</pam_mount>

%(USER)는 로그인되는 계정명으로 치환되는 매크로다. user에는 이 설정 파일이 적용되는 유저네임을 쓰면 된다.

주의할 점은, linux에서 사용하는 계정/비밀번호로 마운트를 시도하기 때문에 계정과 비밀번호가 일치해야 한다는 점이다. 현재 내가 못쓰고 있는 이유이기도 하다. ㅜㅜ Windows8에서 계정명에 대한 alias가 지원된다면 좋겠는데... 찾아도 잘 모르겠더라.

좀 더 자세한 정보가 필요하면 pam_mount 공식 홈페이지를 참조하시길...

2009. 6. 26. 03:01
screen은 참 좋은 어플이긴 한데, 매번 켜주고 붙이고 하는 것이 상당히 귀찮은 것이 사실이다. 그리고 여러 부가기능들을 보면 항상 켜놓는 것도 그다지 나쁘지 않은 선택인거 같아서, 몇 가지 해법을 찾아보았다.

  1. screen-profile 쓰기
    사실 가장 무난한 방법인 것 같다. ubuntu에서 제공해주는 것인데, gentoo에서는 dpkg를 이용해서 포티지와 합쳐진 통합 관리로 설치 및 유지 보수가 가능하다.
    하지만 중요한 것은... 이거 쓰는 법을 내가 잘 몰라서 이 방법은 포기했다 -_-.. 그래도 꽤 유명한 방법인 것 같으므로 조금만 찾아보면 적절한 해답을 얻을 수 있을거라고 믿는다.
  2. 직접 쉘스크립트를 짜서 자동으로 붙게 만들기
    이 것이 내가 소개하고자 하는 방법이다.
    먼저, screen의 옵션에 대해 조금 알 필요가 있다.
    • -x : 현재 실행중인 screen에 attach하되, 이미 attach된 screen이라고 해도 동시에 보기 모드로 붙는다.
    • -R : attach가 가능하면 attach를 하고, attach가 불가능하면 새롭게 screen 세션을 만든다.
    이 두 옵션을 동시에 쓰면, screen이 수행되지 않은 상태면 새롭게 screen이 수행되고, 이미 수행중인 screen이 있다면 자동으로 attach된다.
    그리고, screen이 수행중일 때는 기본값으로 TERM 환경변수가 screen이 된다는 점을 이용하면 screen 내에서 쉘이 실행될 때 screen이 또 실행되는 것을 막을 수 있다.
먼저 홈 디렉토리에 있는 .bashrc 파일을 살펴본다. 그리고 맨 마지막에 다음과 같은 내용을 집어넣는다.
if [[ $TERM != "screen" ]]; then
  screen -x -R -q
  exit
fi

위의 명령은 꽤 단순하다. TERM 환경변수가 screen이 아니라면, 즉 screen 내부가 아니라면 screen을 attach시켜서 현재 실행중인 screen에 붙인다. 그리고 이 붙은 screen이 종료되면 자동으로 쉘도 꺼지도록 했다.

이렇게 하면, 언제나 어디서나 접속해도 하나의 터미널을 공유할 수 있고 작업 내용을 볼 수도 있다. 편리하다.

'유용한 어플 > screen' 카테고리의 다른 글

자동으로 screen 켜기  (0) 2009.06.26
screen 소개  (0) 2009.06.17
2009. 4. 28. 14:41

지난번에 포스팅했던 부익부 빈익빈 프로젝트(이하 부빈)이 조금 더 진행되었다.

채팅기능이 추가되었고 딜링 서버에 접속하면 카드를 딜링받아서 서로의 패를 볼 수 있는데까지 진행되었다.

카드가 그려지는 등의 실제 게임과 관련한 부분은 BubinCardarea 위젯으로 분리시키고 채팅기능은 BubinChatwidget으로 분리시켰다. 이 둘을 GtkVBox를 통해서 메인 윈도에 붙여넣어 게임 클라이언트가 만들어진다.

아직은 게임 클라이언트나 서버나 백엔드 수준-_-이라 커맨드라인 명령을 주어야한다. 나중에 대략 완성되면 그걸 다시 싸는 프론트엔드를 만들 필요가 있다.

지금 겪고 있는 문제-_-는, 이상하게 접속이 한번 이루어지면 리슨 소켓이 제대로 안닫힌다. 즉, 재 바인딩이 안된다. 문제가 뭘까...

로직만 붙이면 “일단은” 플레이 가능한 서버, 클라이언트가 나온다. 조금만 힘내자.

라기 전에... 나 학기중인데... 숙제는... 수업은...-_-

사용중인 추가 라이브러리는 gtk, gthread, gdk, glib, pango 등 gtk 일체이다. 그 외에는 아직 안썼음...

사용중인 언어는 순수 C-_-

'프로그래밍 > GTK' 카테고리의 다른 글

G부익부 빈익빈 진행상황  (3) 2009.04.28
G부익부 빈익빈 제작중  (0) 2009.04.20
  • 1212 2009.05.08 10:25

    안녕하세요 주인장님 ㅜㅜ

    혹시 판마툴바(파폭용)아직도 개발중이시라면 새로 포스팅하나만 해주시면 감사하겠습니다 ㅜ

    예전에 올려주셨던게 계정이 다되었나 안되더라고요; 그래서 새컴에서

    툴바없이 놀려니깐 힘들군요;

    부탁드립니다 굽신굽신

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.05.13 12:35

      아... 도메인이 바꼈었습니다 -_-;; 해당 포스팅은 수정했구요, 다운받을 수 있는 주소는 http://gwangyi.kr/~gwangyi/fantasyfox/ 입니다.

      아직 찾아주시는분이 있으시군요;ㅁ;

      조만간 기능 개선을 시도해봐야겠습니다 ㅋㅋ

  • 1212 2009.05.27 22:23

    감사합니다 주인장님 ㅜㅜ

2009. 4. 20. 23:23

부익부 빈익빈이라는 카드게임이 있다. 줄여서 부빈이라고도 하는데, 플레잉카드로 하는 카드게임이다.

비슷한 게임은 계급투쟁(계투), 달무티 등이 있는데, 룰은 상당히 단순하다.

  1. 손에 들고 있는 카드를 모두 버리는 순서대로 순위가 결정된다.
  2. 카드를 버릴때는 같은 숫자끼리 모아서 버릴 수 있다.
  3. 맨 처음에는 마음대로 카드를 버릴 수 있다.
  4. 전 차례에 버려진 카드보다 숫자가 같거나 큰 카드만 버릴 수 있다.
  5. 전 차례에 버려진 카드의 장수보다 같거나 더 많이 버려야 한다.
  6. 만약 이번턴에 버릴 카드가 없거나 버리기 싫으면 버리기를 포기할 수 있다. 포기한 경우 한 주기가 끝날 때까지 카드를 버릴 수 없다.
  7. 한 명을 제외한 모든 사람이 카드 버리기를 포기한 경우 한 주기가 끝난다. 주기가 끝나면 마지막에 카드를 버린 사람이 선이 되어 카드버리기를 처음부터 시작한다.
  8. 만약 마지막 한 명이 카드를 버리면서 난 경우(손에 든 카드를 모두 버린 경우) 그 사람의 바로 옆에 있는 사람이 선이 된다 - 반시계방향으로 보통 진행하므로 오른편 사람이 운 좋게 선을 먹을 수 있다.
  9. 게임이 끝나면, 전 판에서 1등을 한 사람이 선이 되어 새 게임을 시작하는데 시작하기 전에 조공을 바친다.
    꼴등은 1등에게, 꼴등에서 두 번째는 2등에게, ... 이런 식으로 조공이 바쳐지는데, 6인이 할 때는 1등과 2등이, 9인이 할 때는 1, 2, 3등이 조공을 받는다. 조공을 바치는 쪽은 카드가 보이게 최고패를 바치고 받은 쪽은 받은 장 수 만큼 패에서 카드를 골라 준 사람에게 돌려준다. 이 때는 보이지 않게 준다.
아마 이게 룰의 전부이지 싶다. 달무티를 안다면 금방 깨칠 수 있다. 계급투쟁은 본인이 모르기 때문에 언급하지 않겠다 -_-... 아마도 계급투쟁과의 가장 큰 차이점은 “전 차례에 낸 카드 수보다 같거나 많이” 낼 수 있는 점이고 이게 빈부격차를 심화시킨다.
그래서, 개발중인 그림은 다음이다.

사용중인 것은

GTK+ 2.x, gcc 4.x 다.

일단 리눅스에서 개발한담에 윈도로 포팅할 예정이다.

'프로그래밍 > GTK' 카테고리의 다른 글

G부익부 빈익빈 진행상황  (3) 2009.04.28
G부익부 빈익빈 제작중  (0) 2009.04.20
2009. 4. 17. 02:30

나는 데스크탑을 젠투-_-로 쓰고 노트북에 XP를 깔아 쓰는 유저이다.

최근 심심하기도 하고 KDE 써보고도 싶어서 wubi를 이용해 Kubuntu를 깔긴 했지만, 버추얼박스의 한계에 부닥칠때를 대비해 항상 윈도를 깔아놓고 쓰고 있다.

그러던 와중에, synergy란걸 발견해서 “어 이거 괜찮네!”하는 생각에 쓰기로 마음먹었다.

근데 치명적인 문제가 있었던 것이... 한영키가 잘 안먹히는 거였다. 인터넷에 돌아다니는 온갖 한글 패치를 다 깔아보았으나 역부족... 아무래도 synergy server로 리눅스가 돌아가고 클라이언트로 윈도를 쓰는 경우는 상당히 특이-_-한 경우였던 것 같다.

패킷을 잡아다 보니, 서버측에서는 한글키가 입력이 돼서 가는데-개인적으로 한글패치를 했다-클라이언트쪽에서는 받아도 해석을 못하는 듯 했다.

그래서 결국 택한 것이... synergy는 소스를 받아오면 configure파일과 VC6.0용 워크스페이스를 같이 제공하기에 서버와 동일한 소스를 VC6.0으로 컴파일하기로 했다.

그렇게 컴파일을 해보니 별 무리없이 돌아갔다. 그래서 지금 잘 쓰고 있다.

첨부파일은 적용시킨 한글키 패치와 i386으로 컴파일된 synergy 실행파일들(아마 필요없을거 같지만...) 윈도용으로 컴파일한 시너지의 설치파일을 첨부한다. synergy 실행파일들은 먼저 synergy를 각 배포판에 맞게 깔아준 다음 덮어쓰는 것을 추천한다.

참고로, 서버의 테스트는 x86_64 gentoo에서 CFLAGS="-O3 -march=nocona -pipe"로 컴파일되었고 패치된 패키지는 gentoo-kr 오버레이의 것이 아닌 공식 포티지 트리에서 받아오는 파일을 패치했다. 클라이언트는 버추얼박스 2.2.0버전 안에서 돌아가는 XP Professional SP3에서 Visual C++ 6.0으로 컴파일했다.



2009. 4. 6. 19:19

좀 더 간단한 방법이 있군요 -_-;;

공식홈페이지에 들어가셔서 Documentation의 How to change the file system size 를 참조하시는편이 더 쉬울 거 같습니다 -_-;;

하지만 주계정 바꾸기 정도는 유용할듯하여 남겨둡니다.


  1. 덤: 로그인 계정 바꾸기
    pubuntu라는 계정명은 왠지 라이브시디 쓰는거 같아 별로 마음에 들지 않는다. 어디 한번 바꿔보자.
    먼저 새 계정을 만든다.
    # adduser 어쩌고
    그 뒤에 /etc/event.d/tty1을 편집한다. 아마도 맨 마지막 행일텐데, 다음 행을 다음과 같이 바꾼다.
    exec /sbin/mingetty --autologin pubuntu tty1

    exec /sbin/mingetty --autologin 어쩌고 tty1
    그 다음, 새로 만든 계정 디렉토리로 가서 .profile 파일을 편집해준다.
    맨 마지막 행 뒤에 다음 글들을 추가시킨다.
    export DISPLAY=10.0.2.2:0.0

    if [ `ps -u 어쩌고 | grep gnome-panel | wc -l` = 0]; then
      dbus-launch panel.sh
    fi
    이제 “리눅스만” 리붓해주면 새 계정으로 로그인이 될 것이다. 아, 몇가지 에러가 나는데 그냥 애플릿은 제거한다고 하면 해결된다.
개인적으로, 내가 GUI 인터페이스를 선택할 때 다른것보다 터미널에 가장 큰 가치를 부여-_-한다는 것을 얼마전에 깨닳았기 때문에, 무지하게 편한 gnome-terminal을 윈도 환경에서 쓸 수 있다는게 최고인것 같다. 사실 native linux를 깔아 쓰는게 최고겠지만, 현재 내 노트북-_-의 디바이스 드라이버들은 리눅스에서 제대로 지원이 안되고 있고, 무엇보다 CD가 달려있지 않아 상당히 -_- 불편해서 이정도로 참고 쓰려고 한다.

뭐 어쨌든, Cooperative Linux와 포터블 우분투는 꽤나 흥미로운 어플임에는 틀림없다. 언젠가 여유가 난다면 Cooperative Linux와 Native 둘 다 지원하는 라이브USB를 만들어보고 싶은 생각이 든다.



'리눅스 > Ubuntu' 카테고리의 다른 글

Ubuntu Netbook Remix  (1) 2009.06.15
포터블 우분투 넓게 쓰기  (3) 2009.04.06
vsftpd 에서 인코딩 설정해주기 in Ubuntu  (4) 2008.09.30
  • Favicon of http://codesigner.tistory.com BlogIcon codesigner 2009.04.08 10:31

    돌아다니다가 트랙백 보고 왔습니다

    포터블 우분투 홈페이지에 디스크 용량 늘리는 방법이 있더군요.

    전 그방법대로 했는데 위에 쓰신방법이랑 어떤차이가 있나요?

    홈페이지 방법대로 하고 나서 이글을 봐서 궁금해요

    그 보다 8.04에서 업그레이드 하셨으면 참고 하고 싶어서 왔습니다 ^^

    • Favicon of http://honeyperl.tistory.com BlogIcon h0ney 2009.04.09 06:28

      업데이트 하는 방법은 제 블로그에서 확인을! 후욱

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.04.13 19:40

      시... 실은 공홈에 들어가보지 않았습니다 -_-;;;

      더 쉬운 방법이 있었군요 ㅜㅜ

      제 방법대로 할 경우 귀-_-찮으며 실-_-수 할 가능성이 있다는 장-_-점이 있습니다.

2009. 4. 4. 16:23
  1. app-portage/eix
    portage tree를 캐싱하여 빠른 검색이 가능하게 해준다. 현재 설치된 버전과 설치 가능한 버전, 마스킹된 버전 등을 한눈에 볼 수 있게 해 주기 때문에 꽤 유용한 것 같다.
    설치 후에 update-eix를 한번 실행시켜주면 알아서 캐싱해준다.
    어떤 패키지를 찾아보고 싶을땐 다음과 같이 입력하면 된다. (정규표현식은 적용이 안되는듯)
    $ eix package_name
    패키지 이름을 풀네임으로 칠 필요는 없고 일부만 치면 알아서 검색해준다.
  2. app-portage/genlop
    emerge.log를 분석해주는 분석기라고 한다.
    emerge 작업을 통해 남는 로그를 분석해주는데, 어떤 패키지를 언제 얼마나 시간을 투자해서 컴파일했는가가 모두 남아 있기 때문에 이걸 통해 분석해볼 수 있다.
    특히 유용한 점은, emerge 작업이 얼마나 걸릴지 예상할 수 있다는 점이다. emerge 작업을 했을 때 전체 얼마나 시간이 걸릴까를 예상해보려면 다음과 같이 해 주면 된다.
    $ emerge package_name -p | genlop -p
    emerge -p옵션을 통해 나오는 패키지 정보를 genlop 에게 pipe로 전달하면 총 예상 시간을 예측해준다.
    현재 진행중인 컴파일이 얼마나 걸릴까 알아보려면 다른 창에서 다음과 같이 실행해주면 된다.
    $ genlop -c
    시작한지 시간이 얼마나 지났나, 그리고 예측된 시간이랑 비교하면 얼마나 남았나, 지금 어떤 패키지를 컴파일중인가가 친절하게 나온다.
  3. app-portage/layman
    아마 젠투 좀 쓴다는 사람은 다 알거다. 슈퍼유저 권한으로 layman -L을 실행시켜서 사용가능한 오버레이를 한눈에 볼 수 있고 layman -a로 오버레이를 추가할 수 있으며 layman -S로 오버레이를 업데이트할 수 있다.
  4. sys-kernel/module-rebuild
    커널이 업데이트되면 반드시 커널 모듈을 다시 컴파일해줄 필요가 있다. 하나하나 찾아서 하기 굉장히 귀찮은데, module-rebuild를 설치하게 되면 일괄적으로 다시 emerge를 시켜준다. 매우 유용하다.
    # module-rebuild rebuild
    위와 같은 명령 한번이면 알아서 리빌드해주니 정말 편하다.

'리눅스 > Gentoo' 카테고리의 다른 글

Gentoo 쓸 때 유용한 어플들  (0) 2009.04.04
2009. 3. 9. 23:15
피진을 쓰는 중에, 누가 말을 걸어도 효과음이 안나서 그러려니- 하고 살았는데, 최근에 실은 소리가 안나는게 정상이 아니고 사운드 설정 쪽이 맛이 갔다는것을 깨닳았다.

그래서 이리저리 구글 등을 찾는 뻘짓을 하면서 해결법을 모았다.

  1. (gentoo 같이 Gnome을 직접 컴파일해서 설치한 경우에 해당)
    esd 지원이 포함되었는지 확인한다. 없으면 포함시킨다.
  2. pulseaudio 설정파일(/etc/pulse/system.pa)을 열어 다음 네 행을 추가한다. (비슷한 것이 보이는 곳 근처에 추가하는 것이 좋을 것이라고 생각한다.)
    (만약 pulseaudio가 개인 계정 권한으로 돌아가고 있다면 default.pa가 될 것이다.)
     .ifexists module-esound-protocol-tcp.so
    load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1
    .endif
    load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
  3. 그놈 소리 설정 프로그램을 통해서 사운드 출력을 ESD나 PulseAudio 중 하나로 설정한다.
  4. 이제 ESD 쓰는 어플들도 소리 잘 난다.
참조: http://www.pulseaudio.org/wiki/PerfectSetup, http://kldp.org/node/91425
2008. 10. 17. 04:36
별 거창한 것은 없다 -_-
아마도 커널 업그레이드가 될 때마다 한번씩 해 줘야 할 것처럼 보인다.

자, 시작하자.

터미널에서 VirtualBox를 입력해서 실행시켜본다.

$ VirtualBox
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (2.6.24-21-generic) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /etc/init.d/vboxdrv setup

         You will not be able to start VMs until this problem is fixed.
$

최근에 커널 업글을 했는데 모듈이 컴파일되다 빠진거 같다 -_-
저기서 하라는대로 해주자.

$ sudo /etc/init.d/vboxdrv setup
 * Stopping VirtualBox kernel module                                             *  done.
 * Recompiling VirtualBox kernel module                                          *  done.
 * Starting VirtualBox kernel module                                             *  done.
$

그리고 실행하면 잘 된다.

출처: http://ubuntuforums.org/showthread.php?t=921774

ps1. 우분투 쓰는사람이 많긴 많나보다 -_-; 조금만 찾아도 자료가 나오긴 하는데 이런건 죄다 우분투(...)

ps2. 내일 OS 시험은 안드로메다 ㅋㅋㅋ
2008. 9. 30. 03:31
2009년 3월 3일 현재 vsftpd-2.1.0 버전이 릴리즈 된 상태입니다. 이 버전에는 2.0.7버전까지 적용되었던 인코딩 패치가 적용되지 않습니다. 알아보는 중입니다...ㅜ

여러번 인터넷을 뒤져봤지만 잘 안나와서 포기했었는데, 결국 해냈다.

1. vsftpd 소스코드를 다운받는다.
  $ apt-get source vsftpd

2. 패치들을 적용시킨다.
  $ cd vsftpd-2.0.6  # 문서 만드는 당시의 ubuntu repository에 저장된 vsftpd 버전은 2.0.6이었음.
  $ gunzip ../vsftpd_2.0.6-1ubuntu1.diff.gz
  $ patch -i ../vsftpd_2.0.6-1ubuntu1.diff

3. 그 외에 필요할것 같은 4개의 패치들을 적당히 적용한다. (아마 이 단계는 안해도 될 것 같다.)
  $ patch -i xxx.patch # xxx는 보이는 .patch 파일 중 맘에 드는것들

4. sysdeputil.c 파일을 수정한다.
  다음 내용과 같은 파일을 sysdeputil.c.patch 로 만든 뒤
158c158
< #include <linux/unistd.h>
---
> #include <unistd.h>
162c162
< _syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
---
> #define capset(head,data) syscall(__NR_capset,head,data)
  다음과 같은 명령을 내려준다.
  $ patch sysdeputil.c sysdeputil.c.patch

5. charset_filter 를 적용시킬 수 있게 해주는 패치를 다운받아 적용한다.
  $ wget "http://bugs.gentoo.org/attachment.cgi?id=157171" -O charset.patch
  $ patch -i charset.patch

6. 컴파일시 필요한 라이브러리들을 설치해준다.
  $ sudo apt-get install libwrap0-dev libssl-dev

7. make 실행
  $ make

8. 설치(make install이 잘 되지 않는다. 수동 설치)
  $ sudo install -m 755 vsftpd /usr/sbin/vsftpd
  $ sudo install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8
  $ sudo install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5

여기서 설치는 끝. charset_filter 를 적용하려면,
9. 설정파일을 열어 설정해준다.
  $ sudo vim /etc/vsftpd.conf
맨 밑줄이나 적당한 곳에
charset_filter_enable=yes
charset_client=cp949
charset_server=utf-8
인코딩은 알아서 할것.

이미 vsftpd가 설치된 상태에서 소스를 받아 갈아끼웠다.
/etc/init.d/vsftpd 스크립트를 만들어주는 부분은 찾기도 귀찮고 이미 되어 있었기 때문에 손은 대지 않았다.

!! 주의: man페이지를 보면 알겠지만, charset_filter 기능을 추가한 패치에서 이 기능을 켤 경우 보안상 위험할 수 있다고 한다. 아마 vsftpd에서 이 기능을 넣지 않는 것은 이런 문제 때문인 것 같다.

여튼 이 짓거리를 끝내면 윈도나 기타 OS에서 cp949 또는 euc-kr 인코딩으로 ftp에 접속할 수 있게 될 것이다.

참조페이지:

'리눅스 > Ubuntu' 카테고리의 다른 글

Ubuntu Netbook Remix  (1) 2009.06.15
포터블 우분투 넓게 쓰기  (3) 2009.04.06
vsftpd 에서 인코딩 설정해주기 in Ubuntu  (4) 2008.09.30
  • Favicon of http://peecky.tistory.com BlogIcon Peecky 2008.10.01 13:10

    오, 이런 방법이 있군요.
    저는 UTF-8 파일시스템에 강제로 파일명을 cp949로 저장해서 운영했는데-_-;;
    가끔 UTF-8로 다운로드 요청이 들어와서 파일을 못 받는 경우가 생기더군요.

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2008.10.05 23:35

      아마 이 방법 쓰면 UTF-8 요청 들어올땐 그대로 처리할 거 같아요. 한글 자료를 아무리 뒤져봐도 안나와서 영어자료 뒤져서 겨우 찾았습니다ㅋ

  • nyamnyam 2009.02.22 19:07

    오.. vsftpd하고 인코딩 치니까 맨 위에 형 블로그 떴어요 역시 천재 ㅠㅠ

  • 나그네 2011.06.09 20:59

    아 해결했습니다. 감사합니다~~!!!