Talkd and the talk command

From ArchWiki
Revision as of 16:32, 2 November 2013 by Snakeroot (Talk | contribs) (Alternate method that avoids the necessity of xinetd.)

Jump to: navigation, search

The "talk" command allows you to talk to other users on the same system, which is useful if you're both SSH'd in from somewhere. Using it is very simple; to talk to someone the command is just

talk <username> <tty>

Of course, you can talk to users on another system as well:

talk <username>@<hostname> <tty>

In either case, the tty is optional. It is used if you wish to talk to a local user who is logged in more than once to indicate the appropriate terminal name. "tty" is of the form 'ttyXX', or 'pts/X'.

However, getting it working requires some setup.

1. First, install the inetutils package, which contains talk and talkd. These also rely on xinetd, so install that as well. You might also need the screen command; it's in the screen package.

pacman -S inetutils xinetd screen

2. Configure the xinetd service entry in /etc/xinetd.d/talk by setting "disable = no" in /etc/xinetd.d/talk.

3. If you are using tcp_wrappers or something similar, Add an allow entry like this:

talkd: 127.0.0.1

4. Now start xinetd:

systemctl start xinetd.service

5. If you're on the local system, you might need to start a screen session to make yourself show up on the "w" and "who" commands -- you need to show up there or talk won't work.

6. Allow write access in your terminal:

mesg y

Talk should work now.

You can also use systemd sockets instead of installing xinetd.

First, copy the following as /etc/systemd/system/talkd.service:

# Adapted from original by Zbigniew Jedrzejewski-Szmek; see RedHat Bug 737219

[Unit]
Description=Talk Server
Documentation=man:talk(1) info:talk
Requires=talkd.socket

[Service]
User=nobody
Group=tty
ExecStart=/usr/sbin/talkd
StandardInput=socket

[Install]
Also=talk.socket

Second, copy the following as /etc/systemd/system/talkd.socket:

# Adapted from original by Zbigniew Jedrzejewski-Szmek; see RedHat Bug 737219

[Unit]
Description=Talk Server Activation Socket
Documentation=man:talk(1) info:talk

[Socket]
ListenDatagram=0.0.0.0:518

[Install]
WantedBy=sockets.target

Third, activate the talkd daemon:

$ sudo systemctl start talkd

Now, the Lennart is strong in you!