汎用的に使える自宅Linuxサーバを安価で手軽に構築(6)

はじめに

前回はSambaの導入を行い、ファイルサーバとしての設定を行いました。今回はCUPSの導入を行い、プリントサーバとして設定します。

インストール

CUPSはすでにインストールされているはずですので、特に作業は必要ありません。もしインストールされていない場合はyumでcupsパッケージをインストールしましょう。

設定

/etc/cups/cupsd.confを編集します。

アクセス制限

CUPSにはWebベースの管理ツールが付属していますが、初期状態では外部からアクセスできないようになっています。家庭内LANからのアクセスを許すように設定を変更しましょう。

もともと記述されているlocalhost onlyのListen設定をコメントアウトして無効にします。代わりに全てのホストをListenするように設定を追加しましょう。

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

LAN内のコンピュータからのみアクセスを受け付けるようにします。

# Restrict access to the server...
<Location />
  Order deny,allow
  Deny All
  Allow localhost
  Allow 192.168.1.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Encryption Required
  Order deny,allow
  Deny All
  Allow localhost
  Allow 192.168.1.*
</Location>
印刷ドライバ

サーバ側には特にドライバをインストールする必要はありません。Windowsからの印刷データをそのままプリンタに投げるような設定にして使います。

RAWドライバを有効にするために/etc/cups/mime.convsを編集し、次の行をアンコメントして有効にします。

application/octet-stream application/vnd.cups-raw 0 -

/etc/cups/mime.typesについても同様に。ただし、こちらはデフォルトでアンコメントされていると思います。

application/octet-stream

サービスの起動

いつものようにsetupコマンドを使って、サービスの起動設定とファイアウォールの設定を行います。

# setup
システムサービス > cups にチェック
ファイアウォールの設定 > カスタマイズ > その他のポート に631を設定	

サーバを起動します。

# /etc/init.d/cups start

プリンタの接続

ここではUSB接続のインクジェットプリンタを扱います。パラレル接続の場合は多少手順が異なるかもしれません。

まずプリンタをUSBで接続し、電源を入れます。プリンタが正しく認識されたことを確認するためにlsusbを実行します。プリンタらしき文字列が見えればOKです。

筆者の環境では下記の通りになります。なお、接続したプリンタはCanonのiP1700です。

# lsusb
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 005: ID 04a9:10b4 Canon, Inc.
Bus 001 Device 001: ID 0000:0000

プリンタの追加

CUPSにプリンタを認識させます。クライアント機のブラウザで管理コンソールにアクセスします(IPアドレスは適時読替)。

http://192.168.1.2:631/

管理ツールのトップページが表示されたら、[プリンタの追加]を押します。https経由でのアクセスを促されるので、リンクをクリックします。場合によってはここで次の画面が現れるまでしばらく時間がかかるかもしれません。これは、バックグラウンドでSSLの証明書を作っているためです。

しばらくすると「信頼できない証明書*1」に関する注意が表示されますが、アクセス先はサーバで間違いないためここは続行して問題ありません*2

f:id:ymkn:20080624001307p:image

プリンタに名前をつけてください。この名前は共有名として使われます。

f:id:ymkn:20080624001308p:image

デバイスを選択します。ここでは、先ほど接続したUSBプリンタを選択します。

f:id:ymkn:20080624001309p:image

メーカを選択します。しかし、ここでは[Raw]を選択します。前述したとおり、サーバにはドライバをインストールせず、クライアントから送られたデータをそのままプリンタに転送するためです。

f:id:ymkn:20080624001310p:image

モデルに[Raw Queue (en)]が現れるので、それを追加します。

f:id:ymkn:20080624001311p:image

ユーザに権限を割り当て

/etc/groupを編集して、lpグループにプリンタを使う一般ユーザを追加します。

lp:x:7:daemon,lp,ymkn

Sambaでプリンタの共有設定

/etc/samba/smb.confを編集してプリンタの共有できるようにします。とはいっても基本的な設定は既に終わっているので、[printers]セクションに次の行を追加するだけでOKです。この行を追加しないと、ジョブのキャンセルなどがうまくできないようです。

[printers]
        use client driver = yes

設定を変更したらSambaサービスを再起動しましょう。

# /etc/init.d/smb restart

これでサーバ側の設定は終わりです。

Windowsの設定

Windowsでプリンタの設定を行います。設定は非常に簡単です。

まず、エクスプローラでサーバにアクセスします。アドレスバーにサーバのIPアドレスかNetBIOS名のUNCパスを入力してください。

\\saba\

設定がうまくいっていれば追加したプリンタ[iP1700]が見えているはずです。プリンタのアイコンを右クリックして[接続...]をクリックしましょう。あとはWindows上でプリンタを追加するときの手順に従って追加すればOKです。

テストページなどを印刷して、正しくプリンタが使えることを確認しましょう。

Windowsからのジョブ管理 (2009/2/8追記)

Windows機から共有されたプリンタのプロパティを開き、[セキュリティ]タブで必要なユーザーに[ドキュメントの管理]権限を与える必要があります。

おわりに

今回はCUPSを導入してプリントサーバを構築しました。次回はApacheを導入してWebサーバを構築します。

*1:いわゆるオレオレ証明書です

*2:余談ですが、オレオレ証明書の危険性についてはオレオレ証明書とは - はてなダイアリーが詳しいです