2008-05-05

Ubuntu 8.04 Server でプリンタ共有(できてない)

別に必要でもないのだけど、Ubuntu 8.04 Server で CUPS (とSamba)を使ってプリンタを共有してみようとしてハマっている……。

まず、cups はインストールされているので、/etc/cups/cupsd.conf を変更して、ローカルなネットワークからは http(s) でのアクセスを受け付けるようにした(diff 取ったあとで編集しているので行が合わないのは無視して……)。

 # Only listen for connections from the local machine.
-Listen localhost:631
-Listen /var/run/cups/cups.sock
+#Listen localhost:631
+#Listen /var/run/cups/cups.sock
+Port 631

# Show shared printers on the local network.
Browsing Off
@@ -29,18 +30,30 @@
# Restrict access to the server...
<Location />
Order allow,deny
+ Allow 192.168.0.0/24
</Location>

# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
+ Allow 192.168.0.0/24
<Location>

# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
+ Allow 192.168.0.0/24
</Location>

# Set the default printer/job policies...
この状態で、サーバの 631 番ポートにブラウザでアクセスするとこんな感じになる。


この画面から、「管理」→「新しいプリンタの検索」と手繰っていくと接続されているプリンタの一覧が現れる。


この場合は、ローカルなネットワーク上のプリンタが表示されているが、USB につないだものなんかもここで出てくるはず。さらに「新しいプリンタの追加」をクリックすると、プリンタ情報(名前、場所、説明)の入力を求めらるれる。


適当に入力して(デフォルトで気にならなればそのままで)、「次へ」をクリックするとプリンタドライバの選択ができる。

ここでも適切なものを選んで(たいていそれっぽいものが既に選択されているみたい)、あぁ、やっとだよと「プリンタの選択」をクリックすると、認証のためのダイアログが表示される。もちろん、設定ファイルなどを作成・変更するための権限が必要なのでこれは当然のこと。で、ユーザ名とパスワードを入力して認証しようとすると…… cupsd 自体が落ちちゃう。/var/log/message あたりを見ると((表示幅の問題で見にくいけど)
May 5 16:32:30 ホスト名 kernel: [257483.589499] audit(1209972750.476:36): type=1503 operation="inode_permission" requested_mask="rw::" denied_mask="rw::" name="/var/lib/samba/secrets.tdb" pid=27412 profile="/usr/sbin/cupsd" namespace="default"
May 5 16:32:30 ホスト名 kernel: [257483.590227] audit(1209972750.476:37): type=1503 operation="inode_permission" requested_mask="rw::" denied_mask="rw::" name="/var/lib/samba/passdb.tdb" pid=27412 profile="/usr/sbin/cupsd" namespace="default"
May 5 16:32:30 ホスト名 kernel: [257483.590671] audit(1209972750.476:38): type=1503 operation="inode_permission" requested_mask="rw::" denied_mask="rw::" name="/var/lib/samba/passdb.tdb" pid=27412 profile="/usr/sbin/cupsd" namespace="default"
May 5 16:32:30 ホスト名 kernel: [257483.591169] audit(1209972750.476:39): type=1503 operation="inode_permission" requested_mask="rw::" denied_mask="rw::" name="/var/lib/samba/secrets.tdb" pid=27412 profile="/usr/sbin/cupsd" namespace="default"
May 5 16:32:30 ホスト名 kernel: [257483.591598] audit(1209972750.476:40): type=1503 operation="inode_permission" requested_mask="rw::" denied_mask="rw::" name="/var/lib/samba/secrets.tdb" pid=27412 profile="/usr/sbin/cupsd" namespace="default

みたいな感じで AppArmor が cupsd のファイルアクセスを拒否しちゃっているみたいになる。ということでお手あげ状態。AppArmor 用の cupsd のプロファイルを変更すればいいのかもしれないけど、よく分かってないので今日はこのへんで止めておくことにした。デフォルトでこれだとけっこうハマる人は多そうだ(ググってみると、過去にも同じよう問題はあったらしいが、update で解決したことになってるんだけど、最新の 8.04 でもこれだというのなぜだろう)。

あぁ、面倒くさいけどちょっと楽しい。

No comments: