Ubuntuマシンに接続したプリンターをネットワーク共有しようとすると、大きな問題が発生します(ネットワーク上の残りのマシンはすべてWindowsのさまざまなバージョンです)。私はSAMBAを使用して、いくつかの進歩を遂げてきました。Windowsマシンから「プリンターの追加」を行おうとすると、ネットワーク検索を行っているときに実際に表示されます。ただし、Windowsは常にドライバーを要求し(「プリンターのサーバーに正しいプリンタードライバーがインストールされていません...」)、それを選択すると、「Windowsがプリンターに接続できません。名前を正しく入力したことを確認してください...」
私はいくつかの調査を行ったところ、多くの場合、これは「正しく名前が付けられていない」プリンターが原因であることがわかりました。enumprintersを使用すると、適切な名前の代わりに\ LOCALHOSTが使用されます。推奨される修正は、setprintername(rpcclient)を使用してプリンターの名前を変更することです。ただし、これはできません。常にWERR_ACCESS_DENIEDエラーが発生します。
THATの問題の修正に関する追加の調査では、適切な特権を自分に「付与」することを示唆しています(SePrintOperatorPrivileges、使用net ... user ... rpc rights grant)...しかし、私はできませんそれを行う:「[ユーザー]の特権に失敗しました(NT_STATUS_ACCESS_DENIED)」というメッセージが表示されます。何が欠けていますか?これは私にとって重要な機能なので、どんな助けにも感謝します。前もって感謝します!
OK、これには複数のサイト/ページからの調査が必要でした。 UbuntuとWindowsが混在する環境でSAMBAを使用したネットワーク印刷は複雑な問題になる可能性があることを発見しましたが、これで全員の問題が解決しない可能性があります...しかし、症状が同じであれば、この解決策を試すことができます(以下のすべてのコーディングでは、「computername」をコンピューター名に、「username」をUbuntuログイン名などに置き換えてください。)
Ubuntuマシンに接続されているネットワーク/共有プリンターをWindowsクライアントに追加しようとすると(Windowsマシンから印刷できるため)、上記のWindowsからのエラーメッセージ(「Windowsはプリンターに接続できません。入力したことを確認してください。名前は正しく... ")は、Ubuntuマシンによって報告されているプリンター名が正しくないことを示している可能性があります。 Windowsは、ネットワークの名前とネットワークリソースについて非常に細心の注意を払っています。ターミナルから、コマンドrpcclient localhost、次にenumprintersを使用して、次のような出力が表示される場合があります。
rpcclient $> enumprinters
フラグ:[0x800000]
名前:[\ LOCALHOST]
説明:[\ LOCALHOST\HP-SuperJet-10、HP SuperJet 10、Hewlett-Packard HP> SuperJet 10]
コメント:[Hewlett-Packard HP SuperJet 10]
名前フィールドには「\ LOCALHOST \」しか含まれていないことに注意してください...これは不完全です。プリンタ名も角かっこで囲む必要があります(この場合、「\ LOCALHOST\HP-SuperJet-10」)。
推奨される解決策は、rpcclientでコマンドsetprinternameを使用することですが、WERR_INVALID_PRINERNAMEではなくエラーWERR_ACCESS_DENIEDが発生する可能性があります。これは、ユーザーとして、システムプリンターを変更する権限がないことを示しているようです。しかし、自分に権利を与えようとする多くのリガマロール(たとえば、SePrintOperatorPrivilegesを使用)を実行し、追加のエラー(NT_STATUS_ACCESS_DENIED)を取得した後、((net rpc rights list -S Computername -U Username)そして、私はをすでに持っていることがわかりましたそれらの権利で設定されています!これが、他の問題があったことを私に知らせたものです。
私が見つけた解決策は、Samba構成ファイルの[global]セクションに行を追加することです。ターミナルウィンドウでgksu gedit /etc/samba/smb.confと入力します
追加する行は次のとおりです。
force user = username
変更を保存してgeditプログラムを閉じ、ターミナルウィンドウで必要なサービスを再起動します。
Sudoサービスsmbd再起動
sudo service nmbd restart
これで、プリンター名を変更するためのアクセス許可が有効/強制されます。 rpcclient localhostと入力して、rpcclientに戻ります。今、私が見つけた別のキャッチがあります:setprinternameコマンドの場合、プリンター名を入力する必要があるようです[〜#〜] twice [ 〜#〜] ...単に入力するsetprintername = HP-SuperJet-10が機能しませんでした。テストして再度失敗した後、rpcclientでenumprintersチェックを実行すると、プリンタ名はまだ「\ LOCALHOST \」しか表示されていませんでした。 (私はここで推測していますが、それはsetprinternameコマンドの適切な構文であるためです)。入る:
setprintername = yourprintername yourprintername
私にとって、「yourprintername」は「HP-SuperJet-10」でした。今回はenumprintersコマンドで次のように表示されます。
rpcclient $> enumprinters flags:[0x800000]
名前:[\\ LOCALHOST\HP-SuperJet-10]
説明:[\ LOCALHOST\HP-SuperJet-10、HP SuperJet 10、Hewlett-Packard HP SuperJet 10]
コメント:[Hewlett-Packard HP SuperJet 10]
名前フィールドのLOCALHOSTの末尾に追加された適切なプリンター名が表示されれば、それは完了です。この修正を適用すると、Windowsマシンから「プリンターを追加」しようとするたびに、Windowsマシンがネットワーク上のプリンターを見ることができることもわかりました。
補足:この解決策は、これまでWindows Vistaマシンでしか機能しませんでした。 Windows 7では、さまざまなエラーメッセージが表示されるようですが、ほとんどの場合、別の解決策が必要になります。幸運を祈ります!