19 #ifndef SBUILD_SESSION_H 20 #define SBUILD_SESSION_H 22 #include <sbuild/sbuild-auth.h> 23 #include <sbuild/sbuild-chroot.h> 24 #include <sbuild/sbuild-custom-error.h> 29 #include <sys/types.h> 108 typedef std::shared_ptr<session>
ptr;
117 session (std::string
const& service,
310 bool& in_root_groups)
const;
539 struct sigaction *saved_signal,
540 void (*handler)(
int));
551 struct sigaction *saved_signal);
Command must have an absolute path.
Definition: sbuild-session.h:86
operation get_operation() const
Get the operation this session will perform.
Definition: sbuild-session.cc:251
void set_auth(auth::ptr &auth)
Set the authentication state associated with this session.
Definition: sbuild-session.cc:233
virtual void run_impl()
Run a session.
Definition: sbuild-session.cc:617
Child exited abnormally (reason unknown)
Definition: sbuild-session.h:76
std::string alias
Name used to initially identify the chroot.
Definition: sbuild-session.h:52
Run a command in an existing session.
Definition: sbuild-session.h:67
int child_status
The child exit status.
Definition: sbuild-session.h:562
Debian source builder components.
Definition: sbuild-auth-null.h:24
struct sigaction saved_sigint_signal
Signal saved while sigint handler is set.
Definition: sbuild-session.h:572
Recover an existing (but inactive) session.
Definition: sbuild-session.h:65
End a session.
Definition: sbuild-session.h:66
bool is_group_member(std::string const &groupname) const
Check group membership.
Definition: sbuild-session.cc:387
Failed to lock chroot.
Definition: sbuild-session.h:82
Shell not available.
Definition: sbuild-session.h:96
PAM error.
Definition: sbuild-session.h:93
bool force
The session force status.
Definition: sbuild-session.h:568
void clear_sighup_handler()
Restore the state of SIGHUP prior to setting the handler.
Definition: sbuild-session.cc:1524
struct sigaction saved_sighup_signal
Signal saved while sighup handler is set.
Definition: sbuild-session.h:570
sbuild::chroot::ptr chroot
Pointer to chroot object.
Definition: sbuild-session.h:54
virtual sbuild::auth::status get_auth_status() const
Check if authentication is required, taking users, groups, root-users and root-groups membership of a...
Definition: sbuild-session.cc:533
Session handler.
Definition: sbuild-session.h:46
void set_sigterm_handler()
Set the SIGTERM handler.
Definition: sbuild-session.cc:1542
Authentication handler.
Definition: sbuild-auth.h:69
virtual auth::status get_chroot_auth_status(auth::status status, chroot::ptr const &chroot) const
Check if authentication is required for a single chroot, taking users, groups, root-users and root-gr...
Definition: sbuild-session.cc:488
virtual void get_login_command(chroot::ptr &session_chroot, std::string &file, string_list &command, environment &env) const
Get the command to run a login shell.
Definition: sbuild-session.cc:932
Failed to get supplementary groups.
Definition: sbuild-session.h:88
std::map< std::string, std::string > string_map
A string map.
Definition: sbuild-types.h:44
No chroot found matching alias.
Definition: sbuild-session.h:81
Child terminated by signal.
Definition: sbuild-session.h:78
void save_termios()
Save terminal state.
Definition: sbuild-session.cc:335
std::string verbosity
Message verbosity.
Definition: sbuild-session.h:580
Container of environment variables.
Definition: sbuild-environment.h:38
Failed to get supplementary group count.
Definition: sbuild-session.h:89
auth::ptr const & get_auth() const
Get the authentication state associated with this session.
Definition: sbuild-session.cc:227
virtual void get_command(chroot::ptr &session_chroot, std::string &file, string_list &command, environment &env) const
Get the command to run.
Definition: sbuild-session.cc:918
Begin, end and run a session automatically.
Definition: sbuild-session.h:63
Chroot does not support setting a session ID.
Definition: sbuild-session.h:95
auth::ptr authstat
Authentication state.
Definition: sbuild-session.h:554
void clear_signal_handler(int signal, struct sigaction *saved_signal)
Restore the state of the signal prior to setting the handler.
Definition: sbuild-session.cc:1568
void set_operation(operation operation)
Set the operation this session will perform.
Definition: sbuild-session.cc:257
void run_child(chroot::ptr &session_chroot)
Run a command or login shell as a child process in the specified chroot.
Definition: sbuild-session.cc:1245
void set_chroots(chroot_list const &chroots)
Set the chroots to use in this session.
Definition: sbuild-session.cc:245
std::string const & get_shell_override() const
Get user-specified login shell.
Definition: sbuild-session.cc:299
string_map const & get_user_options() const
Get user options.
Definition: sbuild-session.cc:311
virtual std::string get_shell(sbuild::chroot::ptr &session_chroot) const
Get the shell to run.
Definition: sbuild-session.cc:884
void get_chroot_membership(chroot::ptr const &chroot, bool &in_users, bool &in_root_users, bool &in_groups, bool &in_root_groups) const
Get the chroot authentication properties the user is included in.
Definition: sbuild-session.cc:435
Failed to execute.
Definition: sbuild-session.h:87
Caught signal.
Definition: sbuild-session.h:98
bool lock_status
Lock status for locks acquired during chroot setup.
Definition: sbuild-session.h:560
Chroot not found.
Definition: sbuild-session.h:83
error_code
Error codes.
Definition: sbuild-session.h:71
void wait_for_child(pid_t pid, int &child_status)
Wait for a child process to complete, and check its exit status.
Definition: sbuild-session.cc:1405
virtual ~session()
The destructor.
Definition: sbuild-session.cc:222
chroot_list const & get_chroots() const
Get the chroots to use in this session.
Definition: sbuild-session.cc:239
string_map user_options
User-defined options.
Definition: sbuild-session.h:586
virtual string_list get_login_directories(sbuild::chroot::ptr &session_chroot, environment const &env) const
Get a list of directories to change to when running a login shell.
Definition: sbuild-session.cc:788
Failed to change to directory.
Definition: sbuild-session.h:73
virtual string_list get_command_directories(sbuild::chroot::ptr &session_chroot, environment const &env) const
Get a list of directories to change to when running a command Multiple directories are used as fallba...
Definition: sbuild-session.cc:823
void set_user_options(string_map const &user_options)
Set user options.
Definition: sbuild-session.cc:317
std::shared_ptr< session > ptr
A shared_ptr to a session object.
Definition: sbuild-session.h:108
bool termios_ok
Are the saved terminal settings valid?
Definition: sbuild-session.h:578
Failed to set user.
Definition: sbuild-session.h:100
std::vector< std::string > string_list
A string vector.
Definition: sbuild-types.h:38
Failed to drop root permissions.
Definition: sbuild-session.h:94
struct sigaction saved_sigterm_signal
Signal saved while sigterm handler is set.
Definition: sbuild-session.h:574
Custom error.
Definition: sbuild-custom-error.h:32
Failed to fork child.
Definition: sbuild-session.h:77
void run_chroot(chroot::ptr &session_chroot)
Run command or login shell in the specified chroot.
Definition: sbuild-session.cc:1481
bool get_preserve_environment() const
Check if the environment should be preserved in the chroot.
Definition: sbuild-session.cc:287
void set_force(bool force)
Set the force status of this session.
Definition: sbuild-session.cc:329
Failed to set supplementary groups.
Definition: sbuild-session.h:91
std::string cwd
Current working directory.
Definition: sbuild-session.h:590
void set_sighup_handler()
Set the SIGHUP handler.
Definition: sbuild-session.cc:1518
Definition: sbuild-session.h:49
custom_error< error_code > error
Exception type.
Definition: sbuild-session.h:105
Wait for child failed.
Definition: sbuild-session.h:79
operation session_operation
The session operation to perform.
Definition: sbuild-session.h:564
Failed to change root to directory.
Definition: sbuild-session.h:80
Failed to set group.
Definition: sbuild-session.h:90
setup_type
Type of setup to perform.
Definition: sbuild-chroot.h:49
std::string shell
Login shell.
Definition: sbuild-session.h:584
chroot_list chroots
The chroots to run the session operation in.
Definition: sbuild-session.h:556
status
Authentication status.
Definition: sbuild-auth.h:73
std::string session_id
The session identifier.
Definition: sbuild-session.h:566
void restore_termios()
Restore terminal state.
Definition: sbuild-session.cc:357
void set_signal_handler(int signal, struct sigaction *saved_signal, void(*handler)(int))
Set a signal handler.
Definition: sbuild-session.cc:1554
void set_session_id(std::string const &session_id)
Set the session identifier.
Definition: sbuild-session.cc:269
Common chroot data.
Definition: sbuild-chroot.h:45
Falling back to directory.
Definition: sbuild-session.h:74
std::vector< chroot_list_entry > chroot_list
A list of chroots.
Definition: sbuild-session.h:58
std::shared_ptr< auth > ptr
A shared_ptr to a auth object.
Definition: sbuild-auth.h:97
void clear_sigterm_handler()
Restore the state of SIGTERM prior to setting the handler.
Definition: sbuild-session.cc:1548
Failed to unlock chroot.
Definition: sbuild-session.h:85
Child dumped core.
Definition: sbuild-session.h:75
Falling back to shell.
Definition: sbuild-session.h:97
bool get_force() const
Get the force status of this session.
Definition: sbuild-session.cc:323
std::string const & get_verbosity() const
Get the message verbosity.
Definition: sbuild-session.cc:275
Begin a session.
Definition: sbuild-session.h:64
void set_sigint_handler()
Set the SIGINT handler.
Definition: sbuild-session.cc:1530
void setup_chroot(chroot::ptr &session_chroot, chroot::setup_type setup_type)
Setup a chroot.
Definition: sbuild-session.cc:1062
User switching is not permitted.
Definition: sbuild-session.h:101
int get_child_status() const
Get the exit (wait) status of the last child process to run in this session.
Definition: sbuild-session.cc:375
Setup failed.
Definition: sbuild-session.h:84
Failed to set signal handler.
Definition: sbuild-session.h:99
int chroot_status
The current chroot status.
Definition: sbuild-session.h:558
void clear_sigint_handler()
Restore the state of SIGINT prior to setting the handler.
Definition: sbuild-session.cc:1536
std::shared_ptr< chroot > ptr
A shared_ptr to a chroot object.
Definition: sbuild-chroot.h:105
void set_shell_override(std::string const &shell)
Set user-specified login shell.
Definition: sbuild-session.cc:305
session(std::string const &service, operation operation, chroot_list const &chroots)
The constructor.
Definition: sbuild-session.cc:192
void run()
Run a session.
Definition: sbuild-session.cc:562
void set_preserve_environment(bool preserve_environment)
Set if the environment should be preserved in the chroot.
Definition: sbuild-session.cc:293
virtual string_list get_shells(sbuild::chroot::ptr &session_chroot) const
Get a list of candidate shells to run.
Definition: sbuild-session.cc:840
operation
Session operations.
Definition: sbuild-session.h:61
Group not found.
Definition: sbuild-session.h:92
void set_verbosity(std::string const &verbosity)
Set the message verbosity.
Definition: sbuild-session.cc:281
virtual void get_user_command(chroot::ptr &session_chroot, std::string &file, string_list &command, environment const &env) const
Get the command to run a user command.
Definition: sbuild-session.cc:1018
std::string const & get_session_id() const
Get the session identifier.
Definition: sbuild-session.cc:263
bool preserve_environment
Preserve environment?
Definition: sbuild-session.h:582
struct termios saved_termios
Saved terminal settings.
Definition: sbuild-session.h:576