mirror of
https://github.com/samba-team/samba.git
synced 2025-01-29 21:47:30 +03:00
r3833: NTACL is a better xattr name than DosAcl (tpot suggested this)
This commit is contained in:
parent
3a1f20d874
commit
17911eea59
@ -112,7 +112,7 @@ struct file_info;
|
|||||||
|
|
||||||
struct xattr_DosEAs;
|
struct xattr_DosEAs;
|
||||||
struct xattr_DosStreams;
|
struct xattr_DosStreams;
|
||||||
struct xattr_DosAcl;
|
struct xattr_NTACL;
|
||||||
|
|
||||||
struct test_join;
|
struct test_join;
|
||||||
|
|
||||||
|
@ -77,22 +77,21 @@ interface xattr
|
|||||||
} xattr_DosStreams;
|
} xattr_DosStreams;
|
||||||
|
|
||||||
|
|
||||||
/* we store the NT ACL a DosAcl xattr. It is versioned so we
|
/* we store the NT ACL a NTAcl xattr. It is versioned so we
|
||||||
can later add other acl attribs (such as posix acl
|
can later add other acl attribs (such as posix acl mapping)
|
||||||
mapping)
|
|
||||||
|
|
||||||
we put this xattr in the security namespace to ensure that
|
we put this xattr in the security namespace to ensure that
|
||||||
only trusted users can write to the ACL
|
only trusted users can write to the ACL
|
||||||
*/
|
*/
|
||||||
const string XATTR_DOSACL_NAME = "security.DosAcl";
|
const string XATTR_NTACL_NAME = "security.NTAcl";
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
[case(1)] security_descriptor *sd;
|
[case(1)] security_descriptor *sd;
|
||||||
} xattr_DosAclInfo;
|
} xattr_NTACL_Info;
|
||||||
|
|
||||||
typedef [public] struct {
|
typedef [public] struct {
|
||||||
uint16 version;
|
uint16 version;
|
||||||
[switch_is(version)] xattr_DosAclInfo info;
|
[switch_is(version)] xattr_NTACL_Info info;
|
||||||
} xattr_DosAcl;
|
} xattr_NTACL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
static NTSTATUS pvfs_default_acl(struct pvfs_state *pvfs,
|
static NTSTATUS pvfs_default_acl(struct pvfs_state *pvfs,
|
||||||
struct smbsrv_request *req,
|
struct smbsrv_request *req,
|
||||||
struct pvfs_filename *name, int fd,
|
struct pvfs_filename *name, int fd,
|
||||||
struct xattr_DosAcl *acl)
|
struct xattr_NTACL *acl)
|
||||||
{
|
{
|
||||||
struct security_descriptor *sd;
|
struct security_descriptor *sd;
|
||||||
struct nt_user_token *token = req->session->session_info->nt_user_token;
|
struct nt_user_token *token = req->session->session_info->nt_user_token;
|
||||||
@ -103,12 +103,12 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
|
|||||||
struct pvfs_filename *name, int fd,
|
struct pvfs_filename *name, int fd,
|
||||||
union smb_setfileinfo *info)
|
union smb_setfileinfo *info)
|
||||||
{
|
{
|
||||||
struct xattr_DosAcl *acl;
|
struct xattr_NTACL *acl;
|
||||||
uint32_t secinfo_flags = info->set_secdesc.in.secinfo_flags;
|
uint32_t secinfo_flags = info->set_secdesc.in.secinfo_flags;
|
||||||
struct security_descriptor *new_sd, *sd;
|
struct security_descriptor *new_sd, *sd;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
acl = talloc_p(req, struct xattr_DosAcl);
|
acl = talloc_p(req, struct xattr_NTACL);
|
||||||
if (acl == NULL) {
|
if (acl == NULL) {
|
||||||
return NT_STATUS_NO_MEMORY;
|
return NT_STATUS_NO_MEMORY;
|
||||||
}
|
}
|
||||||
@ -159,11 +159,11 @@ NTSTATUS pvfs_acl_query(struct pvfs_state *pvfs,
|
|||||||
struct pvfs_filename *name, int fd,
|
struct pvfs_filename *name, int fd,
|
||||||
union smb_fileinfo *info)
|
union smb_fileinfo *info)
|
||||||
{
|
{
|
||||||
struct xattr_DosAcl *acl;
|
struct xattr_NTACL *acl;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
struct security_descriptor *sd;
|
struct security_descriptor *sd;
|
||||||
|
|
||||||
acl = talloc_p(req, struct xattr_DosAcl);
|
acl = talloc_p(req, struct xattr_NTACL);
|
||||||
if (acl == NULL) {
|
if (acl == NULL) {
|
||||||
return NT_STATUS_NO_MEMORY;
|
return NT_STATUS_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
@ -353,7 +353,7 @@ NTSTATUS pvfs_streams_save(struct pvfs_state *pvfs, struct pvfs_filename *name,
|
|||||||
load the current ACL from extended attributes
|
load the current ACL from extended attributes
|
||||||
*/
|
*/
|
||||||
NTSTATUS pvfs_acl_load(struct pvfs_state *pvfs, struct pvfs_filename *name, int fd,
|
NTSTATUS pvfs_acl_load(struct pvfs_state *pvfs, struct pvfs_filename *name, int fd,
|
||||||
struct xattr_DosAcl *acl)
|
struct xattr_NTACL *acl)
|
||||||
{
|
{
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
ZERO_STRUCTP(acl);
|
ZERO_STRUCTP(acl);
|
||||||
@ -363,7 +363,7 @@ NTSTATUS pvfs_acl_load(struct pvfs_state *pvfs, struct pvfs_filename *name, int
|
|||||||
status = pvfs_xattr_ndr_load(pvfs, acl, name->full_name, fd,
|
status = pvfs_xattr_ndr_load(pvfs, acl, name->full_name, fd,
|
||||||
XATTR_DOSACL_NAME,
|
XATTR_DOSACL_NAME,
|
||||||
acl,
|
acl,
|
||||||
(ndr_pull_flags_fn_t)ndr_pull_xattr_DosAcl);
|
(ndr_pull_flags_fn_t)ndr_pull_xattr_NTACL);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,7 +371,7 @@ NTSTATUS pvfs_acl_load(struct pvfs_state *pvfs, struct pvfs_filename *name, int
|
|||||||
save the acl for a file into filesystem xattr
|
save the acl for a file into filesystem xattr
|
||||||
*/
|
*/
|
||||||
NTSTATUS pvfs_acl_save(struct pvfs_state *pvfs, struct pvfs_filename *name, int fd,
|
NTSTATUS pvfs_acl_save(struct pvfs_state *pvfs, struct pvfs_filename *name, int fd,
|
||||||
struct xattr_DosAcl *acl)
|
struct xattr_NTACL *acl)
|
||||||
{
|
{
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
void *privs;
|
void *privs;
|
||||||
@ -386,7 +386,7 @@ NTSTATUS pvfs_acl_save(struct pvfs_state *pvfs, struct pvfs_filename *name, int
|
|||||||
status = pvfs_xattr_ndr_save(pvfs, name->full_name, fd,
|
status = pvfs_xattr_ndr_save(pvfs, name->full_name, fd,
|
||||||
XATTR_DOSACL_NAME,
|
XATTR_DOSACL_NAME,
|
||||||
acl,
|
acl,
|
||||||
(ndr_push_flags_fn_t)ndr_push_xattr_DosAcl);
|
(ndr_push_flags_fn_t)ndr_push_xattr_NTACL);
|
||||||
talloc_free(privs);
|
talloc_free(privs);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user