saned.8



saned(8)                 SANE Scanner Access Now Easy                 saned(8)


NAME

       saned - SANE network daemon


SYNOPSIS

       saned  [ -a [ username ] ] [ -u username ] [ -b address ] [ -p port ] [
       -l ] [ -D ] [ -o ] [ -d n ] [ -e ] [ -h ]


DESCRIPTION

       saned is the SANE (Scanner Access Now Easy) daemon that  allows  remote
       clients  to  access  image  acquisition  devices available on the local
       host.


OPTIONS

       saned recognises the following options:

       -a [username], --alone[=username]
              is equivalent to the combination of -l -D -u  username  options.
              However,  username is optional and running user will only be set
              when specified.

       -u username, --user=username
              requests that saned drop root privileges and  run  as  the  user
              (and group) associated with username after binding.

       -b address, --bind=address
              tells saned to bind to the address given.

       -p port, --port=port
              tells  saned  to  listen  on the port given.  A value of 0 tells
              saned to pick an unused port.   The  default  is  the  sane-port
              (6566).

       -l, --listen
              requests  that  saned  run  in  standalone daemon mode.  In this
              mode,  saned  will  listen  for  incoming  client   connections;
              inetd(8) is not required for saned operations in this mode.

       -D, --daemonize
              will  request  saned  to  detach from the console and run in the
              background.

       -o, --once
              requests that saned exits after the  first  client  disconnects.
              This is useful for debugging.

       -d n, --debug=n
              sets  the  level of saned debug output to n.  When compiled with
              debugging enabled, this flag may be  followed  by  a  number  to
              request  more  or  less  debug info.  The larger the number, the
              more verbose the debug output.  E.g., -d128 will request  output
              of all debug info.  A level of 0 produces no output at all.  The
              default value is 2.

       -e, --stderr
              will divert saned debug output to stderr instead of  the  syslog
              default.

       -h, --help
              displays a short help message.

       If  saned  is  run  from other programs such as inetd(8), xinetd(8) and
       systemd(1), check that program's documentation on how to pass  command-
       line options.


CONFIGURATION

       First and foremost: saned is not intended to be exposed to the internet
       or other non-trusted networks. Make sure that access is limited by tcp-
       wrappers  and/or  a  firewall  setup.  Don't depend only on saned's own
       authentication. Don't run saned as root if it's not necessary.  And  do
       not install saned as setuid root.

       The  saned.conf configuration file contains both options for the daemon
       and the access list.

       data_portrange = min_port - max_port
              Specify the port range to use for the data  connection.  Pick  a
              port  range  between 1024 and 65535; don't pick a too large port
              range, as it may have performance issues.  Use  this  option  if
              your saned server is sitting behind a firewall. If that firewall
              is a Linux machine, we strongly recommend  using  the  Netfilter
              nf_conntrack_sane module instead.

       data_connect_timeout = timeout
              Specify the time in milliseconds that saned will wait for a data
              connection. Without this option, if the data connection  is  not
              done  before  the  scanner  reaches the end of scan, the scanner
              will continue to scan past the end and may damage  it  depending
              on  the  backend.  Specify  zero  to  have the old behavior. The
              default is 4000ms.

       The access list is a list of host names, IP  addresses  or  IP  subnets
       (CIDR  notation)  that  are  permitted  to use local SANE devices. IPv6
       addresses must be enclosed in brackets, and should always be  specified
       in their compressed form. Connections from localhost are always permit-
       ted. Empty lines and lines starting with a hash mark (#) are ignored. A
       line  containing the single character ``+'' is interpreted to match any
       hostname. This allows any remote machine to use your  scanner  and  may
       present a security risk, so this shouldn't be used unless you know what
       you're doing.

       A sample configuration file is shown below:

              # Daemon options
              data_portrange = 10000 - 10100
              # Access list
              scan-client.somedomain.firm
              # this is a comment
              192.168.0.1
              192.168.2.12/29
              [::1]
              [2001:db8:185e::42:12]/64

       The case of the host names does not matter, so AHost.COM is  considered
       identical to ahost.com.


SERVER DAEMON CONFIGURATION

       For saned to work properly in its default mode of operation, it is also
       necessary to add the appropriate configuration for xinetd(8),  inetd(8)
       or  systemd(1)  (see below).  Note that your inetd(8) must support IPv6
       if you want to connect to saned over IPv6; xinetd(8),  openbsd-inetd(8)
       and  systemd(1)  are known to support IPv6, check the documentation for
       your inetd(8) daemon.

       In the sections below the configuration  for  inetd(8),  xinetd(8)  and
       systemd(1) are described in more detail.

       For  the configurations below it is necessary to add a line of the fol-
       lowing form to /etc/services:

              sane-port 6566/tcp # SANE network scanner daemon

       The official IANA short name for port 6566 is  "sane-port".  The  older
       name "sane" is now deprecated.


INETD CONFIGURATION

       It  is required to add a single line to the inetd(8) configuration file
       (/etc/inetd.conf)

       The configuration line normally looks like this:

              sane-port stream tcp  nowait  saned.saned  /usr/local/sbin/saned
              saned

       However, if your system uses tcpd(8) for additional security screening,
       you may want to disable  saned  access  control  by  putting  ``+''  in
       saned.conf  and  use  a  line  of the following form in /etc/inetd.conf
       instead:

              sane-port   stream   tcp   nowait   saned.saned   /usr/sbin/tcpd
              /usr/local/sbin/saned

       Note  that both examples assume that there is a saned group and a saned
       user.  If you follow this example, please make  sure  that  the  access
       permissions  on  the  special device are set such that saned can access
       the scanner (the program generally needs read and write access to scan-
       ner devices).


XINETD CONFIGURATION

       If  xinetd(8)  is installed on your system instead of inetd(8) the fol-
       lowing example for /etc/xinetd.conf may be helpful:

              # default: off
              # description: The sane server accepts requests
              # for network access to a local scanner via the
              # network.
              service sane-port
              {
                 port        = 6566
                 socket_type = stream
                 wait        = no
                 user        = saned
                 group       = saned
                 server      = /usr/local/sbin/saned
              }


SYSTEMD CONFIGURATION

       saned can be compiled with explicit systemd(1) support. This will allow
       logging  debugging  information to be forwarded to the systemd(1) jour-
       nal. The systemd(1) support requires compilation with the systemd-devel
       package installed on the system. This is the preferred option.

       saned  can  be  used with systemd(1) without the systemd(1) integration
       compiled in, but then logging of debug information is not supported.

       The systemd(1) configuration is different for the 2  options,  so  both
       are described below.


Systemd configuration for saned with systemd support compiled in

       For  systemd(1)  configuration  we need to add 2 configuration files in
       /etc/systemd/system.

       The first file we need to add here is called  saned.socket.   It  shall
       have the following contents:

              [Unit]
              Description=saned incoming socket

              [Socket]
              ListenStream=6566
              Accept=yes
              MaxConnections=1

              [Install]
              WantedBy=sockets.target

       The  second  file to be added is saned@.service with the following con-
       tents:

              [Unit]
              Description=Scanner Service
              Requires=saned.socket

              [Service]
              ExecStart=/usr/sbin/saned
              User=saned
              Group=saned
              StandardInput=null
              StandardOutput=syslog
              StandardError=syslog
              Environment=SANE_CONFIG_DIR=/usr/local/etc/sane.d
              # If you need to debug your configuration uncomment the next line and
              # change it as appropriate to set the desired debug options
              # Environment=SANE_DEBUG_DLL=255 SANE_DEBUG_BJNP=5

              [Install]
              Also=saned.socket

       You need to set an environment variable for SANE_CONFIG_DIR pointing to
       the  directory  where saned can find its configuration files.  You will
       have to remove the # on the last line and set  the  variables  for  the
       desired  debugging  information if required.  Multiple variables can be
       set by separating the assignments by spaces as  shown  in  the  example
       above.

       Unlike  xinetd(8) and inetd(8), systemd(1) allows debugging output from
       backends set using SANE_DEBUG_XXX to be captured. See the man-page  for
       your backend to see what options are  supported.  With the service unit
       as described above, the debugging output is  forwarded  to  the  system
       log.


Systemd configuration when saned is compiled without systemd support

       This  configuration  will  also  work  when saned is compiled WITH sys-
       temd(1) integration support, but it does not allow  debugging  informa-
       tion to be logged.

       For  systemd(1) configuration for saned, we need to add 2 configuration
       files in /etc/systemd/system.

       The first file we need to add here is called saned.socket.  It is iden-
       tical  to  the version for systemd(1) with the support compiled in.  It
       shall have the following contents:

              [Unit]
              Description=saned incoming socket

              [Socket]
              ListenStream=6566
              Accept=yes
              MaxConnections=1

              [Install]
              WantedBy=sockets.target

       The second file to be added is saned@.service.  This one  differs  from
       the version with systemd(1) integration compiled in:

              [Unit]
              Description=Scanner Service
              Requires=saned.socket

              [Service]
              ExecStart=/usr/sbin/saned
              User=saned
              Group=saned
              StandardInput=socket

              Environment=SANE_CONFIG_DIR=/etc/sane.d

              [Install]
              Also=saned.socket


FILES

       /etc/hosts.equiv
              The  hosts listed in this file are permitted to access all local
              SANE devices.  Caveat: this file imposes serious security  risks
              and its use is not recommended.

       /usr/local/etc/sane.d/saned.conf
              Contains  a list of hosts permitted to access local SANE devices
              (see also description of SANE_CONFIG_DIR below).

       /usr/local/etc/sane.d/saned.users
              If this file contains lines of the form

              user:password:backend

              access to the listed backends is restricted. A  backend  may  be
              listed  multiple times for different user/password combinations.
              The server uses MD5 hashing if supported by the client.


ENVIRONMENT

       SANE_CONFIG_DIR
              This environment variable specifies the list of directories that
              may contain the configuration file.  On *NIX systems, the direc-
              tories are separated by a colon (`:'), under OS/2, they are sep-
              arated  by a semi-colon (`;').  If this variable is not set, the
              configuration file  is  searched  in  two  default  directories:
              first,   the   current  working  directory  (".")  and  then  in
              /usr/local/etc/sane.d.  If the value of the environment variable
              ends  with  the  directory separator character, then the default
              directories are searched after the explicitly specified directo-
              ries.   For  example,  setting SANE_CONFIG_DIR to "/tmp/config:"
              would    result    in    directories    tmp/config,    .,    and
              /usr/local/etc/sane.d being searched (in this order).


SEE ALSO

       sane(7),    scanimage(1),    xscanimage(1),    xcam(1),    sane-dll(5),
       sane-net(5), sane-"backendname"(5), inetd(8), xinetd(8), systemd(1)
       http://www.penguin-breeder.org/?page=sane-net


AUTHOR

       David Mosberger

                                  29 Sep 2017                         saned(8)

Man(1) output converted with man2html