Ubuntu 10.04にnetatalk 2.2alpha4インストール(ACL対応でコンパイル)
netatalk 2.2では、LDAP運用している場合はACLが動作するとの事なので、ACL対応を試してみたくて、Ubuntu 10.04にLDAPとACLを設定しました。
この状態で、netatalk 2.2alpha4をインストールしてみました。
でも、できたのはUbuntu側へのインストールまでです。Snow Leopard側で、ACLを有効にできていません。多分、まだ設定が足りないのだと思います。マニュアルを見ると、次の様に書かれています。
- you need an Open Directory Server or an LDAP server where you store UUIDs in some attribute
- your clients must be configured to use this server
- your server should be configured to use this server via nsswitch and PAM
- configure Netatalk via afp_ldap.conf so that Netatalk is able to retrieve the UUID for users and groups via LDAP search queries
簡易的には、この4点ともクリアしていると思うのですが、私の設定が不完全なのだと思います。
- LDAPサーバの設定はできました
LDAPアカウント(john)を追加しています - Snow Leopard側で、LDAPアカウント(john)にsuできるようになりました
システム環境設定→アカウントで、ネットワークアカウントサーバが認識されています
でも、ログインウィンドウからは、ログインできません - Ubuntu側でPAM認証できるようになっています
johnでログインできます - /etc/netatalk/afp_ldap.confを作り、"afpldaptest -u john"も動いている様です
「簡易的」にしかLDAPの設定をできていないのが、原因だと思います。
解決するには、もう一踏ん張り必要ですが、とりあえず、記事をアップロードします。
インストール自体は、今までの手順と同じです。ほとんど、前回までの記事をそのまま載せています。
インストールは、次の記事を参考にしています。HATさん、ありがとうございます。
大まかな、インストール手順は、次の通りです。他のパッケージを、ソースからビルドするのと、同じ手順です。
- 関連ツールインストール
- インストール済みのNetatalkを削除
- Netatalk本体インストール
- パッケージダウンロード&展開
- configure
- make
- sudo make install
- Netatalk設定
- 動作確認
前回と同じパターンです。次の記事を参考にして下さい。
工程1で、新たなパッケージが追加となります。
必要パッケージのインストールからです。すでにインストールしてあるなら、この作業は不要です。
$ sudo apt-get install libdb4.8-dev (CNIDの管理のために必要) $ sudo apt-get install libssl-dev (uams_dhx.soを使う時に必要) $ sudo apt-get install libgcrypt11-dev (uams_dhx2.soを使う時に必要) $ sudo apt-get install libslp-dev (SLPのために必要) $ sudo apt-get install uuid-dev (TimeMachineのために必要) $ sudo apt-get install libavahi-client-dev (Zeroconfのために必要)
LDAP/ACLサポートのために、追加で必要になるパッケージもインストールします。
$ sudo apt-get install libldap2-dev (LDAPのために必要) $ sudo apt-get install libacl1-dev (ACLのために必要)
工程2は、上記の記事と同じですので省略します。
設定ファイルは、あらかじめmvで退避しておきます。アンインストールの前に、sudo service netatalk stopで、サービスを停止しておいて下さい。
$ cd /etc/default $ sudo mv netatalk .netatalk.old $ cd /etc $ sudo mv netatalk netatalk.old
工程3に入ります。工程3-1も、上記の記事を参考にしてください。ダウンロードするパッケージは、2.2alpha4 (gzip)です。お好みに応じて、(bzip2)をお使い下さい。
パッケージは、~/work/netatalkで展開しています。なお、前回コンパイルしたデータは、ディレクトリ名を変更して、取っておいてあります。
工程3-2です。configureします。
$ cd $ cd work/netatalk/netatalk-2.2alpha4 $ ./configure --enable-debian \ (UbuntuはDebian系なので) > --enable-srvloc \ (SLPのために必要) > --prefix=/usr \ (できたファイルは/usr以下に置く) > --with-pkgconfdir=/etc/netatalk \ (設定ファイル置き場) > --with-uams-path=/usr/lib/netatalk (ユーザ認証ライブラリ置き場)
"–with-ldap", "–with-acls"を指定しなくても、自動認識されます。
conigureの結果は、次の通りです。
Using libraries: LIBS = -luuid -lpthread -L$(top_srcdir)/libatalk CFLAGS = -I$(top_srcdir)/include -D_U_="__attribute__((unused))" -g -O2 -I$(top_srcdir)/sys SSL: LIBS = -lcrypto CFLAGS = -I/usr/include/openssl LIBGCRYPT: LIBS = -lgcrypt CFLAGS = BDB: LIBS = -ldb-4.8 CFLAGS = SRVLOC: LIBS = -lslp CFLAGS = Configure summary: Install style: debian AFP: AFP 3.x calls activated: yes Large file support (>2GB) for AFP3: yes Extended Attributes: ad | sys CNID: backends: dbd last tdb UAMS: DHX ( SHADOW) DHX2 ( SHADOW) RANDNUM ( SHADOW) passwd ( SHADOW) guest Options: DDP (AppleTalk) support: no CUPS support: no SLP support: yes Zeroconf support: yes tcp wrapper support: no quota support: yes admin group support: yes valid shell check: yes cracklib support: no dropbox kludge: no force volume uid/gid: no Apple 2 boot support: no ACL support: yes
ACL supportがyesになっています。
次の工程3-3は、コンパイルです。
$ cd $ cd work/netatalk/netatalk-2.2alpha4 $ make
コンパイルされた結果を確認します。
$ cd $ cd work/netatalk/netatalk-2.2alpha4 $ ./etc/afpd/afpd -V afpd 2.2alpha4 - 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: AFP3.x support: Yes TCP/IP Support: Yes DDP(AppleTalk) Support: No CNID backends: dbd last tdb SLP support: Yes Zeroconf support: Yes TCP wrappers support: No Quota support: Yes Admin group support: Yes Valid shell checks: Yes cracklib support: No Dropbox kludge: No Force volume uid/gid: No ACL support: Yes EA support: ad | sys LDAP support: Yes afpd.conf: /etc/netatalk/afpd.conf afp_signature.conf: /etc/netatalk/afp_signature.conf AppleVolumes.system: /etc/netatalk/AppleVolumes.system AppleVolumes.default: /etc/netatalk/AppleVolumes.default UAM search path: /usr/lib/netatalk/ Server messages path: /etc/netatalk/msg/
ACLとLDAPがYesになっています。
工程3-4は、インストールです。
$ cd $ cd work/netatalk/netatalk-2.2alpha4 $ sudo make install
インストールされたバージョンを確認します。
$ /usr/sbin/afpd -V afpd 2.2alpha4 - 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: AFP3.x support: Yes TCP/IP Support: Yes DDP(AppleTalk) Support: No CNID backends: dbd last tdb SLP support: Yes Zeroconf support: Yes TCP wrappers support: No Quota support: Yes Admin group support: Yes Valid shell checks: Yes cracklib support: No Dropbox kludge: No Force volume uid/gid: No ACL support: Yes EA support: ad | sys LDAP support: Yes afpd.conf: /etc/netatalk/afpd.conf afp_signature.conf: /etc/netatalk/afp_signature.conf AppleVolumes.system: /etc/netatalk/AppleVolumes.system AppleVolumes.default: /etc/netatalk/AppleVolumes.default UAM search path: /usr/lib/netatalk/ Server messages path: /etc/netatalk/msg/
ACLとLDAPがYesになっています。
工程4です。各種設定をします。新しくインストールされた設定ファイルと、前回の設定ファイルとを比較して、違いを確認しておいた方が良いと思います。
$ cd /etc/default $ diff .netatalk.old netatalk $ sudo cp -p .netatalk.old netatalk $ cd /etc/netatalk $ diff ../netatalk.old/AppleVolumes.default AppleVolumes.default $ diff ../netatalk.old/AppleVolumes.system AppleVolumes.system $ diff ../netatalk.old/afpd.conf afpd.conf $ sudo cp -p ../netatalk.old/* .
/etc/default/netatalk, /etc/netatalk/afpd.conf, /etc/netatalk/AppleVolumes.defaultの設定は、次の記事をご覧下さい。
今回、/etc/netatalk/AppleVolumes.defaultに、LDAPで設定したID(john)のディスクを追加しました。
/home/john "john" allow:john deny:admin
いよいよ、工程5に移ります。設定が終わったら、netatalkを起動します。
$ sudo service netatalk start Starting Netatalk services (this will take a while): cnid_metad afpd.
次に、Snow Leopard側で確認しました。
一応、Snow Leopard側で見えているのですが、ACLが有効になりませんでした。
SnowLeopard$ cd /Volumes/john SnowLeopard$ echo "aaa" > acl.txt SnowLeopard$ chmod +a "everyone deny delete" acl.txt chmod: Failed to set ACL on file 'acl.txt': Operation not supported
もうちょっと、問題解決を頑張ってみます。でも、今年中は、無理かも…。
それとは別に、今回のコンパイルでハマった事です。
LDAPの開発用ライブラリ(libldap2-dev)だけインストールして、ACL関係の開発用ライブラリ(libacl1-dev)をインストールしない状態でcofigure/makeすると、configureは正常終了し、makeの途中で落ちます。
"–with-acls"をつけてconfigureすると、configureは通る(通ってしまう)のですが、makeでエラーになります。
$ ./configure (略) --with-acls (中略) checking for LDAP (necessary for client-side ACL visibility)... checking ldap.h usability... yes checking ldap.h presence... yes checking for ldap.h... yes checking for ldap_init in -lldap... yes checking whether to support ACLs... yes configure: checking whether ACL support is available: checking for acl_get_file in -lacl... no checking for getxattr in -lattr... yes checking for POSIX ACL support... no (中略) Options: DDP (AppleTalk) support: no CUPS support: no SLP support: yes Zeroconf support: yes tcp wrapper support: no quota support: yes admin group support: yes valid shell check: yes cracklib support: no dropbox kludge: no force volume uid/gid: no Apple 2 boot support: no ACL support: no
ACL supportはnoになっています。この状態で、makeすると、次のエラーになります。(表示のために、折り返しています)
$ make (中略) gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../include "-D_U_=__attribute__((unused))" -g -O2 -I../../sys -MT ldap.lo -MD -MP -MF .deps/ldap.Tpo -c ldap.c -fPIC -DPIC -o .libs/ldap.o ldap.c:56: error: array type has incomplete element type ldap.c:72: error: array type has incomplete element type make[3]: *** [ldap.lo] エラー 1 make[3]: ディレクトリ `/home/user/work/netatalk/netatalk-2.2alpha4/libatalk/acl' から出ます (後略)
この原因(libacl1-devをインストールしてなかった、私のミス)を突き止めるのに、しばらく時間がかかりました。
configureの結果を、注意深く見ていれば、わかることでした。
【関連記事】
- PowerMac G4/MDDにUbuntu 9.10インストール[追記あり]: プラスα空間
- Ubuntu 9.10にnetatalk 2.1.2インストール[追記・訂正あり]: プラスα空間
- Ubuntu 9.10にavahiインストール[追記あり]: プラスα空間
- PowerMac G4/MDDにUbuntu 10.04インストール[追記あり]: プラスα空間
- Ubuntu 10.04にnetatalk 2.1.3インストール[追記・訂正あり]: プラスα空間
- Ubuntu 10.04にnetatalk 2.1.4インストール: プラスα空間
- Ubuntu 10.04にnetatalk 2.2alpha1インストール: プラスα空間
- Ubuntu 10.04にnetatalk 2.2alpha2インストール: プラスα空間
- Ubuntu 10.04にnetatalk 2.2alpha2インストール(バグ対応)[追記あり]: プラスα空間
- Ubuntu 10.04で拡張属性を有効にする: プラスα空間
- Ubuntu 10.04にnetatalk 2.2alpha3インストール: プラスα空間
- Ubuntu 10.04にnetatalk 2.2alpha4インストール: プラスα空間
- Ubuntu 10.04で、LDAPでログインできるようにする: プラスα空間
- Ubuntu 10.04でACLを有効にする: プラスα空間
- Ubuntu 10.04にnetatalk 2.2alpha4インストール(ACL対応でコンパイル): プラスα空間
ディスカッション
動作確認ありがとうございます。
私は別のところをチェック中なので、まだACLは試していません。
別件になりますが、次に出るalpha5ではuuid-devは必要ありません。乱数からuuidを生成するように変更になっています。
HATさんへ、いつもコメントありがとうございます。
LDAPは難しいです。まだ、私の理解が足りません。
alpha5が出たら、また試してみたいと思います。
netatalk 2.1.5 (安定版) と netatalk 2.2alpha5 リリース
安定版 netatalk 2.1.5がリリースされています。 Snow Leopardのバグにより、netatalk 2.0.xに接続すると問題が発生します。2.1〜2.1.2は深刻なバグがあるので、2.1.3以降をおすすめします。 Netatalk – Networking Apple Macintosh through Open Source インストール手順や設定については、以下のページをご覧ください。 Netatalk and Samba 2.1.5の変更点 ログインメッセージで改行が…
このLDAP有効でACL無効のときにmakeでコケるという件は、
どうやら最新の2.2.1でも同様です。CentOSでの報告例があります。
http://d.hatena.ne.jp/paraches/20110912
これはバグと考えるのが妥当と思えてきました。
HATさんへ、コメントありがとうございます。
他の方も引っかかると言う事は、通常の注意では、同じ問題に陥ると言う事ですね?
configureでチェックできるなら、チェックしていただきたいです。
この問題に当たった時、ソースコードを追いかけました。
ldap.cで使われている構造体(だったかな?)が、ACLが有効で無いと定義されない事に気が付き、libacl1-devをインストールしました。
原因を突き止めるのに、かなり苦労しました。
この問題は4月に報告されていましたが、忘れ去られていたようです。
再び問題提起しておきました。
http://sourceforge.net/mailarchive/message.php?msg_id=28087872
HATさんへ、再びコメントありがとうございます。
更に他にも、makeできなくて困っている人がいたのですね。
原因と解決方法を、自分で見つけてしまったので、そのままにしてしまいました。
報告した方が良かったですかね?
gitで修正されました。
http://netatalk.git.sourceforge.net/git/gitweb.cgi?p=netatalk/netatalk;a=blobdiff;f=include/atalk/ldapconfig.h;h=5a5b657061ff467c5a52c8b0d819927588460243;hp=70f9f628c7c61c0c0fe7018b91bfceb884865f43;hb=04bb047d46a87e09a3e5e95ddc3e093c019c4bd8;hpb=cbc8c6f7a5de52fc01395241ef1faaac96c8bca3
HATさんへ、ご連絡ありがとうございます。
リンク先を見てみました。
configureの修正ではなく、ソースコードを根本修正されたのですね。
ありがとうございます。
2.2.2が出たので、ACL/LDAPのバグは直ったと思います。
HATさんへ、いつもコメントありがとうございます。
時間を見つけて、試してみようと思います。