참고 :
http://netatalk.sourceforge.net/ - 공식 사이트
http://baekis1185.tistory.com/m/post/view/id/67
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 를 다 로드해버리자.
'학습자료(~2017) > 리눅스' 카테고리의 다른 글
[linux] sudo 사용시 리다이렉션(>) 방법, 파일 전송 방법 (root 권한 폴더에) (0) | 2013.08.08 |
---|---|
[linux] ubuntu 에서 p255p1 을 eth0로 바꾸기, udev rule eth0 (0) | 2013.08.07 |
[linux] avahi 란? 활용 (zeroconf , bonjour) (0) | 2013.07.30 |
[linux] MTU, 점보프레임 (0) | 2013.07.30 |
[linux] 커널 특정 모듈만 컴파일하기 (0) | 2013.07.09 |