]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/acl-util.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
7 int fd_acl_make_read_only_fallback(int fd
);
8 int fd_acl_make_writable_fallback(int fd
);
11 #include <acl/libacl.h>
17 int acl_find_uid(acl_t acl
, uid_t uid
, acl_entry_t
*entry
);
18 int calc_acl_mask_if_needed(acl_t
*acl_p
);
19 int add_base_acls_if_needed(acl_t
*acl_p
, const char *path
);
20 int acl_search_groups(const char* path
, char ***ret_groups
);
23 acl_t
*ret_acl_access
,
24 acl_t
*ret_acl_access_exec
,
25 acl_t
*ret_acl_default
,
27 int acls_for_file(const char *path
, acl_type_t type
, acl_t
new, acl_t
*ret
);
28 int fd_add_uid_acl_permission(int fd
, uid_t uid
, unsigned mask
);
30 int fd_acl_make_read_only(int fd
);
31 int fd_acl_make_writable(int fd
);
33 /* acl_free takes multiple argument types.
34 * Multiple cleanup functions are necessary. */
35 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(acl_t
, acl_free
, NULL
);
36 #define acl_free_charp acl_free
37 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(char*, acl_free_charp
, NULL
);
38 #define acl_free_uid_tp acl_free
39 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(uid_t
*, acl_free_uid_tp
, NULL
);
40 #define acl_free_gid_tp acl_free
41 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(gid_t
*, acl_free_gid_tp
, NULL
);
45 #define ACL_WRITE 0x02
46 #define ACL_EXECUTE 0x01
48 static inline int fd_add_uid_acl_permission(int fd
, uid_t uid
, unsigned mask
) {
52 static inline int fd_acl_make_read_only(int fd
) {
53 return fd_acl_make_read_only_fallback(fd
);
56 static inline int fd_acl_make_writable(int fd
) {
57 return fd_acl_make_writable_fallback(fd
);