mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 11:31:16 +00:00
Currently we request a login shell by passing the -l argument to the shell. This is either hardcoded, or required to be specified by the user in the virt-login-shell.conf file. The standard way for login programs to request a shell run as a login shell is to modify the argv passed to execve() so that argv[0] contains the relative shell filename prefixed with a zero. eg instead of doing const char **shellargs = ["/bin/bash", "-l", NULL]; execve(shellargs[0], shellargs, env); We should be doing const char **shellargs = ["-bash", NULL]; execve("/bin/bash", shellargs, env); Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
106 lines
2.7 KiB
Plaintext
106 lines
2.7 KiB
Plaintext
=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" ]
|
|
|
|
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<http://libvirt.org/contact.html> or bug tracker
|
|
L<http://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<http://www.libvirt.org/>
|
|
|
|
=cut
|