- root
Root is (typically) the superuser.
- daemon
Some unprivileged daemons that need to be able to write to some
files on disk run as daemon.daemon (portmap,
atd, lambdamoo,
mon, and others). Daemons that don't need to
own any files sometimes run as nobody.nogroup instead; it is
generally better practice to use a dedicated user, and more
complex or security-conscious daemons certainly do this. The
daemon user is also handy for locally installed daemons,
probably.
LSB 1.3 lists daemon as legacy, and says: "The 'daemon' UID/GID
was used as an unprivileged UID/GID for daemons to execute under
in order to limit their access to the system. Generally daemons
should now run under individual UID/GIDs in order to further
partition daemons from one another."
- bin
HELP: No files on my system are owned by user or group bin. What
good are they? Historically they were probably the owners of
binaries in /bin? It is not mentioned in
the FHS, Debian Policy, or the changelogs of base-passwd or
base-files.
LSB 1.3 lists bin as legacy, and says: "The 'bin' UID/GID is
included for compatibility with legacy applications. New
applications should no longer use the 'bin' UID/GID."
- sys
Historically, the sys user and group
owned the
kernel sources and some related items like the include
files, but this was obsoleted long ago in favour of bin
(now itself legacy; see above).
- sync
The shell of user sync is /bin/sync. Thus,
if its password is set to something easy to guess (such as ""),
anyone can sync the system at the console even if they have no
account on the system.
- games
Many games are sgid to games so they can write their high score
files. This is explained in Debian Policy.
- man
The man program (sometimes) runs as user man,
so it can write cat pages to /var/cache/man
and update its databases there.
- lp
The lp* devices are writable by this group
so that users in it can access the parallel ports directly.
Traditionally this job is taken by a printer daemon instead
which will only need to run in this group.
The lpr system keeps its spool directories
owned by lp/lp. Its daemon and frontend tools (through setuid)
run as user root.
HELP: what do other print systems (rlpr,
lprng, ...) do?
- mail
Mailboxes in /var/mail are owned and
writable by group mail, as is explained in Debian Policy. The
user and group is used for other purposes as well by various
MTAs and MUAs.
- news
Various news servers and other associated programs (such as
suck) use user and group news in various
ways. Files in the news spool are often owned by user and group
news. Programs such as inews that can be used
to post news are typically sgid news.
- uucp
The uucp user and group is used by the UUCP subsystem. It owns
spool and configuration files. Users in the uucp group may run
uucico.
- proxy
Like daemon, this user and group is used by some daemons
(specifically, proxy daemons) that don't have dedicated user ids
and that need to own files. For example, group proxy is used by
pdnsd, and squid runs as
user proxy.
- majordom
Majordomo has a statically allocated uid on Debian systems for
historical reasons. It is not installed on new systems.
- postgres
Postgresql databases are owned by this user and group.
- www-data
Some web servers run as www-data. Web content should
not be owned by this user, or a compromised
web server would be able to rewrite a web site. Data written out
by web servers will be owned by www-data.
- backup
Presumably so backup/restore responsibilities can be locally
delegated to someone without full root permissions?
HELP: Is that right? Amanda reportedly uses this, details?
- operator
Historically, the operator user account was used by system
operators with low privilege to dump filesystem backups to tape,
and was in the root group so that it could do this. In Debian,
the use of a utility such as sudo to gain
privilege is preferred over such highly-special-purpose
accounts, and the operator user is no longer created by default.
It had uid 37.
The operator group is used by dump -n to
notify logged-in operators via wall when it
requires operator attention. This is a historical use, and new
applications should not behave this way. (If nothing else, the
group should be configurable.)
- list
Mailing list archives and data are owned by this user and group.
Some mailing list programs may run as this user as well.
- irc
Used by IRC daemons. A statically allocated user is needed only
because of a bug in ircd: it
setuid()
s itself to a compiled-in user id
on startup.
- gnats
Used by gnats. This had a statically
allocated user and group for purely historical reasons (it could
equally well use a dynamic system user and group). Since
gnats has been removed from Debian, this user
and group are no longer created by default; they had uid/gid 41.
- nobody, nogroup
Daemons that need not own any files sometimes run as user nobody
and group nogroup, although using a dedicated user is far
preferable. Thus, no files on a system should be owned by this
user or group.
(Technically speaking, it does no harm for a file to be owned by
group nogroup as long as the ownership confers no additional
privileges, that is if the group and other permission bits are
equal. However, this is sloppy practice and should be avoided.)
If root-squashing is in use over NFS, root access from the
client is performed as user nobody on the server.
- messagebus
The dbus daemon (dbus-daemon-1) runs as this
user and group.
- postfix
Used by the postfix MTA.
- gdm
GDM (GNOME Display Manager) runs as this user/group.
- saned
Added by sane-utils, but appear to be unused.
- klog
Used by klogd, the kernel logger.
- syslog
Used by syslog, the general purpose logger.