#include <sys/types.h>
#include <sys/stat.h>
#include <sys/acl.h>
Go to the source code of this file.
|
| int | get_nfsv4_acl (const char *name, ace_t **retAces) |
| | Get ACL.
|
| int | remove_nfsv4_acl_vfs (const char *name) |
| | Removes all non-trivial ACLs from object.
|
| int | strip_trivial_aces (ace_t **saces, int sacecount) |
| | Remove any trivial ACE "in-place".
|
| int | strip_nontrivial_aces (ace_t **saces, int sacecount) |
| | Remove non-trivial ACEs "in-place".
|
| ace_t * | concat_aces (ace_t *aces1, int ace1count, ace_t *aces2, int ace2count) |
| int | nfsv4_chmod (char *name, mode_t mode) |
| | Change mode of file preserving existing explicit ACEs.
|
| int | remove_posix_acl_vfs (const char *name) |
| | Remove any ACL_USER, ACL_GROUP, ACL_MASK or ACL_TYPE_DEFAULT ACEs from an object.
|
| int | posix_chmod (const char *name, mode_t mode) |
| | POSIX ACL chmod.
|
| int | posix_fchmod (int fd, mode_t mode) |
| | POSIX ACL fchmod.
|
◆ chmod_acl [1/2]
◆ chmod_acl [2/2]
◆ fchmod_acl
◆ O_IGNORE
| #define O_IGNORE (O_NOFOLLOW << 2) |
◆ O_NETATALK_ACL
| #define O_NETATALK_ACL (O_NOFOLLOW << 1) |
◆ concat_aces()
| ace_t * concat_aces |
( |
ace_t * | aces1, |
|
|
int | ace1count, |
|
|
ace_t * | aces2, |
|
|
int | ace2count ) |
|
extern |
◆ get_nfsv4_acl()
| int get_nfsv4_acl |
( |
const char * | name, |
|
|
ace_t ** | retAces ) |
|
extern |
Get ACL.
- Note
- Allocates storage as needed. Caller must free.
- Returns
- no of ACEs or -1 on error.
◆ nfsv4_chmod()
| int nfsv4_chmod |
( |
char * | name, |
|
|
mode_t | mode ) |
|
extern |
Change mode of file preserving existing explicit ACEs.
nfsv4_chmod
- reads objects ACL (acl1), may return 0 or -1 NFSv4 ACEs on e.g. UFS fs
- removes all trivial ACEs from the ACL by calling strip_trivial_aces(), possibly leaving 0 ACEs in the ACL if there were only trivial ACEs as mapped from the mode
- calls chmod() with mode, we're done if step (1) returned 0 for noaces
- reads the changed ACL (acl2) which a. might still contain explicit ACEs (up to onnv132) b. will have any explicit ACE removed (starting with onnv145/Openindiana)
- strip any explicit ACE from acl2 using strip_nontrivial_aces()
- merge acl2 and acl2
- set the ACL merged ACL on the object
◆ posix_chmod()
| int posix_chmod |
( |
const char * | name, |
|
|
mode_t | mode ) |
|
extern |
POSIX ACL chmod.
This is a workaround for chmod() on filestystems supporting Posix 1003.1e draft 17 compliant ACLs. For objects with extended ACLs, e.g. objects with an ACL_MASK entry, chmod() manipulates ACL_MASK instead of ACL_GROUP_OBJ. As OS X isn't aware of this behavior calling FPSetFileDirParms may lead to unpredictable results. For more information see section 23.1.2 of Posix 1003.1e draft 17.
- Note
- accepts the same arguments as chmod()
- Returns
- 0 in case of success or -1 in case something went wrong.
◆ posix_fchmod()
| int posix_fchmod |
( |
int | fd, |
|
|
mode_t | mode ) |
|
extern |
POSIX ACL fchmod.
- Note
- accepts the same arguments as fchmod()
- Returns
- 0 in case of success or -1 in case something went wrong.
◆ remove_nfsv4_acl_vfs()
| int remove_nfsv4_acl_vfs |
( |
const char * | name | ) |
|
|
extern |
Removes all non-trivial ACLs from object.
- Returns
- full AFPERR code
◆ remove_posix_acl_vfs()
| int remove_posix_acl_vfs |
( |
const char * | name | ) |
|
|
extern |
Remove any ACL_USER, ACL_GROUP, ACL_MASK or ACL_TYPE_DEFAULT ACEs from an object.
- Parameters
-
| name | filesystem object name |
- Returns
- AFP error code, AFP_OK (= 0) on success, AFPERR_MISC on error
◆ strip_nontrivial_aces()
| int strip_nontrivial_aces |
( |
ace_t ** | saces, |
|
|
int | sacecount ) |
|
extern |
Remove non-trivial ACEs "in-place".
- Returns
- no of trivial ACEs.
◆ strip_trivial_aces()
| int strip_trivial_aces |
( |
ace_t ** | saces, |
|
|
int | sacecount ) |
|
extern |
Remove any trivial ACE "in-place".
- Returns
- no of non-trivial ACEs