情境:一台 Mac 連了一台印表機,但你希望「只有 A 帳號能列印」,其他登入同一台電腦的帳號一律禁止。本文用兩種方法達成:CUPS 網頁介面(圖形化)與指令(lpadmin)。並補上權限思維、測試手法、常見錯誤與還原技巧,讓你設定一次就穩定運作。

目錄
原理與重點觀念
macOS 的列印核心是 CUPS(Common UNIX Printing System)。每台已加入的印表機,其「佇列」(Queue)由 CUPS 管理。CUPS 本身支援存取控制,可針對每一個佇列指定「允許哪幾個使用者」或「允許哪幾個群組」。

- 限制是「佇列級」而非「裝置級」。
同一台實體印表機若被加成兩個不同佇列(例如HP_LaserJet與HP_LaserJet_USB),你必須對每個佇列都做權限限制,才不會被繞過。 - 限制的是「列印動作」,不一定能限制「掃描」。多功能事務機的「掃描」通常用的是廠商 App 或網路協定,不走 CUPS,需另外控管。
- 若其他帳號擁有管理員權限,他們可能新增一個新的佇列來列印。最佳實務是把其他人設為「標準使用者」,並鎖定設定介面。
快速完成:兩條指令就搞定
如果你已確定佇列名稱與要放行的帳號短名稱,直接用這兩步:
- 查佇列名稱:
lpstat -p -d
假設佇列名是 MyPrinter,要允許的帳號是 adam:
sudo lpadmin -p MyPrinter -u allow\:adam
sudo lpadmin -p MyPrinter -u allow\:all也可以直接看影片教學操作:
方法一:用 CUPS 網頁介面設定「允許的使用者」
喜歡圖形化操作的人可以用 CUPS 內建的 Web 介面。
- 在「終端機」開啟 CUPS 網頁介面:
sudo cupsctl WebInterface=Yes - 在瀏覽器打開 [http://localhost:631](http://localhost:631)。
- 上方選單按 Printers → 點你的印表機名稱。
- 右側 Administration → 選 Set Allowed Users / Access Control。
- 勾選「只允許以下使用者」,填入要放行的「帳號短名稱」。按儲存。
系統設定 → 使用者與群組 → 該帳號的「帳號名稱」。
或在該帳號登入後開終端機輸入:
id -un儲存後,CUPS 會立即套用。其他帳號送印將被拒絕(通常在列印對話框會看到錯誤,或在佇列顯示為 Not authorized)。
方法二:用指令 lpadmin 精準限制(含群組做法)
4-1.只允許單一使用者
# 1) 找佇列名稱
lpstat -p -d
# 2) 只允許 adam
sudo lpadmin -p MyPrinter -u allow\:adam
4-2.允許一個群組(多人共用但可控)
若你要讓「特定一小群人」能列印,推薦建立一個群組,併以群組管控:
# 建立群組 printusers
sudo dseditgroup -o create printusers
# 把 adam, betty 加入群組
sudo dseditgroup -o edit -a adam -t user printusers
sudo dseditgroup -o edit -a betty -t user printusers
# 將佇列僅允許群組(@group 寫法)
sudo lpadmin -p MyPrinter -u allow:@printusers
sudo dseditgroup -o edit -d betty -t user printusers4-3.黑名單/白名單的思維
最常見是白名單(-u allow:),直接指定能列印的人。CUPS 也支援 -u deny:,但一般情境下白名單更直覺、安全。若你的機器曾被設定過 deny,記得檢查是否與 allow 衝突。

如何驗證與測試(跨帳號實測、查看日誌)
5-1.查看佇列狀態
lpstat -l -p MyPrinter
成功套用時,送印被拒的帳號會在 UI 看到錯誤,或在列印佇列顯示未授權。
5-2.從不同帳號嘗試列印
- 在被允許的帳號登入:列印一頁測試;應該順利。
- 切換到未被允許的帳號:列印同一份檔案;應該被拒。
5-3.看 CUPS 日誌(進階)
# 需要管理員密碼
sudo tail -n 100 -f /var/log/cups/error\_log
當未授權的帳號送印時,你通常會在這裡看到 not authorized 相關訊息,有助於確認規則已生效。
常見情境與最佳實務(掃描功能、網路分享、AirPrint…)
- 掃描不是列印:多功能機的掃描走的是另一套機制(USB 驅動或網路協定),CUPS 限制不會影響掃描。若你也想限制掃描,需參考該廠商 App 是否支援帳號權限或以檔案存取權限來規範。
- 關閉「分享這部印表機」:系統設定 → 印表機與掃描器 → 取消勾選分享。避免別的裝置透過你的 Mac 轉印。
- AirPrint 與重複佇列:有時 macOS 會幫你建立 AirPrint 版與驅動版兩個佇列。請一併限制、或刪掉用不到的那個。
- 改名保持一致:佇列名稱是你後續維護與指令操作的依據,建議保持簡潔(例如
Office_HP_M404)。
強化安全:防止被繞過的幾個小設定
- 把其他人都設為「標準使用者」:避免他們有權限新增佇列或修改 CUPS 設定。
- 鎖定印表機設定:在「印表機與掃描器」視窗的左下角鎖頭(舊版系統)鎖起來,只有管理員能改。
- 定期檢查是否多出新佇列:
lpstat -p一掃就知道。 - 必要時移除不必要協定:在企業環境可以用 MDM/政策關閉自動探索(Bonjour/AirPrint)或限制印表機安裝行為。
故障排除與還原(重置列印系統、回復允許所有人)
8-1.回復允許所有人
sudo lpadmin -p MyPrinter -u allow:all
8-2.重置列印系統(最後手段)
如果設定混亂、驅動有問題,macOS 提供「重置列印系統」。這會刪除所有佇列與工作記錄,請先評估:
- 系統設定 → 印表機與掃描器。
- 右鍵(或按住 Control 點擊)空白處 → 選「重置列印系統」。
- 重新加入你的印表機,然後再做本文的權限設定。
8-3.重新啟動 CUPS 服務(進階)
sudo launchctl kickstart -k system/org.cups.cupsd
# 或停/啟:
# sudo launchctl stop system/org.cups.cupsd
# sudo launchctl start system/org.cups.cupsd
sudo cupsctl WebInterface=Yes),並以管理員身分操作。FAQ 常見問答
Q1:我要限制「一台印表機」,為什麼要對「每個佇列」設定?
Q2:我限制了列印,但別人還能掃描?
Q3:我可否限制特定 App 不能列印?
Q4:被拒絕時,使用者端會看到什麼?
/var/log/cups/error_log 也能看到相關訊息。Q5:如果我要暫時開放給第二個人列印呢?
allow:@printusers 的情境),用完再移除成員即可。Q6:更換印表機或移到另一台 Mac,要重做嗎?
一頁小抄(可直接複製)
查佇列名稱
lpstat -p -d
只允許單一帳號
sudo lpadmin -p <QueueName> -u allow:<user>
允許群組
sudo dseditgroup -o create printusers
sudo dseditgroup -o edit -a \ -t user printusers
sudo dseditgroup -o edit -a \ -t user printusers
sudo lpadmin -p \ -u allow:@printusers
回復允許所有人
sudo lpadmin -p <QueueName> -u allow:all
啟用 CUPS 網頁介面
sudo cupsctl WebInterface=Yes
# 然後打開 [http://localhost:631](http://localhost:631)
查看日誌
sudo tail -n 100 -f /var/log/cups/error_log
結語
善用 CUPS 的「允許使用者」機制,你就能在同一台 Mac 上精準地限制印表機使用權,無論是只開放給單一帳號,或是一小群被授權的人。建議把其他使用者維持在「標準」權限、鎖定設定介面、並不定期檢查是否多出新的佇列,這些都是防止被繞過的關鍵。當你把流程跑順一次,之後換機或加新佇列,只要照本文的小抄快速重做即可。

請先 登入 以發表留言。