| Server IP : 85.214.143.32 / Your IP : 216.73.216.40 Web Server : nginx/1.24.0 System : Linux datensicherung.webdress.site 6.8.0-139-generic #139-Ubuntu SMP PREEMPT_DYNAMIC Sat Aug 1 03:52:05 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/include/dovecot/ |
Upload File : |
#ifndef RESTRICT_ACCESS_H
#define RESTRICT_ACCESS_H
enum restrict_access_flags {
/* If flags given to restrict_access() include
* RESTRICT_ACCESS_FLAG_ALLOW_ROOT, we won't kill
* ourself when we have root privileges. */
RESTRICT_ACCESS_FLAG_ALLOW_ROOT = 1,
};
struct restrict_access_settings {
/* UID to use, or (uid_t)-1 if you don't want to change it */
uid_t uid;
/* Effective GID to use, or (gid_t)-1 if you don't want to change it */
gid_t gid;
/* If not (gid_t)-1, the privileged GID can be temporarily
enabled/disabled. */
gid_t privileged_gid;
/* Add access to these space or comma -separated extra groups */
const char *extra_groups;
/* Add access to groups this system user belongs to */
const char *system_groups_user;
/* All specified GIDs must be in this range. If extra_groups or system
group user contains other GIDs, they're silently dropped. */
gid_t first_valid_gid, last_valid_gid;
/* Human readable "source" of UID and GID values. If non-NULL,
displayed on error messages about failing to change uid/gid. */
const char *uid_source, *gid_source;
/* Chroot directory */
const char *chroot_dir;
/* Allow running in setuid-root mode, where real UID is root and
* effective UID is non-root. By default the real UID is changed
* to be the same as the effective UID. */
bool allow_setuid_root;
};
/* Initialize settings with values that don't change anything. */
void restrict_access_init(struct restrict_access_settings *set);
/* Restrict access as specified by the settings. If home is not NULL,
it's chdir()ed after chrooting, otherwise it chdirs to / (the chroot). */
void restrict_access(const struct restrict_access_settings *set,
enum restrict_access_flags flags, const char *home)
ATTR_NULL(3);
/* Set environment variables so they can be read with
restrict_access_by_env(). */
void restrict_access_set_env(const struct restrict_access_settings *set);
/* Read restrict_access_set_env() environments back into struct. */
void restrict_access_get_env(struct restrict_access_settings *set_r);
/* Read restrictions from environment and call restrict_access().
If flags do not include RESTRICT_ACCESS_FLAG_ALLOW_ROOT, we'll kill ourself
unless the RESTRICT_* environments caused root privileges to be dropped */
void restrict_access_by_env(enum restrict_access_flags flags,
const char *home) ATTR_NULL(2);
/* Return the chrooted directory if restrict_access*() chrooted,
otherwise NULL. */
const char *restrict_access_get_current_chroot(void);
/*
Checks if PR_SET_DUMPABLE environment variable is set, and if it is,
calls restrict_access_set_dumpable(allow).
*/
void restrict_access_allow_coredumps(bool allow);
/* Sets process dumpable true or false. Setting this true allows core dumping,
reading /proc/self/io, attaching with PTRACE_ATTACH, and also changes
ownership of /proc/[pid] directory. */
void restrict_access_set_dumpable(bool allow);
/* Gets process dumpability, returns TRUE if not supported, because
we then assume that constraint is not present. */
bool restrict_access_get_dumpable(void);
/* If privileged_gid was set, these functions can be used to temporarily
gain access to the group. */
int restrict_access_use_priv_gid(void);
void restrict_access_drop_priv_gid(void);
/* Returns TRUE if privileged GID exists for this process. */
bool restrict_access_have_priv_gid(void);
gid_t *restrict_get_groups_list(unsigned int *gid_count_r);
void restrict_access_deinit(void);
#endif