rootd man page

rootd — The ROOT file server daemon


rootd [options]


This manual page documents briefly the rootd program.

rootd is a ROOT remote file server daemon.

This small server is started either by inetd(8) (or xinetd(8)) when a client requests a connection to a  rootd server or by hand (i.e. from the command line). The  rootd server works with the ROOT TNetFile, TFTP and TNetSystem classes. It allows access to remote directories and ROOT files in either read or write mode from any ROOT interactive session. By default rootd listens on port 1094, assigned to it by IANA.

Starting Via (X)Inetd

To run rootd via inetd(8) or xinetd(8) the port 1094 must be assigned to rootd in /etc/services; the following line should be added, if not present:

rootd     1094/tcp

If the system uses inetd, add the following line to /etc/inetd.conf:

rootd stream tcp nowait root <bindir>/rootd rootd -i

where <bindir> is the directory you have installed rootd in.

The inetd(8) daemon must re-read its configuration file to become aware of the new service. This can be done either by killing and restarting it manually

kill -HUP <pid inetd>

or, if SYSV init(8) scripts are used, by restarting it, e.g.

/etc/init.d/inetd restart

If the system uses xinetd(8) instead, a file named 'rootd' should be created under /etc/xinetd.d with content:

# default: off
# description: The rootd daemon
service rootd
     disable         = no
     flags           = REUSE
     socket_type     = stream
     wait            = no
     user            = root
     server          = <bindir>/rootd
     server_args     = -i

where, again, <bindir> is the directory you have installed rootd in.

The xinetd(8) daemon must be restarted:

/sbin/service xinetd restart

If you installed ROOT using some pre-compiled package (for example a Redhat Linux or a Debian GNU/Linux package), this may already be done for you.

The above configuration examples start the daemon with superuser privileges. Please refer to the inetd(8) or xinetd(8) documentation for ways of limiting the privileges.

Starting by Hand

You can also start rootd by hand running directly under your private account (no root system privileges needed). For example to start rootd listening on port 5151 just type:

rootd -p 5151

Notice: no & is needed rootd will go in background by itself.

Anonymous Logins

rootd can also be configured for anonymous usage (like anonymous ftp). To setup rootd to accept anonymous logins do the following (while being logged in as root):


Add the following line to /etc/passwd:

rootd:*:71:72:Anonymous rootd:/var/spool/rootd:/bin/false

where you may modify the uid, gid (71, 72) and the home directory to suite your system.


Add the following line to /etc/group:


where the gid must match the gid in /etc/passwd


Create the directories:

mkdir /var/spool/rootd/tmp
chmod 777 /var/spool/rootd/tmp

Where /var/spool/rootd must match the rootd home directory as specified in the rootd /etc/passwd entry.


To make writable directories for anonymous do, for example:

mkdir /var/spool/rootd/pub
chown rootd:rootd /var/spool/rootd/pub

That's all.

If you installed ROOT using some pre-compiled package (for example a Redhat Linux or a Debian GNU/Linux package), this may already be done for you.

Several remarks:

About Password Authentication

In system using shadow passwords, full access to the password field of the user information structure requires special privileges; this is typically granted if rootd is started by inetd(8) or xinetd(8), as the in above examples. If the daemon is started in unprivileged mode, either from a regular account or by (x)inetd with reduced privileges, password-based authentication require users to create a file $HOME/.rootdpass containing an encrypted password (using crypt(3)). The system tests the existence of this file before checking the system password files. An encrypted password can be created in the following way:

perl -e '$pw = crypt("<secretpasswd>","salt"); print "$pw0'

storing the output string in $HOME/.rootdpass .

If the $HOME/.rootdpass does not exists and the system password file cannot be accessed, rootd attempts to run the authentication via an sshd(8) daemon.


-b <tcpwindowsize>

specifies the tcp window size in bytes (e.g. see Default is 65535. Only change default for pipes with a high bandwidth*delay product.

-d <level>

level of debug info written to syslogd 0 = no debug (default), 1 = minimum, 2 = medium, 3 = maximum.

-D <rootdaemonrc>

read access rules from file <rootdaemonrc>. By default <root_etc_dir>/system.rootdaemonrc is used for access rules; for privately started daemons $HOME/.rootdaemonrc (if present) is read first.


run in the foreground (output on the window); useful for debugging purposes.


indicates that rootd was started by inetd(8) or xinetd(8).


do not require client authentication

-p <port#>[-<port2#>]

specifies the port number to listen on. Use port-port2 to find the first available port in the indicated range. Use 0-N for range relative to default service port.


files can only be opened in read-only mode

-s <sshd_port#>

specifies the port number for the sshd daemon used for authentication (default is 22).

-T <tmpdir>

specifies the directory path to be used to place temporary files; default is /usr/tmp. Useful when running with limited privileges.


do not check /etc/hosts.equiv, $HOME/.rhosts for password-based authentication; by default these files are checked first by calling ruserok(...); if this option is specified a password is always required.

See Also

root(1), proofd(1), system.rootdaemonrc(1)

For more information on the ROOT system, please refer to

Original Authors

The ROOT team (see web page above):

Rene Brun and Fons Rademakers


This manual page was originally written by Christian Holm Christensen <>, for the Debian GNU/Linux system and ROOT version 3. It has been modified by G. Ganis <> to document new features included in ROOT version 4.

Referenced By

proofd(1), proofserv(1), root(1), ssh2rpd(1), system.rootdaemonrc(1), xproofd(1).

Version 4 ROOT