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

ChatGPT Image 2025年9月2日 下午02_30_10

原理與重點觀念

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

ChatGPT Image 2025年9月2日 下午02_30_13

關鍵觀念
  • 限制是「佇列級」而非「裝置級」。
    同一台實體印表機若被加成兩個不同佇列(例如 HP_LaserJetHP_LaserJet_USB),你必須對每個佇列都做權限限制,才不會被繞過。
  • 限制的是「列印動作」,不一定能限制「掃描」。多功能事務機的「掃描」通常用的是廠商 App 或網路協定,不走 CUPS,需另外控管。
  • 若其他帳號擁有管理員權限,他們可能新增一個新的佇列來列印。最佳實務是把其他人設為「標準使用者」,並鎖定設定介面。

快速完成:兩條指令就搞定

如果你已確定佇列名稱與要放行的帳號短名稱,直接用這兩步:

  1. 查佇列名稱:
lpstat -p -d

假設佇列名是 MyPrinter,要允許的帳號是 adam

sudo lpadmin -p MyPrinter -u allow\:adam 
還原成允許所有人
sudo lpadmin -p MyPrinter -u allow\:all

也可以直接看影片教學操作:

方法一:用 CUPS 網頁介面設定「允許的使用者」

喜歡圖形化操作的人可以用 CUPS 內建的 Web 介面。

  1. 在「終端機」開啟 CUPS 網頁介面:
    sudo cupsctl WebInterface=Yes
    
    
  2. 在瀏覽器打開 [http://localhost:631](http://localhost:631)
  3. 上方選單按 Printers → 點你的印表機名稱。
  4. 右側 Administration → 選 Set Allowed Users / Access Control
  5. 勾選「只允許以下使用者」,填入要放行的「帳號短名稱」。按儲存。
帳號短名稱在哪看?
系統設定 → 使用者與群組 → 該帳號的「帳號名稱」。
或在該帳號登入後開終端機輸入:id -un

儲存後,CUPS 會立即套用。其他帳號送印將被拒絕(通常在列印對話框會看到錯誤,或在佇列顯示為 Not authorized)。

方法二:用指令 lpadmin 精準限制(含群組做法)

4-1.只允許單一使用者

# 1) 找佇列名稱

lpstat -p -d

# 2) 只允許 adam

sudo lpadmin -p MyPrinter -u allow\:adam 

ChatGPT Image 2025年9月2日 下午02_30_16

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 printusers

4-3.黑名單/白名單的思維

最常見是白名單(-u allow:),直接指定能列印的人。CUPS 也支援 -u deny:,但一般情境下白名單更直覺、安全。若你的機器曾被設定過 deny,記得檢查是否與 allow 衝突。

ChatGPT Image 2025年9月2日 下午02_30_18

如何驗證與測試(跨帳號實測、查看日誌)

5-1.查看佇列狀態

lpstat -l -p MyPrinter

成功套用時,送印被拒的帳號會在 UI 看到錯誤,或在列印佇列顯示未授權。

5-2.從不同帳號嘗試列印

  1. 在被允許的帳號登入:列印一頁測試;應該順利。
  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)。

強化安全:防止被繞過的幾個小設定

  1. 把其他人都設為「標準使用者」:避免他們有權限新增佇列或修改 CUPS 設定。
  2. 鎖定印表機設定:在「印表機與掃描器」視窗的左下角鎖頭(舊版系統)鎖起來,只有管理員能改。
  3. 定期檢查是否多出新佇列lpstat -p 一掃就知道。
  4. 必要時移除不必要協定:在企業環境可以用 MDM/政策關閉自動探索(Bonjour/AirPrint)或限制印表機安裝行為。

故障排除與還原(重置列印系統、回復允許所有人)

8-1.回復允許所有人

sudo lpadmin -p MyPrinter -u allow:all

8-2.重置列印系統(最後手段)

如果設定混亂、驅動有問題,macOS 提供「重置列印系統」。這會刪除所有佇列與工作記錄,請先評估:

  1. 系統設定 → 印表機與掃描器。
  2. 右鍵(或按住 Control 點擊)空白處 → 選「重置列印系統」。
  3. 重新加入你的印表機,然後再做本文的權限設定。

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
提示:如果你在 CUPS Web 介面沒看到「Set Allowed Users」,確定你開啟了網頁介面(sudo cupsctl WebInterface=Yes),並以管理員身分操作。

FAQ 常見問答

Q1:我要限制「一台印表機」,為什麼要對「每個佇列」設定?

因為 CUPS 以「佇列」為單位管控權限。即使是同一台實體印表機,若系統內有兩個不同佇列,都能發工作過去;你只限制其中一個,別人仍可改用另一個佇列送印。

Q2:我限制了列印,但別人還能掃描?

正常。掃描功能通常不走 CUPS;需用廠商 App、SMB/NAS 權限、或網路防火牆來控管掃描與儲存位置。

Q3:我可否限制特定 App 不能列印?

CUPS 以使用者/群組為單位,不針對 App。若需 App 細粒度管控,偏向企業級裝置管理(MDM)策略。

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 上精準地限制印表機使用權,無論是只開放給單一帳號,或是一小群被授權的人。建議把其他使用者維持在「標準」權限、鎖定設定介面、並不定期檢查是否多出新的佇列,這些都是防止被繞過的關鍵。當你把流程跑順一次,之後換機或加新佇列,只要照本文的小抄快速重做即可。

下一篇:ChatGPT為什麼那麼便宜?

創作者介紹
創作者 小黃老師嘿技術 的頭像
小黃老師

小黃老師嘿技術

小黃老師 發表在 痞客邦 留言(0) 人氣( 52 )