core: reuse the same /tmp, /var/tmp and inaccessible dir

All Execs within the service, will get mounted the same
/tmp and /var/tmp directories, if service is configured with
PrivateTmp=yes. Temporary directories are cleaned up by service
itself in addition to systemd-tmpfiles. Directory which is mounted
as inaccessible is created at runtime in /run/systemd.
This commit is contained in:
Michal Sekletar
2013-03-15 22:56:40 -04:00
committed by Zbigniew Jędrzejewski-Szmek
parent 3b953d68c6
commit c17ec25e4d
15 changed files with 307 additions and 155 deletions
+8 -2
View File
@@ -36,6 +36,8 @@ typedef struct ExecContext ExecContext;
struct CGroupBonding;
struct CGroupAttribute;
typedef struct Unit Unit;
#include "list.h"
#include "util.h"
@@ -141,6 +143,8 @@ struct ExecContext {
bool non_blocking;
bool private_tmp;
bool private_network;
char *tmp_dir;
char *var_tmp_dir;
bool no_new_privileges;
@@ -164,7 +168,7 @@ struct ExecContext {
int exec_spawn(ExecCommand *command,
char **argv,
const ExecContext *context,
ExecContext *context,
int fds[], unsigned n_fds,
char **environment,
bool apply_permissions,
@@ -192,13 +196,15 @@ void exec_command_append_list(ExecCommand **l, ExecCommand *e);
int exec_command_set(ExecCommand *c, const char *path, ...);
void exec_context_init(ExecContext *c);
void exec_context_done(ExecContext *c);
void exec_context_done(ExecContext *c, bool reloading_or_reexecuting);
void exec_context_tmp_dirs_done(ExecContext *c);
void exec_context_dump(ExecContext *c, FILE* f, const char *prefix);
void exec_context_tty_reset(const ExecContext *context);
int exec_context_load_environment(const ExecContext *c, char ***l);
bool exec_context_may_touch_console(ExecContext *c);
void exec_context_serialize(const ExecContext *c, Unit *u, FILE *f);
void exec_status_start(ExecStatus *s, pid_t pid);
void exec_status_exit(ExecStatus *s, ExecContext *context, pid_t pid, int code, int status);