12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #ifndef VSF_SECUTIL_H
- #define VSF_SECUTIL_H
- struct mystr;
- /* vsf_secutil_change_credentials()
- * PURPOSE
- * This function securely switches process credentials to the user specified.
- * There are options to enter a chroot() jail, and supplementary groups may
- * or may not be activated.
- * PARAMETERS
- * p_user_str - the name of the user to become
- * p_dir_str - the directory to chdir() and possibly chroot() to.
- * (if NULL, the user's home directory is used)
- * p_ext_dir_str - the directory to chdir() and possibly chroot() to,
- * applied in addition to the directory calculated by
- * p_user_str and p_dir_str.
- * caps - bitmap of capabilities to adopt. NOTE, if the underlying
- * OS does not support capabilities as a non-root user, and
- * the capability bitset is non-empty, then root privileges
- * will have to be retained.
- * options - see bitmask definitions below
- */
- /* chroot() the user into the new directory */
- #define VSF_SECUTIL_OPTION_CHROOT 1
- /* Activate any supplementary groups the user may have */
- #define VSF_SECUTIL_OPTION_USE_GROUPS 2
- /* Do the chdir() as the effective userid of the target user */
- #define VSF_SECUTIL_OPTION_CHANGE_EUID 4
- /* Use RLIMIT_NOFILE to prevent the opening of new fds */
- #define VSF_SECUTIL_OPTION_NO_FDS 8
- /* Use RLIMIT_NPROC to prevent the launching of new processes */
- #define VSF_SECUTIL_OPTION_NO_PROCS 16
- /* Permit a writeable chroot() root */
- #define VSF_SECUTIL_OPTION_ALLOW_WRITEABLE_ROOT 32
- void vsf_secutil_change_credentials(const struct mystr* p_user_str,
- const struct mystr* p_dir_str,
- const struct mystr* p_ext_dir_str,
- unsigned int caps, unsigned int options);
- #endif /* VSF_SECUTIL_H */
|