본문 바로가기

IT/Apple

맥에서 afp를 통해 리눅스와 파일 공유(netatalk)

출처 : http://ripli.net/245

리눅스 파일 서버와 맥간의 파일공유를 위해 정말 많이 도움이 된 포스트에서 발췌했습니다.

로그가 너무 길어서 보기 쉽게 로그부분 삭제하고 그 외 진행하면서 설정 환경에 맞게 추가했습니다.


quarkXpress 3.3 파일을 리눅스 서버로 ftp를 통해 업로드하면..

쿽 파일이 깨져버려서...다시 다운로드 하면 파일이 열리지 않는 현상이 있습니다.

이를 해결하기 위해 아래 절차로 진행하였고 정상적으로 구동되는 것을 확인할 수 있었습니다.


추가적으로 외부에서도 연결하기 위해 방화벽에서 afp 548 포트를 허용하여 외부에서도 접속되는 것을 확인하고 마무리..


구성환경 :

페도라 리눅스, 맥 OS X 10.4


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


(볼드 : 타이핑하고 엔터 치시면 됩니다.
 
파란글씨 : 그냥 소소하게 힌트등을 드리는 코멘트입니다.
 
빨간글씨 : 시스템을 재설치 해야 하게 될 수도 있는 중요한 내용입니다.) 


ripliMBP:~ startpc9$ ssh 192.168.100.11 -l root

root@192.168.100.11's password: 

Last login: Sat Dec 17 21:11:41 2011 from 192.168.100.2


# 일단 시스템 전체적인 업데이트를 해줍시다아
# yum
rpm 패키지를 관리해주는 툴입니다~

[root@localhost ~]# yum update

Complete!
# 필요 패키지들 설치가 완료되었습니다 ' '/
 

# 새로 설치한 커널을 적용시키기 위해 리붓을 해줍니다.
# -r
옵션은 reboot를 뜻합니다. 서버를 내리고 싶으실 때엔 -h (halt) 옵션을 주시면 됩니다~

[root@localhost ~]# shutdown -r now

 

Broadcast message from root@localhost.localdomain

           (/dev/pts/0) at 21:43 ...

 

The system is going down for reboot NOW!

[root@localhost ~]# Connection to 192.168.100.11 closed by remote host.

Connection to 192.168.100.11 closed.

# 연결이 끊겼군요... 서버가 다시 올라올 때까지 기다렸다가 다시 접속해줍니다~
 

ripliMBP:~ startpc9$ ssh 192.168.100.11 -l root

root@192.168.100.11's password: 

Last login: Sat Dec 17 21:13:21 2011 from 192.168.100.2


# 소스를 다운 받기 위한 디렉토리 src를 만듭니다.
[root@localhost ~]# mkdir src


# 새로 만든 디렉토리로 이동합니다~
[root@localhost ~]#
 cd src

# 인터넷에서 netatalk 2.2.1 소스를 다운 받습니다.
#
큰 따옴표까지 빠짐없이 긁어다가 붙여넣기하시고 엔터를 살그머니 눌러줍시다.
 

[root@localhost src]# wget "http://prdownloads.sourceforge.net/netatalk/netatalk-2.2.1.tar.gz?download"


# 소스 압축 파일의 다운로드가 끝났습니다 ' '/
#
압축을 풀어봅시다~
 


[root@localhost src]#
 tar zxvf netatalk-2.2.1.tar.gz 


# 압축을 푼 디렉토리로 이동합니다 ' '/ 

[root@localhost src]# cd netatalk-2.2.1

# 컴파일에 필요한 옵션들을 살펴볼까요?  

[root@localhost netatalk-2.2.1]# ./configure --help

 

# 특별히 건드릴 옵션이 없다면 아래처럼 대충 적당히 옵션들을 주고 컴파일 사전 설정을 해줍니다.
#
혹시나... OS 9 등의 클래식 환경에서 사용하여야 한다면 애플토크를 활성화시키기 위해
# --enable-afs
옵션을 주셔야 합니다만... 이에 대한건 셀프 스터디 하시어요~ ㅎㅎ;;
#
저도 클래식 환경의 머신들은 없기 때문에 확인해볼수가 없습니다 =_=;; 

[root@localhost netatalk-2.2.1]# ./configure --enable-redhat-sysv --prefix=/usr --sysconfdir=/etc --without-acl --with-cracklib=/usr/share/cracklib

 

à cracklib not found 에러로 인해 다음 명령어로 수행함

./configure --enable-redhat-sysv --prefix=/usr --sysconfdir=/etc --without-acl


# 이젠 컴파일을 해봅시다 ' '/ 

[root@localhost netatalk-2.2.1]# make


# 알아먹을 수 없는 외계어들을 보시느라 고생 많으셨습니다.
#
이제 설치를 해보겠습니다~ ' '/

[root@localhost netatalk-2.2.1]# make install


# 여기까지 하시면 설치가 끝나게 됩니다.
#
설치 후엔 설정...이 필요합니다만 이에 대한 디테일한 설명은 다음 기회에...
# (
홈 디렉토리 이외의 특정 디렉토리를 공유하는 경우를 제외하고는 딱히 손 댈것은 없습니다)

#
서버가 켜질 때 자동으로 서비스가 올라오도록 하게끔 하기 위해 아래 명령어를 한 번 실행시켜주세요 


[root@localhost netatalk-2.2.1]#
 chkconfig --level 345 netatalk on


# 제대로 등록되어 있는지 확인해봅시다~ | 는 쉬프트+백슬러시를 누르시면 입력됩니다~
[root@localhost netatalk-2.2.1]# chkconfig --list | grep netatalk

netatalk           0:off     1:off     2:off     3:on     4:on     5:on     6:off

# 설정 파일이 있는 곳을 확인해보겠습니다

[root@localhost netatalk-2.2.1]# cd /etc/netatalk/

[root@localhost netatalk]# ls -l

total 64

-rw-r--r--. 1 root root  9576 Dec 17 22:00 AppleVolumes.default

-rw-r--r--. 1 root root 25650 Dec 17 22:00 AppleVolumes.system

-rw-r--r--. 1 root root 16182 Dec 17 22:00 afpd.conf

-rw-r--r--. 1 root root  2012 Dec 17 22:00 netatalk.conf

drwxr-xr-x. 2 root root  4096 Dec 17 22:00 uams

# AppleVolumes.default
에 공유할 디렉토리들을 옵션과 함께 기록해주시면 됩니다 ^^
# netatalk.conf
에서 자잘한 수정들을 해줘야합니다만....
#
vi를 사용합니다 ' ';; 사용법은 인터넷을 찾아보시거나,
#
리눅스 박스에서 gedit를 이용해 수정하시길 추천해드립니다...
 

[root@localhost netatalk]# vi netatalk.conf

 

# Netatalk configuration

 

#########################################################################

# Global configuration

#########################################################################

 

#### machine's AFPserver/AppleTalk name.

#ATALK_NAME=machinename

 

#### server (unix) and legacy client (<= Mac OS 9) charsets

ATALK_UNIX_CHARSET='UTF8'

ATALK_MAC_CHARSET='MAC_KOREAN'

 

#### Don't Edit. export the charsets, read form ENV by apps

export ATALK_UNIX_CHARSET

export ATALK_MAC_CHARSET

 

#########################################################################

# AFP specific configuration

#########################################################################

 

#### Set which daemons to run.

#### If you use AFP file server, run both cnid_metad and afpd.

CNID_METAD_RUN=yes

AFPD_RUN=yes

 

#### maximum number of clients that can connect:

#AFPD_MAX_CLIENTS=20

 

#### UAMs (User Authentication Modules)

#### available options: uams_dhx.so, uams_dhx2.so, uams_guest.so,

####                    uams_clrtxt.so(legacy), uams_randnum.so(legacy)

AFPD_UAMLIST="-U uams_dhx.so,uams_dhx2.so"  <- 맨 앞의 # 삭제

 

#### Set the id of the guest user when using uams_guest.so

#AFPD_GUEST=nobody

 

#### config for cnid_metad. Default log config:

#CNID_CONFIG="-l log_note"

 

#########################################################################

# AppleTalk specific configuration (legacy)

#########################################################################

 

#### Set which legacy daemons to run.

#### If you need AppleTalk, run atalkd.

#### papd, timelord and a2boot are dependent upon atalkd.

#ATALKD_RUN=no

#PAPD_RUN=no

#TIMELORD_RUN=no

#A2BOOT_RUN=no

 

#### Control whether the daemons are started in the background.

#### If it is dissatisfied that legacy atalkd starts slowly, set "yes".

#### In case using systemd/systemctl, this is not so significant.

#ATALK_BGROUND=no

 

#### Set the AppleTalk Zone name.

#### NOTE: if your zone has spaces in it, you're better off specifying

####       it in atalkd.conf

#ATALK_ZONE=@zone


# ... 대충 이 정도만 설정해주셔도 됩니다 ' '/

#
이제 맥의 파인더에서 파일 서버의 아이콘이 Xserve로 보이도록 수정해보겠습니다 ^^


[root@localhost netatalk]#
 cd /etc/avahi/services/

[root@localhost services]# vi afpd.service


#
요로코롬 해서 afpd.service 파일을 새로 만들고 아래의 내용을 고대로~ 넣어줍시다.

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->

<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

 <service-group>

  <name replace-wildcards="yes">%h</name>

 <service>

  <type>_afpovertcp._tcp</type>

  <port>548</port>

 </service>

 <service>

  <type>_device-info._tcp</type>

  <port>0</port>

  <txt-record>model=Xserve</txt-record>

 </service>

</service-group>
 

# 이제 avahi-daemon을 다시 시작해주고 

[root@localhost services]# service avahi-daemon restart

Shutting down Avahi daemon:                                [  OK  ]

Starting Avahi daemon...                                   [  OK  ]

 

# netatalk를 시작해줍니다.

[root@localhost services]# service netatalk start

Starting Netatalk services: 

  Starting cnid_metad:                                     [  OK  ]

  Starting afpd:                                           [  OK  ]

 


# 여기까지하시면 끝!!!....이 아니고 방화벽을 열어줘야합니다.

[root@localhost services]# vi /etc/sysconfig/iptables

 

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 548 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 548 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT



# 맥에서 afp연결이 되는지 확인

afp://linux_IP


netatalk를 구성한 linux의 ip를 통해 연결하면

id와 pw를 묻는 창이 팝업되면 로그인

그리고 정상적으로 파일 공유가 된다면 성공!