web-dev-qa-db-ja.com

スキャンは「Sudo」(Ubuntu)でのみ機能します

シンプルスキャンを使用してスキャンしようとすると、UIにFailed to scan -- Unable to connect to scanner。コマンドラインから実行すると、次のようになります。

joel@home:/usr/bin$ simple-scan -d
** (simple-scan:6554): DEBUG: Starting Simple Scan 2.32.0.1, PID=6554
** (simple-scan:6554): DEBUG: Restoring window to 600x400 pixels
** (simple-scan:6554): DEBUG: sane_init () -> SANE_STATUS_GOOD
** (simple-scan:6554): DEBUG: SANE version 1.0.22
** (simple-scan:6554): DEBUG: Requesting redetection of scan devices
** (simple-scan:6554): DEBUG: Processing request
** (simple-scan:6554): DEBUG: Requesting scan at 300 dpi from device '(null)'
** (simple-scan:6554): DEBUG: scanner_scan ("(null)", 300, SCAN_SINGLE)
** (simple-scan:6554): DEBUG: sane_get_devices () -> SANE_STATUS_GOOD
** (simple-scan:6554): DEBUG: Device: name="brother2:bus4;dev1" vendor="Brother" model="MFC-210C" type="USB scanner"
** (simple-scan:6554): DEBUG: Processing request
** (simple-scan:6554): DEBUG: sane_open ("brother2:bus4;dev1") -> SANE_STATUS_IO_ERROR

** (simple-scan:6554): WARNING **: Unable to get open device: Error during device I/O

参考までに、私はすでに行っています:

joel@home:~$ Sudo chmod a+rwx /dev/bus/usb
joel@home:~$ Sudo chmod a+rwx /dev/bus/usb/*

Sudoの下で実行する場合:

joel@home:~$ Sudo simple-scan

できます。

Sudoなしでsimple-scanを機能させるにはどうすればよいですか?

16
JoelFan

おそらくsanedはあなたがそれに接続することを許可されているとは考えていません。詳細については、Ubuntu Scanning How-toの Permissions Issues セクションを参照してください。

7
Flimzy

同様の問題が発生しました(Ubuntu 11.04-Natty Narwhal):rootとしてのスキャンは正常に機能し、ユーザーとしてのスキャン-いいえ。 scanimage -Lおよびsane-find-scanner通常のユーザーとして実行した場合でも、スキャナーを正しく検出して識別しました。 `simple-scan -dをrootとしても通常のユーザーとしても、グループ権限の欠落、ファイルまたはドライバの欠落という点で有用なものは何も表示されませんでした。

結局 このリンクは私のために働いた

解決策はこれらのファイルを編集することでした:

  • /lib/udev/rules.d/40-libsane.rules
  • /etc/udev/rules.d/55-libsane.rules

両方を編集する必要があるかどうかわからないので、説明したようにすべての変更を適用しました。非常に重要:編集後に再起動します。

5
ehw

以下を編集します。

/etc/default/saned

そして変更:

RUN_AS_USER=saned

RUN_AS_USER=root

再起動してもう一度テストします。これは機能するはずです。

2
fti

Sudo adduser YOURNONROOTUSERNAME lp

スキャナーがlpグループに属していることを確認するには:

Sudo sane-find-scanner

libusb:1:002でUSBスキャナー(vendor = 0x04f9、product = 0x02a5)が見つかりました

ls -al/dev/bus/usb/1/002

crw-rw-r-- 1ルートlp 189、11月24日12:43/dev/bus/usb/001/002

2
Lavd

この行を/etc/rc.localexit 0の前)に追加して解決しました。

chmod -R a+w /dev/bus/usb

次の2つのファイルを編集/作成します。

/etc/xinetd.d/saned

service saned 
{
socket_type = stream
server = /usr/sbin/saned
protocol = tcp
user = root
group = root
wait = no
disable = no
}

/etc/default/saned

# Defaults for the saned initscript, from sane-utils

# Set to yes to start saned
RUN=yes

# Set to the user saned should run as
RUN_AS_USER=root

その後、再起動します。

それは機能していますが、これを解決するより安全な方法を私はまだ望んでいます。

2
JoelFan

ユーザー名をlpグループに追加してから再起動する必要があります(またはSudo ldconfig)。すべてが機能しているはずです。

lsusbを実行してプリンター/スキャナーのUSBバス番号(私のものは005)を取得すると、ll /dev/bus/usb/005rootが所有者であり、lpがグループであり、両方に読み取りおよび書き込み権限があることがわかります。

0
user540188

私はまったく同じ問題を抱えていましたが、この作業は私にとって簡単でした。私は実際に私のスキャナーの問題を解決したブラザーのウェブサイトからコピーしました:

  1. 開いた /lib/udev/rules.d/40-libsane.rulesファイル。

  2. デバイスリストの最後に次の2行を追加します。 (行の前# The following rule will disable ...):

    # Brother scanners

    ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"

0
Chock CHin Li

他のすべての解決策は私のために機能しませんでした。私(Xubuntu 18.04)の問題は、ユーザーが/ dev/bus/usb /へのアクセスを許可されていないことでした。残念ながら、これを伝えるエラーメッセージは実際には表示されません。

これは、ユーザーアカウントでstrace xsane 2>&1 | grep EACCES | sort -uを実行してテストできます。 xsaneを終了すると、アクセスエラーが発生します。他のソリューションとは異なり、デバイスls -al /dev/bus/usb/001/002root:rootではなくroot:lpに属していたため、ユーザーをlpに追加しても何も起こりませんでした。

Sudo chmod -R a+w /dev/bus/usbを実行してアクセスを許可し、再試行してください。 scanimage -Lが機能するようになった場合は、再起動するたびにこれを適用する必要があります。

新しいDebian/Ubuntusでは、ファイル/etc/rc.localが存在しない可能性があるため、作成する必要があります。 chmod +x /etc/rc.localを設定し、ルートとしてファイルを開いて、以下を追加します。

#!/bin/sh -e
chmod -R a+w /dev/bus/usb
exit 0

その後、最新のUbuntu/DebianはSystemdを使用しているため、systemctl status rc-local.serviceを使用してスクリプトを確認できます。 rc.localを使用しない場合は、 this リンクを確認してください。再起動してテストします。

0
user136036

Epson EcoTank 2500でも同じ問題が発生しました。ターミナルにアクセスすると、lsusbの製品IDが見つかりました。 EcoTank 2500の場合は1105です。

その後

Open /lib/udev/rules.d/40-libsane.rules file.

次に、geditでその製品IDを検索しましたが、見つかりませんでした。だから私は下に追加しました(スペースを残してCAPSで書いたので、それを変更したのは私でした!)

# MY EPSON ECOTANK ET-2500

ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="1105", ENV{libsane_matched}="yes"

その後、40-iscan.rulesで同じことを行いました(同じフォルダーにあります)。最後に再起動しました。こんにちはpresto .... ahhhh!ここでの作業は完了です。

0
Linuxli