학습자료(~2017)/리눅스

[Linux] netatalk 2.2.1 (ubuntu) - appletalk 프로토콜 지원 리눅스 프로그램

단세포소년 2013. 7. 31. 20:37
반응형

참고 : 

http://netatalk.sourceforge.net/ - 공식 사이트

http://baekis1185.tistory.com/m/post/view/id/67

http://trip2me.tistory.com/46

http://jswlinux.tistory.com/entry/%EC%98%A4%ED%94%88%EC%9D%B8%EB%94%94%EC%95%84%EB%82%98%EC%97%90%EC%84%9C-%EB%A7%A5-%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%93%B0%EA%B8%B0 

http://lpbox.co.kr/lp/read.php?id=Linux&main_No=59&sub_No=AAAAA

http://spring2.way2java.net:2080/138

http://stve.cx/2011/07/netatalk-2-2-b4/ - "...CNID DB" 에러 출력시 문제 해결법

http://www.blog.10deam.com/tag/netatalk/



appletalk 이란?


appletalk(애플토크)는 애플사가 컴퓨터 네트워킹을 위해 개발한 프로토콜이다. 프린터나 서버(폴더..) 등의 리소스를 주고 받을 수 있게 되어있다.

samba(CIFS) 하고 비슷하다. 윈도우가 CIFS라면 애플은 appletalk



netatalk 이란?


appletalk 프로토콜을 구현한 리눅스 서버 프로그램이다. 

비슷한 예로 윈도우의 CIFS 프로토콜을 구현한 리눅스 서버 프로그램은 SAMBA다.




netatalk 설치 (ubuntu 기준)


패키지 설치

$ apt-get install netatalk



버전 및 설정파일 위치 확인

$ afpd -v 

afpd 2.2.1 - Apple Filing Protocol (AFP) daemon of Netatalk

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.

afpd has been compiled with support for these features:

          AFP versions:
1.1 2.0 2.1 2.2 3.0 3.1 3.2 3.3 
DDP(AppleTalk) Support: Yes
         CNID backends: dbd last tdb 

             afpd.conf:
/etc/netatalk/afpd.conf
   AppleVolumes.system: /etc/netatalk/AppleVolumes.system
  AppleVolumes.default: /etc/netatalk/AppleVolumes.default
    afp_signature.conf: /etc/netatalk/afp_signature.conf
      afp_voluuid.conf: /etc/netatalk/afp_voluuid.conf
         afp_ldap.conf: not supported
       UAM search path: /usr/lib/netatalk/
  Server messages path: /etc/netatalk/msg/
              lockfile: /var/run/afpd.pid




설정
/etc/default/netatalk , /etc/netatalk/afpd.conf 을 바꾸어 주자.(주석만 풀자)

$ vi /etc/default/netatalk

ATALK_UNIX_CHARSET='LOCALE'
ATALK_MAC_CHARSET='MAC_KOREAN'
export ATALK_UNIX_CHARSET
export ATALK_MAC_CHARSET
CNID_METAD_RUN=yes
AFPD_RUN=yes

AFPD_MAX_CLIENTS=20
ATALKD_RUN=no
PAPD_RUN=no
TIMELORD_RUN=no
A2BOOT_RUN=no


$ vi /etc/netatalk/afpd.conf

-setuplog "default log_info /var/log/afpd.log"
- -tcp -noddp  -uamlist uams_clrtxt.so,uams_dhx.so,uams_dhx2.so -nosavepassword

#-setuplog 는 로그가 저장될 위치
# uams_clrtxt.so, uams_dhx.so, uams_dhx2.so 는 인증방법이다.
# 인증은 자동으로 리눅스 인증 /etc/passwd , /etc/shadow 를 이용함으로 따로 사용자를 추가할 필요는 없다.
# cleartxt 인증은 패스워드 최대 길이가 8 이가 때문에 패스워드가 8 글자보다 길다면 인증되지 않는다. 주의하자.
   cleartxt 인증을 사용하는 클라이언트가 접속할때 서버의 로그인 패스워드가 8보다 길어 인증이 실패하는 경우가 있었다.ㅜㅜ
   개고생함..
# dhx 인증은 패스워드 최대 길이가 64이다.
# dhx2 인증은 패스워드 최대 길이가 256이다.




volume 을 생성하자.
/etc/netatalk/AppleVolumes.default 파일에 생성할 volume을 작성하면 된다.
문법은 
경로    볼륨명    옵
이다.
아래는 예제이다.

$ vi /etc/netatalk/AppleVolumes.default

/home    "Home Directory" allow:root,user    cnidscheme:dbd
/tmp              "tmp"  allow:root,shh  cnidscheme:tdb


#/home 은 공유할 경로
#"Home Directory" 는 appletalk 으로 연결시 보이는 볼륨명이다.
#allow:root,user 는 접속을 허용할 사용자 목록이다.
# cnidscheme 는 스키마를 저장할 데이터베이스이다. dbd는 버클리db이다. tdb, last 는 잘 모르겠다.
  http://netatalk.sourceforge.net/2.2/htmldocs/configuration.html 참고하라.
  난 그냥 tdb 사용하거나 버클리db 설치하고 dbd 쓴다.


netatalk 실행

$ service neatalk start




접속하기

맥 키고 finder 실행후 command + k 누르면 접속창 뜨는데 'afp://ip주소' 쓰고 확인누르면 로그인창 뜬다. 로그인하면 volume 목록 뜨고 접속하면된다.




장애 대처

  • cnidscheme 를 dbd 로 했을 때 클라이언트로 접속시 에러(someting wrong with the volume's CNID DB, using ...)를 출력하고 읽기전용으로 되는 경우가 있다. 이문제는 2가지다 CNID_METAD_RUN=no 이거나 버클리db가 설치되어 있지 않기 때문이다.
    버클리db 를 설치하자
    $ apt-cache search libdb
    $ apt-get install libdb5.1-dev db-util db5.1-util
    이미 버클리 db가 설치되어 있는데도 이런 에러가 발생한다면 모든 공유 폴더의 .AppleDB를 지우자
    rm -rf .AppleDB
    그리고 /etc/defulat/netatalk 의 CNID_METAD_RUN=yes 로 하자.
    참조: http://stve.cx/2011/07/netatalk-2-2-b4/

  • 클라이언트 접속시 파일 목록이 안보이거나 파일이나 폴더를 생성할 수 없을때는 공유한 해당 폴더의 권한문제이다. 로그인한 계정이 해당 폴더에 권한이 있는지 확인하자.

  • 클라이언트 접속시 로그인되지 않는다면 로그인계정의 패스워드 길이를 확인하자.
    /var/log/afpd.log 보면 접속한 클라이언트가 쓰는 인증방식이 있다. clearttxt 인증 방식의 경우는 패스워드 최대길이가 8이라고 위에서 언급했다. 서버 계정의 패스워드 길이를 확인하고 바꿔라.

  • 클라이언트로 접속시 "서버 버전 지원하지않는다"라고 하는 경우가 있다. 이거 어찌어찌 고쳤는데 위 설정만 잘 지키면 이런 메세지 안나올것이다.
    예상하기로는 /etc/default/netatalk 설정에서 
    AFPD_GUEST=nobody 이 설정값을 주었는데 /etc/netatalk/afpd.conf 파일에서 인증방식에 uams_guest.so 를 추가하지 않아서 이런 문제가 발생한것 같다. 혹은 클라이언트의 인증방식을 서버가 지원하지 않는 경우이다. 예를들어 클라이언트가 cleartext인증방식인데 서버는 uams_clrtxt.so 모듈을 로드하지 않을 경우이다. 이때는 /etc/netatalk/afpd.conf 에서 -uamlist  uams_clrtxt.so 을 추가하자. 
    혹시 다른 해결책이나 에러 발생원인을 확인한 사람있으면 댓글좀 달아줬으면 좋겠다. 
    내가 확인결과 클라이언트의 인증방식을 서버가 지원하지 않아서 생기는 문제였다. 서버의 인증모듈 uams_xx 를 다 로드해버리자. 



반응형