HOWTO Snoop terminal session

From Gentoo Linux Wiki

Jump to: navigation, search
This article is part of the HOWTO series.
Installation Kernel & Hardware Networks Portage Software System X Server Gaming Non-x86 Emulators Misc

Contents

[edit] Introduction

If you would like to show someone your terminal session, for example someone on irc wanted to help you to solve a problem, but you don't want to bother yourself pasting the output from terminal, this article will try to help you.

[edit] Script

Script makes a typescript of everything printed on your terminal.

[edit] Create shell

We will create a secure "shell" for the user that would only open terminal and allow everyone to write to it

File: /usr/local/bin/snoopsh
#!/bin/rbash
chmod a+w `tty`
sleep 3600
# chmod 775 /usr/local/bin/snoopsh

The shell will be closed after an hour (3600 seconds) or if the user presses ctrl-c.

Now you must add the shell to /etc/shells

# echo /usr/local/bin/snoopsh >> /etc/shells

[edit] Create user

Create a user (Ex. snoopy)

# useradd -m snoopy

Set password for the user

# passwd snoopy
New UNIX password: 
Retype new UNIX password:

Set the shell for the user

# usermod -s /usr/local/bin/snoopsh snoopy

[edit] Session

Give the password to the user and wait until he logs in.

# w snoopy
 11:17:14 up  3:23,  6 users,  load average: 1,88, 1,82, 1,90
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
snoopy   pts/6     11:16   37.00s  0.00s  0.00s /bin/rbash /usr/local/bin/snoopsh

You can now lock the account, which will prevent future logins

# passwd -l snoopy

To unlock the account type

# passwd -u snoopy

Use script to send all output from current terminal to guests terminal

# script -f /dev/pts/6
Script started, file is /dev/pts/6

The -f option flushes the outout, so snoopy sees every character you type instantly.

To stop the output type exit

# exit
exit
Script done, file is /dev/pts/6

To force users logout type

# killall snoopsh

[edit] Screen

Using Screen in multiuser mode requires screen to be as setuid root. If you know about the potential security implications you can enable it by issuing

# chmod u+s `which screen`

[edit] Multiuser mode

We need to configure screen to use multiuser mode and change privileges for the guest. Put the following commands into ~/.screenrc. You can also use them in a screen session after pressing CTRL-a :

multiuser on
aclchg snoopy -x "?"    #Revoke permission to execute any screen command
aclchg snoopy +x "wall" #Allow writing simple messages in the terminal status line
aclumask snoopy-wx      #Default permissions to windows
acladd snoopy           #Enable user snoopy to access screen session

See man screen for details.

[edit] Session

Start screen:

user@localhost $ screen
user@localhost $ screen -ls
There is a screen on:
        11521.pts-4.hostname      (Multi, attached)
1 Socket in /var/run/screen/S-user.

Now the guest can attach to the screen:

snoopy@localhost $ screen -r user/11521

[edit] See also

Personal tools