Linux vmi2545633.contaboserver.net 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64
Apache/2.4.62 (Debian)
Server IP : 127.0.0.1 & Your IP : 127.0.0.1
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
include /
Delete
Unzip
Name
Size
Permission
Date
Action
X11
[ DIR ]
drwxr-xr-x
2021-08-18 11:00
arpa
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
asm-generic
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
c++
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
finclude
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
iproute2
[ DIR ]
drwxr-xr-x
2023-07-12 09:37
libltdl
[ DIR ]
drwxr-xr-x
2025-04-09 02:53
linux
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
misc
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
mtd
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
net
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netash
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netatalk
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netax25
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
neteconet
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netinet
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netipx
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netiucv
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netpacket
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netrom
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
netrose
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
nfs
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
node
[ DIR ]
drwxr-xr-x
2025-04-07 20:36
openssl
[ DIR ]
drwxr-xr-x
2025-04-09 02:53
php
[ DIR ]
drwxr-xr-x
2025-04-09 02:53
protocols
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
python3.11
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
rdma
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
rpc
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
rpcsvc
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
scsi
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
sound
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
tirpc
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
video
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
x86_64-linux-gnu
[ DIR ]
drwxr-xr-x
2025-04-09 02:53
xen
[ DIR ]
drwxr-xr-x
2025-04-08 16:44
aio.h
7.56
KB
-rw-r--r--
2025-03-06 22:46
aliases.h
1.98
KB
-rw-r--r--
2025-03-06 22:46
alloca.h
1.17
KB
-rw-r--r--
2025-03-06 22:46
ar.h
1.69
KB
-rw-r--r--
2025-03-06 22:46
argp.h
24.95
KB
-rw-r--r--
2025-03-06 22:46
argz.h
5.91
KB
-rw-r--r--
2025-03-06 22:46
assert.h
4.53
KB
-rw-r--r--
2025-03-06 22:46
byteswap.h
1.42
KB
-rw-r--r--
2025-03-06 22:46
clif.h
4.44
KB
-rw-r--r--
2023-02-25 12:24
complex.h
7.95
KB
-rw-r--r--
2025-03-06 22:46
cpio.h
2.21
KB
-rw-r--r--
2025-03-06 22:46
crypt.h
10.87
KB
-rw-r--r--
2023-01-06 22:57
ctype.h
10.71
KB
-rw-r--r--
2025-03-06 22:46
dirent.h
12.32
KB
-rw-r--r--
2025-03-06 22:46
dlfcn.h
8.38
KB
-rw-r--r--
2025-03-06 22:46
elf.h
180.32
KB
-rw-r--r--
2025-03-06 22:46
endian.h
2.25
KB
-rw-r--r--
2025-03-06 22:46
envz.h
2.8
KB
-rw-r--r--
2025-03-06 22:46
err.h
2.29
KB
-rw-r--r--
2025-03-06 22:46
errno.h
1.64
KB
-rw-r--r--
2025-03-06 22:46
error.h
2.36
KB
-rw-r--r--
2025-03-06 22:46
execinfo.h
1.49
KB
-rw-r--r--
2025-03-06 22:46
expat.h
42.51
KB
-rw-r--r--
2024-09-08 06:44
expat_external.h
5.89
KB
-rw-r--r--
2024-09-08 06:44
fcntl.h
9.89
KB
-rw-r--r--
2025-03-06 22:46
features-time64.h
1.38
KB
-rw-r--r--
2025-03-06 22:46
features.h
17.62
KB
-rw-r--r--
2025-03-06 22:46
fenv.h
5.65
KB
-rw-r--r--
2025-03-06 22:46
fmtmsg.h
3.16
KB
-rw-r--r--
2025-03-06 22:46
fnmatch.h
2.24
KB
-rw-r--r--
2025-03-06 22:46
fstab.h
3.04
KB
-rw-r--r--
2025-03-06 22:46
fts.h
9.35
KB
-rw-r--r--
2025-03-06 22:46
ftw.h
6.19
KB
-rw-r--r--
2025-03-06 22:46
gawkapi.h
40.72
KB
-rw-r--r--
2023-02-19 13:30
gconv.h
4.11
KB
-rw-r--r--
2025-03-06 22:46
getopt.h
1.43
KB
-rw-r--r--
2025-03-06 22:46
glob.h
7.13
KB
-rw-r--r--
2025-03-06 22:46
gnu-versions.h
2.29
KB
-rw-r--r--
2025-03-06 22:46
gnumake.h
2.84
KB
-rw-r--r--
2021-04-10 13:55
grp.h
6.69
KB
-rw-r--r--
2025-03-06 22:46
gshadow.h
4.58
KB
-rw-r--r--
2025-03-06 22:46
iconv.h
1.87
KB
-rw-r--r--
2025-03-06 22:46
ifaddrs.h
2.77
KB
-rw-r--r--
2025-03-06 22:46
inttypes.h
8.14
KB
-rw-r--r--
2025-03-06 22:46
langinfo.h
17.43
KB
-rw-r--r--
2025-03-06 22:46
lastlog.h
126
B
-rw-r--r--
2025-03-06 22:46
libgen.h
1.35
KB
-rw-r--r--
2025-03-06 22:46
libintl.h
4.47
KB
-rw-r--r--
2025-03-06 22:46
limits.h
5.57
KB
-rw-r--r--
2025-03-06 22:46
link.h
7.62
KB
-rw-r--r--
2025-03-06 22:46
locale.h
7.5
KB
-rw-r--r--
2025-03-06 22:46
ltdl.h
5.59
KB
-rw-r--r--
2024-04-09 20:04
malloc.h
5.84
KB
-rw-r--r--
2025-03-06 22:46
math.h
49.72
KB
-rw-r--r--
2025-03-06 22:46
mcheck.h
2.38
KB
-rw-r--r--
2025-03-06 22:46
memory.h
956
B
-rw-r--r--
2025-03-06 22:46
mntent.h
3.28
KB
-rw-r--r--
2025-03-06 22:46
monetary.h
1.92
KB
-rw-r--r--
2025-03-06 22:46
mqueue.h
4.5
KB
-rw-r--r--
2025-03-06 22:46
netdb.h
27.79
KB
-rw-r--r--
2025-03-06 22:46
nl_types.h
1.71
KB
-rw-r--r--
2025-03-06 22:46
nss.h
14.07
KB
-rw-r--r--
2025-03-06 22:46
obstack.h
20.81
KB
-rw-r--r--
2025-03-06 22:46
paths.h
2.91
KB
-rw-r--r--
2025-03-06 22:46
pcre2.h
46.15
KB
-rw-r--r--
2023-01-01 15:44
pcre2posix.h
7.12
KB
-rw-r--r--
2023-01-01 15:44
poll.h
22
B
-rw-r--r--
2025-03-06 22:46
printf.h
6.71
KB
-rw-r--r--
2025-03-06 22:46
proc_service.h
3.4
KB
-rw-r--r--
2025-03-06 22:46
pthread.h
47.24
KB
-rw-r--r--
2025-03-06 22:46
pty.h
1.53
KB
-rw-r--r--
2025-03-06 22:46
pwd.h
6.17
KB
-rw-r--r--
2025-03-06 22:46
re_comp.h
963
B
-rw-r--r--
2025-03-06 22:46
regex.h
25.3
KB
-rw-r--r--
2025-03-06 22:46
regexp.h
1.35
KB
-rw-r--r--
2025-03-06 22:46
resolv.h
12.02
KB
-rw-r--r--
2025-03-06 22:46
sched.h
4.92
KB
-rw-r--r--
2025-03-06 22:46
search.h
5.32
KB
-rw-r--r--
2025-03-06 22:46
semaphore.h
3.38
KB
-rw-r--r--
2025-03-06 22:46
setjmp.h
3.12
KB
-rw-r--r--
2025-03-06 22:46
sgtty.h
1.31
KB
-rw-r--r--
2025-03-06 22:46
shadow.h
5.5
KB
-rw-r--r--
2025-03-06 22:46
signal.h
12.73
KB
-rw-r--r--
2025-03-06 22:46
spawn.h
8.08
KB
-rw-r--r--
2025-03-06 22:46
stab.h
264
B
-rw-r--r--
2025-03-06 22:46
stdc-predef.h
2.4
KB
-rw-r--r--
2025-03-06 22:46
stdint.h
8.28
KB
-rw-r--r--
2025-03-06 22:46
stdio.h
30.79
KB
-rw-r--r--
2025-03-06 22:46
stdio_ext.h
2.73
KB
-rw-r--r--
2025-03-06 22:46
stdlib.h
35.96
KB
-rw-r--r--
2025-03-06 22:46
string.h
19
KB
-rw-r--r--
2025-03-06 22:46
strings.h
4.64
KB
-rw-r--r--
2025-03-06 22:46
sudo_plugin.h
11.67
KB
-rw-r--r--
2023-06-27 11:45
syscall.h
25
B
-rw-r--r--
2025-03-06 22:46
sysexits.h
5.11
KB
-rw-r--r--
2025-03-06 22:46
syslog.h
24
B
-rw-r--r--
2025-03-06 22:46
tar.h
3.66
KB
-rw-r--r--
2025-03-06 22:46
termio.h
214
B
-rw-r--r--
2025-03-06 22:46
termios.h
3.51
KB
-rw-r--r--
2025-03-06 22:46
tgmath.h
43.61
KB
-rw-r--r--
2025-03-06 22:46
thread_db.h
15.65
KB
-rw-r--r--
2025-03-06 22:46
threads.h
7.51
KB
-rw-r--r--
2025-03-06 22:46
time.h
14.74
KB
-rw-r--r--
2025-03-06 22:46
ttyent.h
2.44
KB
-rw-r--r--
2025-03-06 22:46
uchar.h
3.04
KB
-rw-r--r--
2025-03-06 22:46
ucontext.h
1.99
KB
-rw-r--r--
2025-03-06 22:46
ulimit.h
1.55
KB
-rw-r--r--
2025-03-06 22:46
unistd.h
43.91
KB
-rw-r--r--
2025-03-06 22:46
utime.h
1.86
KB
-rw-r--r--
2025-03-06 22:46
utmp.h
3.15
KB
-rw-r--r--
2025-03-06 22:46
utmpx.h
4
KB
-rw-r--r--
2025-03-06 22:46
values.h
1.91
KB
-rw-r--r--
2025-03-06 22:46
wait.h
22
B
-rw-r--r--
2025-03-06 22:46
wchar.h
31.39
KB
-rw-r--r--
2025-03-06 22:46
wctype.h
5.42
KB
-rw-r--r--
2025-03-06 22:46
wordexp.h
2.44
KB
-rw-r--r--
2025-03-06 22:46
zconf.h
16.2
KB
-rw-r--r--
2022-11-05 12:24
zlib.h
95.04
KB
-rw-r--r--
2022-11-05 12:24
Save
Rename
/* * SPDX-License-Identifier: ISC * * Copyright (c) 2009-2023 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef SUDO_PLUGIN_H #define SUDO_PLUGIN_H /* API version major/minor */ #define SUDO_API_VERSION_MAJOR 1 #define SUDO_API_VERSION_MINOR 21 #define SUDO_API_MKVERSION(x, y) (((x) << 16) | (y)) #define SUDO_API_VERSION SUDO_API_MKVERSION(SUDO_API_VERSION_MAJOR, SUDO_API_VERSION_MINOR) /* Getters and setters for plugin API versions */ #define SUDO_API_VERSION_GET_MAJOR(v) ((v) >> 16) #define SUDO_API_VERSION_GET_MINOR(v) ((v) & 0xffffU) #define SUDO_API_VERSION_SET_MAJOR(vp, n) do { \ *(vp) = (*(vp) & 0x0000ffffU) | ((n) << 16); \ } while(0) #define SUDO_API_VERSION_SET_MINOR(vp, n) do { \ *(vp) = (*(vp) & 0xffff0000U) | (n); \ } while(0) /* "plugin type" for the sudo front end, as passed to an audit plugin */ #define SUDO_FRONT_END 0 /* Conversation function types and defines */ struct sudo_conv_message { #define SUDO_CONV_PROMPT_ECHO_OFF 0x0001 /* do not echo user input */ #define SUDO_CONV_PROMPT_ECHO_ON 0x0002 /* echo user input */ #define SUDO_CONV_ERROR_MSG 0x0003 /* error message */ #define SUDO_CONV_INFO_MSG 0x0004 /* informational message */ #define SUDO_CONV_PROMPT_MASK 0x0005 /* mask user input */ #define SUDO_CONV_PROMPT_ECHO_OK 0x1000 /* flag: allow echo if no tty */ #define SUDO_CONV_PREFER_TTY 0x2000 /* flag: use tty if possible */ int msg_type; int timeout; const char *msg; }; /* * Maximum length of a reply (not including the trailing NUL) when * conversing with the user. In practical terms, this is the longest * password sudo will support. This means that a buffer of size * SUDO_CONV_REPL_MAX+1 is guaranteed to be able to hold any reply * from the conversation function. */ #define SUDO_CONV_REPL_MAX 1023 struct sudo_conv_reply { char *reply; }; /* Conversation callback API version major/minor */ #define SUDO_CONV_CALLBACK_VERSION_MAJOR 1 #define SUDO_CONV_CALLBACK_VERSION_MINOR 0 #define SUDO_CONV_CALLBACK_VERSION SUDO_API_MKVERSION(SUDO_CONV_CALLBACK_VERSION_MAJOR, SUDO_CONV_CALLBACK_VERSION_MINOR) /* * Callback struct to be passed to the conversation function. * Can be used to perform operations on suspend/resume such * as dropping/acquiring locks. */ typedef int (*sudo_conv_callback_fn_t)(int signo, void *closure); struct sudo_conv_callback { unsigned int version; void *closure; sudo_conv_callback_fn_t on_suspend; sudo_conv_callback_fn_t on_resume; }; typedef int (*sudo_conv_t)(int num_msgs, const struct sudo_conv_message msgs[], struct sudo_conv_reply replies[], struct sudo_conv_callback *callback); typedef int (*sudo_printf_t)(int msg_type, const char *fmt, ...); /* * Hooks allow a plugin to hook into specific sudo and/or libc functions. */ #if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || __GNUC__ > 4) # pragma GCC diagnostic ignored "-Wstrict-prototypes" #endif /* Hook functions typedefs. */ typedef int (*sudo_hook_fn_t)(); typedef int (*sudo_hook_fn_setenv_t)(const char *name, const char *value, int overwrite, void *closure); typedef int (*sudo_hook_fn_putenv_t)(char *string, void *closure); typedef int (*sudo_hook_fn_getenv_t)(const char *name, char **value, void *closure); typedef int (*sudo_hook_fn_unsetenv_t)(const char *name, void *closure); /* Hook structure definition. */ struct sudo_hook { unsigned int hook_version; unsigned int hook_type; sudo_hook_fn_t hook_fn; void *closure; }; /* Hook API version major/minor */ #define SUDO_HOOK_VERSION_MAJOR 1 #define SUDO_HOOK_VERSION_MINOR 0 #define SUDO_HOOK_VERSION SUDO_API_MKVERSION(SUDO_HOOK_VERSION_MAJOR, SUDO_HOOK_VERSION_MINOR) /* * Hook function return values. */ #define SUDO_HOOK_RET_ERROR -1 /* error */ #define SUDO_HOOK_RET_NEXT 0 /* go to the next hook in the list */ #define SUDO_HOOK_RET_STOP 1 /* stop hook processing for this type */ /* * Hooks for setenv/unsetenv/putenv/getenv. * This allows the plugin to be notified when a PAM module modifies * the environment so it can update the copy of the environment that * is passed to execve(). */ #define SUDO_HOOK_SETENV 1 #define SUDO_HOOK_UNSETENV 2 #define SUDO_HOOK_PUTENV 3 #define SUDO_HOOK_GETENV 4 /* * Plugin interface to sudo's main event loop. */ typedef void (*sudo_plugin_ev_callback_t)(int fd, int what, void *closure); struct timespec; struct sudo_plugin_event { int (*set)(struct sudo_plugin_event *pev, int fd, int events, sudo_plugin_ev_callback_t callback, void *closure); int (*add)(struct sudo_plugin_event *pev, struct timespec *timeout); int (*del)(struct sudo_plugin_event *pev); int (*pending)(struct sudo_plugin_event *pev, int events, struct timespec *ts); int (*fd)(struct sudo_plugin_event *pev); void (*setbase)(struct sudo_plugin_event *pev, void *base); void (*loopbreak)(struct sudo_plugin_event *pev); void (*free)(struct sudo_plugin_event *pev); /* actually larger... */ }; /* Sudo plugin Event types */ #define SUDO_PLUGIN_EV_TIMEOUT 0x01 /* fire after timeout */ #define SUDO_PLUGIN_EV_READ 0x02 /* fire when readable */ #define SUDO_PLUGIN_EV_WRITE 0x04 /* fire when writable */ #define SUDO_PLUGIN_EV_PERSIST 0x08 /* persist until deleted */ #define SUDO_PLUGIN_EV_SIGNAL 0x10 /* fire on signal receipt */ /* Policy plugin type and defines. */ struct passwd; struct policy_plugin { #define SUDO_POLICY_PLUGIN 1 unsigned int type; /* always SUDO_POLICY_PLUGIN */ unsigned int version; /* always SUDO_API_VERSION */ int (*open)(unsigned int version, sudo_conv_t conversation, sudo_printf_t sudo_plugin_printf, char * const settings[], char * const user_info[], char * const user_env[], char * const plugin_options[], const char **errstr); void (*close)(int exit_status, int error); /* wait status or error */ int (*show_version)(int verbose); int (*check_policy)(int argc, char * const argv[], char *env_add[], char **command_info[], char **argv_out[], char **user_env_out[], const char **errstr); int (*list)(int argc, char * const argv[], int verbose, const char *user, const char **errstr); int (*validate)(const char **errstr); void (*invalidate)(int rmcred); int (*init_session)(struct passwd *pwd, char **user_env_out[], const char **errstr); void (*register_hooks)(int version, int (*register_hook)(struct sudo_hook *hook)); void (*deregister_hooks)(int version, int (*deregister_hook)(struct sudo_hook *hook)); struct sudo_plugin_event * (*event_alloc)(void); }; /* I/O plugin type and defines. */ struct io_plugin { #define SUDO_IO_PLUGIN 2 unsigned int type; /* always SUDO_IO_PLUGIN */ unsigned int version; /* always SUDO_API_VERSION */ int (*open)(unsigned int version, sudo_conv_t conversation, sudo_printf_t sudo_plugin_printf, char * const settings[], char * const user_info[], char * const command_info[], int argc, char * const argv[], char * const user_env[], char * const plugin_options[], const char **errstr); void (*close)(int exit_status, int error); /* wait status or error */ int (*show_version)(int verbose); int (*log_ttyin)(const char *buf, unsigned int len, const char **errstr); int (*log_ttyout)(const char *buf, unsigned int len, const char **errstr); int (*log_stdin)(const char *buf, unsigned int len, const char **errstr); int (*log_stdout)(const char *buf, unsigned int len, const char **errstr); int (*log_stderr)(const char *buf, unsigned int len, const char **errstr); void (*register_hooks)(int version, int (*register_hook)(struct sudo_hook *hook)); void (*deregister_hooks)(int version, int (*deregister_hook)(struct sudo_hook *hook)); int (*change_winsize)(unsigned int line, unsigned int cols, const char **errstr); int (*log_suspend)(int signo, const char **errstr); struct sudo_plugin_event * (*event_alloc)(void); }; /* Differ audit plugin close status types. */ #define SUDO_PLUGIN_NO_STATUS 0 #define SUDO_PLUGIN_WAIT_STATUS 1 #define SUDO_PLUGIN_EXEC_ERROR 2 #define SUDO_PLUGIN_SUDO_ERROR 3 /* Audit plugin type and defines */ struct audit_plugin { #define SUDO_AUDIT_PLUGIN 3 unsigned int type; /* always SUDO_AUDIT_PLUGIN */ unsigned int version; /* always SUDO_API_VERSION */ int (*open)(unsigned int version, sudo_conv_t conversation, sudo_printf_t sudo_plugin_printf, char * const settings[], char * const user_info[], int submit_optind, char * const submit_argv[], char * const submit_envp[], char * const plugin_options[], const char **errstr); void (*close)(int status_type, int status); int (*accept)(const char *plugin_name, unsigned int plugin_type, char * const command_info[], char * const run_argv[], char * const run_envp[], const char **errstr); int (*reject)(const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[], const char **errstr); int (*error)(const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[], const char **errstr); int (*show_version)(int verbose); void (*register_hooks)(int version, int (*register_hook)(struct sudo_hook *hook)); void (*deregister_hooks)(int version, int (*deregister_hook)(struct sudo_hook *hook)); struct sudo_plugin_event * (*event_alloc)(void); }; /* Approval plugin type and defines */ struct approval_plugin { #define SUDO_APPROVAL_PLUGIN 4 unsigned int type; /* always SUDO_APPROVAL_PLUGIN */ unsigned int version; /* always SUDO_API_VERSION */ int (*open)(unsigned int version, sudo_conv_t conversation, sudo_printf_t sudo_plugin_printf, char * const settings[], char * const user_info[], int submit_optind, char * const submit_argv[], char * const submit_envp[], char * const plugin_options[], const char **errstr); void (*close)(void); int (*check)(char * const command_info[], char * const run_argv[], char * const run_envp[], const char **errstr); int (*show_version)(int verbose); }; /* Sudoers group plugin version major/minor */ #define GROUP_API_VERSION_MAJOR 1 #define GROUP_API_VERSION_MINOR 0 #define GROUP_API_VERSION SUDO_API_MKVERSION(GROUP_API_VERSION_MAJOR, GROUP_API_VERSION_MINOR) /* Getters and setters for group version (for source compat only) */ #define GROUP_API_VERSION_GET_MAJOR(v) SUDO_API_VERSION_GET_MAJOR(v) #define GROUP_API_VERSION_GET_MINOR(v) SUDO_API_VERSION_GET_MINOR(v) #define GROUP_API_VERSION_SET_MAJOR(vp, n) SUDO_API_VERSION_SET_MAJOR(vp, n) #define GROUP_API_VERSION_SET_MINOR(vp, n) SUDO_API_VERSION_SET_MINOR(vp, n) /* * version: for compatibility checking * group_init: return 1 on success, 0 if unconfigured, -1 on error. * group_cleanup: called to clean up resources used by provider * user_in_group: returns 1 if user is in group, 0 if not. * note that pwd may be NULL if the user is not in passwd. */ struct sudoers_group_plugin { unsigned int version; int (*init)(int version, sudo_printf_t sudo_plugin_printf, char *const argv[]); void (*cleanup)(void); int (*query)(const char *user, const char *group, const struct passwd *pwd); }; #endif /* SUDO_PLUGIN_H */