=head1 NAME

virt-login-shell - tool to execute a shell within a container matching the users name

=head1 SYNOPSIS

B<virt-login-shell> [I<OPTION>]

=head1 DESCRIPTION

The B<virt-login-shell> program is a setuid shell that is used to join
an LXC container that matches the user's name.  If the container is not
running, virt-login-shell will attempt to start the container.
virt-login-shell is not allowed to be run by root.  Normal users will get
added to a container that matches their username, if it exists, and they are
configured in /etc/libvirt/virt-login-shell.conf.

The basic structure of most virt-login-shell usage is:

  virt-login-shell

=head1 OPTIONS

=over

=item B<-c CMD>

Instruct the shell to run CMD instead of presenting an
interactive shell prompt.

=item B<-h, --help>

Display command line help usage then exit.

=item B<-V, --version>

Display version information then exit.

=back

=head1 CONFIG

By default, virt-login-shell will execute the /bin/sh program for the user.
You can modify this behaviour by defining the shell variable in
/etc/libvirt/virt-login-shell.conf.

eg.  shell = [ "/bin/bash" ]

If the 'auto_shell' config option is set then it will attempt to automatically
detect the shell from /etc/password inside the container. This should only be
done if the container has a separate /etc directory from the host, otherwise
it will end up recursively invoking virt-login-shell.

eg. auto_shell = 1

By default no users are allowed to use virt-login-shell, if you want to allow
certain users to use virt-login-shell, you need to modify the allowed_users
variable in /etc/libvirt/virt-login-shell.conf.

eg. allowed_users = [ "tom", "dick", "harry" ]

=head1 EXIT STATUS

B<virt-login-shell> normally returns the exit status of the command it
executed. If the command was killed by a signal, but that signal is not
fatal to virt-login-shell, then it returns the signal number plus 128.

Exit status generated by B<virt-login-shell> itself:

=over 4

=item B<0> An option was used to learn more about this binary.

=item B<125> Generic error before attempting execution of the configured
shell; for example, if libvirtd is not running.

=item B<126> The configured shell exists but could not be executed.

=item B<127> The configured shell could not be found.

=back

=head1 BUGS

Report any bugs discovered to the libvirt community via the mailing
list L<https://libvirt.org/contact.html> or bug tracker
L<https://libvirt.org/bugs.html>.
Alternatively report bugs to your software distributor / vendor.

=head1 AUTHORS

  Please refer to the AUTHORS file distributed with libvirt.

  Daniel Walsh <dwalsh at redhat dot com>

=head1 COPYRIGHT

Copyright (C) 2013-2014 Red Hat, Inc., and the authors listed in the
libvirt AUTHORS file.

=head1 LICENSE

virt-login-shell is distributed under the terms of the GNU LGPL v2+.
This is free software; see the source for copying conditions. There
is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE

=head1 SEE ALSO

L<virsh(1)>, L<https://libvirt.org/>

=cut
