hoatranlab.io.vn Zalo: 0917516878 Hotline: 0917516878 [email protected]
HoaTranLab Logo HoaTranLab
Linux Bible 11th Edition • Chapter 16

Configuring a Print Server

Tìm hiểu cách cài đặt và quản lý hệ thống in ấn Linux sử dụng CUPS (Common Unix Printing System), cấu hình máy in cục bộ và mạng, và chia sẻ máy in với các hệ thống khác bao gồm Windows.

Mục tiêu chương

Sau khi học xong chương này, bạn sẽ nắm được các kỹ năng cốt lõi sau

Cài đặt CUPS

Cài đặt gói cups và cups-client trên Fedora/RHEL và Ubuntu, khởi động dịch vụ cupsd và quản lý qua systemctl.

CUPS Web Admin

Sử dụng giao diện web quản trị CUPS tại http://localhost:631 để thêm, xóa, cấu hình máy in và quản lý hàng đợi in.

Print Settings GUI

Dùng công cụ system-config-printer để cấu hình máy in cục bộ và mạng trên hệ thống GNOME/Fedora.

Lệnh in ấn dòng lệnh

Thành thạo các lệnh lp, lpr, lpq, lprm để in file, xem hàng đợi, và hủy lệnh in từ terminal.

File cấu hình CUPS

Hiểu cấu trúc /etc/cups/cupsd.conf, printers.conf và classes.conf để tùy chỉnh hành vi máy chủ in.

In từ Windows & Samba

Cấu hình CUPS để nhận lệnh in từ Windows qua PostScript driver và chia sẻ máy in Linux qua Samba/SMB.

Lý thuyết

Tổng quan về CUPS

CUPS (Common Unix Printing System) là hệ thống in ấn tiêu chuẩn trên Linux. Daemon cupsd lắng nghe trên TCP port 631 để cung cấp giao diện web quản trị và chia sẻ máy in. Các file cấu hình nằm trong /etc/cups/.

Terminal — Cài đặt CUPS

# Fedora / RHEL

$ sudo dnf install cups cups-client

# Ubuntu / Debian

$ sudo apt install cups cups-client

# Khởi động và kích hoạt dịch vụ CUPS

$ sudo systemctl enable --now cups

Created symlink /etc/systemd/system/multi-user.target.wants/cups.service

$ sudo systemctl status cups

● cups.service - CUPS Scheduler

Active: active (running) since Mon 2025-01-15 10:00:00 EDT; 5s ago

Main PID: 1234 (cupsd)

File cấu hình CUPS

Thư mục /etc/cups/ chứa các file cấu hình quan trọng. File cupsd.conf định nghĩa quyền truy cập, xác thực và hành vi của daemon. File printers.conf lưu thông tin các máy in đã cấu hình.

/etc/cups/cupsd.conf

LogLevel warn

Listen localhost:631

Listen /run/cups/cups.sock

Browsing No

BrowseLocalProtocols dnssd

# Cho phép quản trị từ xa

Port 631

<Location />

Order allow,deny

Allow @LOCAL

</Location>

<Location /admin>

Require user @SYSTEM

Order allow,deny

</Location>

Giao diện Web CUPS (localhost:631)

CUPS cung cấp giao diện web quản trị tại http://localhost:631. Từ đây bạn có thể thêm máy in, quản lý hàng đợi, và cho phép quản trị từ xa. Để mở firewall cho port 631:

Terminal — Firewall & Remote Admin

# Mở firewall cho CUPS (port 631)

$ sudo firewall-cmd --permanent --add-service=ipp

success

$ sudo firewall-cmd --reload

success

# Khởi động lại CUPS sau khi thay đổi cấu hình

$ sudo systemctl restart cups

# Kiểm tra port 631 đang lắng nghe

$ ss -tupln | grep 631

tcp LISTEN 0 5 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=1234))

Lệnh in ấn từ dòng lệnh

Linux cung cấp nhiều lệnh để in file và quản lý hàng đợi in từ terminal. Các lệnh quan trọng bao gồm lp, lpr, lpq, và lprm.

Terminal — Lệnh in ấn

# In một file với lp

$ lp /etc/hosts

request id is HP_LaserJet-1 (1 file(s))

# In với máy in cụ thể và số bản sao

$ lp -d HP_LaserJet -n 2 report.pdf

request id is HP_LaserJet-2 (1 file(s))

# Xem hàng đợi in

$ lpq

HP_LaserJet is ready and printing

Rank Owner Job File(s) Total Size

active chris 1 hosts 1024 bytes

# Hủy lệnh in theo job ID

$ lprm 1

dfA001localhost dequeued

# Xem danh sách máy in đã cấu hình

$ lpstat -p

printer HP_LaserJet is idle. enabled since Mon 15 Jan 2025

$ lpstat -d

system default destination: HP_LaserJet

Công cụ system-config-printer

Công cụ system-config-printer cung cấp giao diện đồ họa để quản lý máy in trên Fedora/RHEL. Đây là cách được khuyến nghị vì tạo ra file cấu hình tương thích với cách CUPS service khởi động.

Terminal — system-config-printer

# Cài đặt công cụ

$ sudo dnf install system-config-printer

# Khởi động GUI (background)

$ system-config-printer &

# Xem danh sách driver máy in hỗ trợ

$ lpinfo -m | head -20

drv:///sample.drv/dymo.ppd Dymo Label

drv:///sample.drv/epson-­dot-matrix.ppd Epson 9-pin Series

drv:///sample.drv/generpcl.ppd Generic PCL 6/PCL XL Printer

# Xem các loại kết nối máy in

$ lpinfo -v

network socket

network ipp

direct usb://HP/LaserJet%20P1005?serial=CNB3D14343

In ấn qua Samba từ Windows

Bạn có thể in từ Windows sang CUPS bằng cách dùng PostScript driver với URL: http://printservername:631/printers/targetPrinter. Cũng có thể tạo Raw Print Queue để dùng native Windows driver.

Terminal — Chia sẻ máy in qua Samba

# Cài đặt Samba để chia sẻ máy in

$ sudo dnf install samba samba-common

# Thêm cấu hình [printers] vào smb.conf

$ sudo nano /etc/samba/smb.conf

[printers]

comment = All Printers

path = /var/spool/samba

browseable = no

guest ok = yes

writable = no

printable = yes

# URL in từ Windows

http://192.168.1.100:631/printers/HP_LaserJet

Lab Thực Hành

Kịch bản: Cài đặt và cấu hình máy chủ in CUPS trên Fedora, thêm máy in, kiểm tra in ấn từ dòng lệnh

1

Cài đặt CUPS

Cài đặt gói cups và cups-client, sau đó khởi động và kích hoạt dịch vụ.

Terminal

$ sudo dnf install -y cups cups-client

Installed: cups-2.4.11-1.fc42.x86_64

$ sudo systemctl enable --now cups

Created symlink /etc/systemd/system/multi-user.target.wants/cups.service

$ sudo systemctl status cups | grep Active

Active: active (running) since Mon 2025-01-15 10:00:00 EDT

2

Mở firewall cho CUPS

Cho phép kết nối từ mạng đến CUPS qua firewalld.

Terminal

$ sudo firewall-cmd --permanent --add-service=ipp

success

$ sudo firewall-cmd --permanent --add-port=631/tcp

success

$ sudo firewall-cmd --reload

success

$ sudo firewall-cmd --list-services | grep ipp

ipp ipp-client

3

Cài đặt system-config-printer

Cài đặt công cụ GUI để quản lý máy in dễ dàng hơn.

Terminal

$ sudo dnf install -y system-config-printer

Installed: system-config-printer-1.5.18-2.fc42.noarch

$ system-config-printer &

[1] 5678

4

Thêm máy in qua lệnh lpadmin

Thêm máy in PDF ảo (cups-pdf) để test mà không cần máy in vật lý.

Terminal

$ sudo dnf install -y cups-pdf

Installed: cups-pdf-3.0.1-2.fc42.x86_64

$ sudo lpadmin -p PDF -E -v cups-pdf:/ -m CUPS-PDF.ppd

$ sudo lpadmin -d PDF

# Kiểm tra máy in đã thêm

$ lpstat -p PDF

printer PDF is idle. enabled since Mon 15 Jan 2025 10:05:00

5

In file test và kiểm tra hàng đợi

Thực hành in file, xem hàng đợi và hủy lệnh in.

Terminal

# In file /etc/hosts

$ lp /etc/hosts

request id is PDF-3 (1 file(s))

# Xem hàng đợi

$ lpq -P PDF

PDF is ready and printing

Rank Owner Job File(s) Total Size

done user 3 hosts 2048 bytes

# Kết quả PDF trong ~/PDF/

$ ls ~/PDF/

hosts.pdf

6

Cho phép quản trị CUPS từ xa

Cấu hình CUPS cho phép quản trị từ các máy tính khác trên mạng.

/etc/cups/cupsd.conf

# Thay "Listen localhost:631" thành:

Port 631

# Thêm Allow @LOCAL vào <Location />

<Location />

Order allow,deny

Allow @LOCAL

</Location>

$ sudo systemctl restart cups

# Từ máy khác trên mạng, truy cập:

http://192.168.1.100:631

Câu hỏi ôn tập

1

CUPS lắng nghe trên port nào và giao diện web admin được truy cập bằng URL nào?

CUPS daemon (cupsd) lắng nghe trên TCP port 631. Giao diện web quản trị được truy cập tại http://localhost:631. Để truy cập từ xa, cần mở port 631 trong firewall và đổi Listen sang Port 631 trong cupsd.conf.

2

Lệnh nào dùng để in file và lệnh nào để xem hàng đợi in?

- lp filename hoặc lpr filename — in file
- lpq — xem hàng đợi in hiện tại
- lprm job_id — hủy lệnh in
- lpstat -p — xem trạng thái tất cả máy in

3

Các file cấu hình CUPS nằm ở đâu và chức năng của mỗi file?

Thư mục /etc/cups/ chứa:
- cupsd.conf: quyền truy cập, xác thực, hành vi daemon
- printers.conf: thông tin máy in đã cấu hình
- classes.conf: định nghĩa các lớp máy in cục bộ

4

Làm thế nào để in từ Windows sang máy chủ CUPS Linux?

Cấu hình Windows dùng PostScript printer driver với URL printing port: http://printservername:631/printers/targetPrinter. Ngoài ra có thể tạo Raw Print Queue trên CUPS để Windows dùng native driver gửi dữ liệu thẳng đến máy in.

5

Lệnh lpadmin được dùng để làm gì? Cho ví dụ cụ thể.

lpadmin dùng để thêm, xóa, và cấu hình máy in:
lpadmin -p HP_LaserJet -E -v socket://192.168.1.50 -m drv:///HP/laserjet.ppd — thêm máy in mạng
lpadmin -d HP_LaserJet — đặt máy in mặc định
lpadmin -x HP_LaserJet — xóa máy in

6

Lệnh nào để in file với 3 bản sao trên máy in tên "OfficeJet"?

lp -d OfficeJet -n 3 document.pdf
Hoặc dùng lpr: lpr -P OfficeJet -#3 document.pdf

7

Tại sao nên dùng system-config-printer thay vì CUPS web admin để cấu hình máy in?

Vì system-config-printer tạo ra file cấu hình được tùy chỉnh để tương thích với cách CUPS service khởi động trên hệ thống Fedora/RHEL cụ thể đó. CUPS web admin là công cụ chung, có thể tạo cấu hình không tối ưu cho phiên bản Linux đang dùng.

8

lpinfo -v cho output gì và dùng trong trường hợp nào?

lpinfo -v hiển thị các loại kết nối máy in được hỗ trợ (USB, network socket, IPP, v.v.). Dùng khi cần biết URI kết nối chính xác để thêm máy in bằng lpadmin. Ví dụ output: direct usb://HP/LaserJet%20P1005?serial=CNB3D14343