2017-08-18 15:41:57 +03:00
/*
* Store Windows ACLs in data store - common functions .
*
* Copyright ( C ) Volker Lendecke , 2008
* Copyright ( C ) Jeremy Allison , 2009
2021-11-16 23:47:52 +03:00
* Copyright ( C ) Ralph Böhme , 2016
2017-08-18 15:41:57 +03:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef __VFS_ACL_COMMON_H__
# define __VFS_ACL_COMMON_H__
2017-09-28 08:53:48 +03:00
# include "smbd/proto.h"
2017-08-18 15:41:57 +03:00
struct acl_common_config {
bool ignore_system_acls ;
enum default_acl_style default_acl_style ;
2022-06-03 06:37:01 +03:00
char * security_acl_xattr_name ;
2017-08-18 15:41:57 +03:00
} ;
2020-12-16 17:37:02 +03:00
struct acl_common_fsp_ext {
bool setting_nt_acl ;
} ;
2017-08-18 15:41:57 +03:00
bool init_acl_common_config ( vfs_handle_struct * handle ,
const char * module_name ) ;
int rmdir_acl_common ( struct vfs_handle_struct * handle ,
2019-10-05 00:34:41 +03:00
struct files_struct * dirfsp ,
const struct smb_filename * smb_fname ) ;
2017-08-18 15:41:57 +03:00
int unlink_acl_common ( struct vfs_handle_struct * handle ,
2019-09-17 03:50:17 +03:00
struct files_struct * dirfsp ,
const struct smb_filename * smb_fname ,
int flags ) ;
2017-08-18 15:41:57 +03:00
int fchmod_acl_module_common ( struct vfs_handle_struct * handle ,
struct files_struct * fsp , mode_t mode ) ;
int chmod_acl_acl_module_common ( struct vfs_handle_struct * handle ,
const struct smb_filename * smb_fname ,
mode_t mode ) ;
2020-04-13 23:29:48 +03:00
NTSTATUS get_nt_acl_common_at (
NTSTATUS ( * get_acl_blob_at_fn ) ( TALLOC_CTX * ctx ,
2017-08-18 15:41:57 +03:00
vfs_handle_struct * handle ,
2020-04-13 23:29:48 +03:00
struct files_struct * dirfsp ,
2017-08-18 15:41:57 +03:00
const struct smb_filename * smb_fname ,
DATA_BLOB * pblob ) ,
vfs_handle_struct * handle ,
2020-04-13 23:29:48 +03:00
struct files_struct * dirfsp ,
2017-08-18 15:41:57 +03:00
const struct smb_filename * smb_fname_in ,
uint32_t security_info ,
TALLOC_CTX * mem_ctx ,
struct security_descriptor * * ppdesc ) ;
2020-04-13 22:09:47 +03:00
NTSTATUS fget_nt_acl_common (
NTSTATUS ( * fget_acl_blob_fn ) ( TALLOC_CTX * ctx ,
vfs_handle_struct * handle ,
files_struct * fsp ,
DATA_BLOB * pblob ) ,
vfs_handle_struct * handle ,
files_struct * fsp ,
uint32_t security_info ,
TALLOC_CTX * mem_ctx ,
struct security_descriptor * * ppdesc ) ;
2017-08-18 15:41:57 +03:00
NTSTATUS fset_nt_acl_common (
2020-04-13 22:29:22 +03:00
NTSTATUS ( * fget_acl_blob_fn ) ( TALLOC_CTX * ctx ,
2017-08-18 15:41:57 +03:00
vfs_handle_struct * handle ,
files_struct * fsp ,
DATA_BLOB * pblob ) ,
NTSTATUS ( * store_acl_blob_fsp_fn ) ( vfs_handle_struct * handle ,
files_struct * fsp ,
DATA_BLOB * pblob ) ,
const char * module_name ,
vfs_handle_struct * handle , files_struct * fsp ,
uint32_t security_info_sent ,
const struct security_descriptor * orig_psd ) ;
# endif