![見出し画像](https://assets.st-note.com/production/uploads/images/108421091/rectangle_large_type_2_dd76022fff52bde1855d47c3873b4e7e.png?width=1200)
393.3 プリントサービス
主題393:Sambaの共有の設定
393.3 プリントサービス
LinuC300の試験範囲である主題390~397まであるうちの「主題393:Sambaの共有の設定」から「393.3 プリントサービス」についてのまとめ
重要度:2
説明:
混在環境においてプリント共有の作成と管理を行えること。主要な知識範囲
- プリンタ共有の作成と設定を行う
- SambaとCUPSの連携を設定する
- Windowsプリンタドライバの管理と、プリンタドライバをダウンロードするための設定を行う
- [print$]を設定する
- プリント共有に起因するセキュリティ問題を理解する
- Windows の Add Print Driver Wizard を使用して、Point'n'Print ドライバ - インストール用のプリンタドライバをアップロードする重要なファイル、用語、ユーティリティ:
- smb.conf
- [print$]
- CUPS
- cupsd.conf
- /var/spool/samba
- smbspool
- rpcclient
- net
プリンタ共有の作成と設定を行う
(補足)印刷の仕組み
クライアントPCから印刷データをSambaに送信する。
↓
Sambaで印刷データを受け取りプリンタキューとしてスプール領域に格納する。
↓
CUPS、lprコマンド、lpコマンドを使ってスプールされた印刷データを順番にプリンタに送信する。
↓
印刷される。
~[grobal]セクション~
load printers = yes
printcapファイルで定義したプリンタをブラウジング可能にする設定。
~[printers]セクション~
プリンタ共有の共通設定を定義する。
個別に定義したプリンタ共有セクションの設定が優先される。
★ 設定例 ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# vi /usr/local/samba/lib/smb.conf
:
[printers]
comment = All Printers
path = /usr/spool/samba
printable = Yes
print ok = Yes
browseable = No
guest ok = No
writable = No
:
~任意の共有セッション~
printable(print ok) = No
任意のセクションがプリンタ共有である場合はYesにする。
このパラメータがNoの場合はファイル共有となる。printer name(printer) =
Linux上のプリンター名を設定する。printing = ※既定値はOSにより異なる
プリンターの状態に関する情報をどのように解釈するかを設定する。
印刷形式:
Samba3.6 : BSD, AIX, LPRNG, PLP, SYSV, HPUX, QNX, SOFTQ, CUPS
Samba4 : BSD, AIX, LPRNG, PLP, SYSV, HPUX, QNX, SOFTQ, CUPS, IPRINTprint command =
印刷に使うlprコマンドやlpコマンドを指定する。
printing = cupsの場合は指定しない。printcap name = /etc/printcap
共有するプリンタを定義するファイルをしていする。
printing = cups の場合はこのパラメータをcupsとする。
lpstatコマンドが使える場合はこのパラメータをlpstatとする。path =
印刷データを一時ファイルとしてスプール(蓄積)するためのスプール領域となるディレクトリを指定する。
印刷を利用するユーザーに対応するLinuxユーザーに書き込み権限が必要。
ここに保存されたあと、順番にCUPSやlprコマンドでプリンタにデータを送信して印刷される。min print space = 0
印刷データをスプール領域の空き容量をキロバイト(KB)で指定する。max print jobs = 1000
印刷データを蓄積できる最大件数を指定する。
SambaとCUPSの連携を設定する
~CUPS(Common UNIX Printing System)とは~
UNIX環境で印刷をするための仕組み
CUPSは、標準的な方法で印刷ジョブをプリンターに送ることを可能とする機構を与えるものである。印刷データはまずスケジューラへと送られ、スケジューラはジョブをプリンターが理解できる形式へと変換するためフィルタシステムに送る。さらにフィルタシステムはデータを、デバイスやネットワークへと送るための特殊なフィルタであるバックエンドへと受け渡す。
:
CUPSの最大の利点は、それが、印刷サーバ上で様々なデータ様式を処理できる標準的でモジュール化された印刷システムであることである。
:
(補足)
Samba3をソースからインストール時にCUPSを有効にする場合はconfigureコマンドのオプションで--enable-cupsをつける。
smbd -b コマンドでHAVE_CUPSが表示さればCUPSをサポートしていることになる。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbd -b | grep HAVE_CUPS
HAVE_CUPS_CUPS_H
HAVE_CUPS_LANGUAGE_H
HAVE_CUPS
[root@rocky9-samba31 ~]#
cupsパッケージをインストールするとWEB管理画面を備えた管理ツールが利用できる。
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# dnf -y install cups
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# rpm -qa | grep -i cups | sort
cups-2.3.3op2-16.el9.x86_64
cups-client-2.3.3op2-16.el9.x86_64
cups-filesystem-2.3.3op2-16.el9.noarch
cups-filters-1.28.7-11.el9_2.1.x86_64
cups-filters-libs-1.28.7-11.el9_2.1.x86_64
cups-ipptool-2.3.3op2-16.el9.x86_64
cups-libs-2.3.3op2-16.el9.x86_64
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# vi /etc/cups/cupsd.conf
:
Listen localhost:631
↓ 変更
Listen 631
:
# Restrict access to the server...
<Location />
Order allow,deny
Allow from all <--- 追加
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow from all <--- 追加
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow from all <--- 追加
</Location>
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# systemctl start cups
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# systemctl status cups
● cups.service - CUPS Scheduler
Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled; preset: ena>
Drop-In: /usr/lib/systemd/system/cups.service.d
mqserver.conf
/run/systemd/system/service.d
mqzzz-lxc-service.conf
Active: active (running) since Mon 2023-06-12 17:41:12 JST; 22s ago
TriggeredBy: ● cups.socket
○ cups.path
Docs: man:cupsd(8)
Main PID: 1606 (cupsd)
Status: "Scheduler is running..."
Tasks: 2 (limit: 24384)
Memory: 1.7M
CGroup: /system.slice/cups.service
mq1606 /usr/sbin/cupsd -l
6月 12 17:41:12 rocky9-samba31 systemd[1]: Starting CUPS Scheduler...
6月 12 17:41:12 rocky9-samba31 systemd[1]: Started CUPS Scheduler.
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ss -antl | grep 631
LISTEN 0 128 0.0.0.0:631 0.0.0.0:*
[root@rocky9-samba31 ~]#
![](https://assets.st-note.com/img/1686559489652-jRlOqyQraz.png?width=1200)
Windowsプリンタドライバの管理と、プリンタドライバをダウンロードするための設定を行う
~rpcclientコマンド~
Samba の MS-RPC 機能をテストするために開発されたユーティリティである。
(別記事 Appendix rpcclientコマンド 参照)
# rpcclient server -U username -c <'command string'>
server
操作する対象のプリントサーバー-U | --user=username[%password]
操作する対象のプリントサーバーの接続ユーザー-c | --command=<'command string'>
操作対象のプリントサーバーに送信するコマンド
~プリントサービスに関連するrpcclientコマンド~
rpcclient -c オプションで指定する <'command string'> の一例
adddriver <arch> <config> [<version>]
プリンタードライバーをインストールする。addprinter <printername> <sharename> <drivername> <port>
プリンターを追加する。deldriver <driver>
インストールされているプリンタードライバーを削除する。deldriverex <driver> [architecture] [version]
インストールされているプリンタードライバーとドライバーファイルを削除する。enumdata
サーバー上に格納されているプリンターの設定情報を一覧表示する。enumdrivers [level]
インストールされているドライバーの一覧を表示する。enumprinters [level]
インストールされているプリンターの一覧を表示する。getdriver <printername>
指定されたプリンターのプリンタードライバーの情報を表示する。setdriver <printername> <drivername>
既にインストールされているプリンタードライバーを更新する。
~TDBファイル~
プリンタ関連のTDBファイル
(別記事 Appendix SambaのTDBファイル 参照)
$LOCKDIR/ntdrivers.tdb
用途:インストールされたプリンタードライバー情報を格納する。$LOCKDIR/ntforms.tdb
用途:インストールされたプリンターのフォーム情報を格納する。$LOCKDIR/ntprinters.tdb
用途:インストールされたプリンター情報を格納する。$LOCKDIR/printing ディレクトリ
用途:キャッシュされた lpq 出力のプリントキュー毎の tdb ファイルを含むディレクトリ。
[print$]を設定する
プリンタドライバの自動ダウンロード機能を使うには [print$] を定義する必要がある。
★ [print$] を定義する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# vi /usr/local/samba/lib/smb.conf
:
[print$]
path = /usr/local/samba/lib/printerdrivers
comment = Printer Drivers
browseable = yes
read only = yes
write list = root
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# testparm -s
:
[print$]
comment = Printer Drivers
path = /usr/local/samba/lib/printerdrivers
write list = root
:
[root@rocky9-samba31 ~]#
★ プリンタドライバを保存するディレクトリを作成する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# mkdir /usr/local/samba/lib/printerdrivers
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -ld /usr/local/samba/lib/printerdrivers
drwxr-xr-x 2 root root 2 11月 8 22:54 /usr/local/samba/lib/printerdrivers
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -la /usr/local/samba/lib/printerdrivers
合計 3
drwxr-xr-x 2 root root 2 11月 8 22:54 .
drwxr-xr-x 12 root root 43 11月 8 22:54 ..
[root@rocky9-samba31 ~]#
プリント共有に起因するセキュリティ問題を理解する
・・・調査中・・・
Windows の Add Print Driver Wizard を使用して、Point'n'Print ドライバ インストール用のプリンタドライバをアップロードする
~Add Print Driver Wizard~
Windows10の場合 "プリンターとスキャナを追加" に相当する。
(設定 → デバイス → プリンターとスキャナ → プリンターとスキャナを追加)
Sambaの[print$]セクションを適切に設定すると、Windowsのプリンターの管理画面でドライバ追加の操作をすると[print$]セクションでpathに指定したディレクトリにドライバソフトウェアがアップロードされる。
~Point'n'Print~
ポイントアンドプリントと は、ユーザーがディスクやその他のインストールメディアを提供せずにリモートプリンターへの接続を作成できるようにする機能を指します。 必要なすべてのファイルと構成情報は、プリントサーバーからクライアントに自動的にダウンロードされます。
smbspool
印刷ファイルをSMBプリンターに送るための とても小さい印刷スプール用プログラムである。
netコマンド
Samba およびリモート CIFS サーバーの管理ツールである。
(別記事 Appendix netコマンド 参照)
netコマンドは Samba における新しい機能の1つで、共通作業のために、 リモート管理操作用における主要な操作用に便利なツールを提供する試みである。net は自由度が高いデザインで、スクリプト制御アプリケーションのためと同様にコマンド行操作 でも使うように出来ている。
当初は同じ名前のMicrosoft Windows コマンドの模倣を狙って作られたが、net は、Sambaネットワーク管理者の道具箱の基本的な部分になる、非常に強力なツールに変貌した。 Samba Teamは、smbgroupeditとrpcclientのような ツールも提供していて、それらは本当に役に立つ能力がnetコマンドに集約 された。smbgroupeditコマンドは、いくつかの機能のみが rpcclientに集約された間、netコマンドに完全に移植された。 それらのユーティリティや機能に対する古いリファレンスを見つけた場合、それ以外を探す前に、 netコマンドを見るべきである。
~プリントサービスに関連するnetコマンド~
★ net ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help
:
net printq Modify printer queue
:
net printing Process tdb printer files
:
[root@rocky9-samba31 ~]#
★ net rap printq ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help printq
Usage:
net rap printq
List the print queue
net rap printq info [queue]
Display info about print jobs in queue.
If queue is not specified, all queues are listed
net rap printq delete
Delete print job(s)
[root@rocky9-samba31 ~]#
★ net printing ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help printing
Usage:
net printing dump
Dump tdb printing file
net printing migrate
Migrate tdb printing files to new storage
[root@rocky9-samba31 ~]#
★ net ads ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help ads
:
net ads printer
List/modify printer entries
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help ads printer
Usage:
net ads printer search
Search for a printer
net ads printer info
Display printer information
net ads printer publish
Publish a printer
net ads printer remove
Delete a printer
[root@rocky9-samba31 ~]#
★ net rpc ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help rpc
:
net rpc printer
List/modify printers
:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# net help rpc printer
Usage:
net rpc printer
List printers
net rpc printer list
List all printers on print server
net rpc printer migrate
Migrate printer to local server
net rpc printer driver
List printer drivers
net rpc printer publish
Publish printer in AD
[root@rocky9-samba31 ~]#
参考文献
Setting up Automatic Printer Driver Downloads for Windows Clients - SambaWiki
第3章 Samba をサーバーとして使用 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
この記事が気に入ったらサポートをしてみませんか?