Blame cifsacl.h

Packit Service 09cdfc
/*
Packit Service 09cdfc
* Header file for getcifsacl and setcifsacl utilities
Packit Service 09cdfc
*
Packit Service 09cdfc
* Copyright (C) Shirish Pargaonkar (shirishp@us.ibm.com) 2011
Packit Service 09cdfc
*
Packit Service 09cdfc
* Has various access rights, security descriptor fields defines
Packit Service 09cdfc
* and data structures related to security descriptor, DACL, ACE,
Packit Service 09cdfc
* and SID.
Packit Service 09cdfc
*
Packit Service 09cdfc
* This program is free software; you can redistribute it and/or modify
Packit Service 09cdfc
* it under the terms of the GNU General Public License as published by
Packit Service 09cdfc
* the Free Software Foundation; either version 2 of the License, or
Packit Service 09cdfc
* (at your option) any later version.
Packit Service 09cdfc
* This program is distributed in the hope that it will be useful,
Packit Service 09cdfc
* but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 09cdfc
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Packit Service 09cdfc
* GNU General Public License for more details.
Packit Service 09cdfc
* You should have received a copy of the GNU General Public License
Packit Service 09cdfc
* along with this program; if not, write to the Free Software
Packit Service 09cdfc
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Packit Service 09cdfc
*/
Packit Service 09cdfc
Packit Service 09cdfc
#include "cifsidmap.h"
Packit Service 09cdfc
Packit Service 09cdfc
#ifndef _CIFSACL_H
Packit Service 09cdfc
#define _CIFSACL_H
Packit Service 09cdfc
Packit Service 09cdfc
#define BUFSIZE 1024
Packit Service 09cdfc
#define ATTRNAME "system.cifs_acl"
Packit Service 09cdfc
Packit Service 09cdfc
#define MAX_NUM_AUTHS 6
Packit Service 09cdfc
Packit Service 09cdfc
/* File specific rights */
Packit Service 09cdfc
#define READ_DATA	0x00000001 /* R */
Packit Service 09cdfc
#define WRITE_DATA	0x00000002 /* W */
Packit Service 09cdfc
#define APPEND_DATA	0x00000004 /* A */
Packit Service 09cdfc
#define READ_EA		0x00000008 /* REA */
Packit Service 09cdfc
#define WRITE_EA	0x00000010 /* WEA */
Packit Service 09cdfc
#define EXEC		0x00000020 /* E */
Packit Service 09cdfc
#define DELDHLD		0x00000040 /* DC */
Packit Service 09cdfc
#define READ_ATTR	0x00000080 /* RA */
Packit Service 09cdfc
#define WRITE_ATTR	0x00000100 /* WA */
Packit Service 09cdfc
Packit Service 09cdfc
/* Standard rights */
Packit Service 09cdfc
#define DELETE		0x00010000 /* D */
Packit Service 09cdfc
#define READ_CONTROL	0x00020000 /* RC */
Packit Service 09cdfc
#define WRITE_DAC	0x00040000 /* P */
Packit Service 09cdfc
#define WRITE_OWNER	0x00080000 /* O */
Packit Service 09cdfc
#define SYNC		0x00100000 /* S */
Packit Service 09cdfc
Packit Service 09cdfc
/* Generic rights */
Packit Service 09cdfc
#define SYSSEC		0x01000000
Packit Service 09cdfc
#define MAX		0x02000000
Packit Service 09cdfc
#define ALL		0x10000000
Packit Service 09cdfc
#define EXECUTE		0x20000000 /* GE */
Packit Service 09cdfc
#define WRITE		0x40000000 /* GW */
Packit Service 09cdfc
#define READ		0x80000000 /* GR */
Packit Service 09cdfc
Packit Service 09cdfc
/* D | RC | P | O | S | R | W | A | E | DC | REA | WEA | RA | WA  */
Packit Service 09cdfc
#define FULL_CONTROL	0x001f01ff
Packit Service 09cdfc
Packit Service 09cdfc
/* RC | S | R | E | REA | RA */
Packit Service 09cdfc
#define EREAD		0x001200a9
Packit Service 09cdfc
Packit Service 09cdfc
/* RC | S | R | E | REA | GR | GE */
Packit Service 09cdfc
#define OREAD		0xa01200a1
Packit Service 09cdfc
Packit Service 09cdfc
/* RC | S | R | REA | RA */
Packit Service 09cdfc
#define BREAD		0x00120089
Packit Service 09cdfc
Packit Service 09cdfc
/* W | A | WA | WEA| */
Packit Service 09cdfc
#define EWRITE		0x00000116
Packit Service 09cdfc
Packit Service 09cdfc
/* D | RC | S | R | W | A | E |REA | WEA | RA | WA */
Packit Service 09cdfc
#define CHANGE		0x001301bf
Packit Service 09cdfc
Packit Service 09cdfc
/* GR | RC | REA | RA | REA | R */
Packit Service 09cdfc
#define ALL_READ_BITS	0x80020089
Packit Service 09cdfc
Packit Service 09cdfc
/* WA | WEA | A | W */
Packit Service 09cdfc
#define ALL_WRITE_BITS	0x40000116
Packit Service 09cdfc
Packit Service 09cdfc
#define OBJECT_INHERIT_FLAG 0x01	/* OI */
Packit Service 09cdfc
#define CONTAINER_INHERIT_FLAG 0x02	/* CI */
Packit Service 09cdfc
#define NO_PROPAGATE_INHERIT_FLAG 0x04	/* NP */
Packit Service 09cdfc
#define INHERIT_ONLY_FLAG 0x08		/* IO */
Packit Service 09cdfc
#define INHERITED_ACE_FLAG 0x10		/* I */
Packit Service 09cdfc
#define VFLAGS (OBJECT_INHERIT_FLAG|CONTAINER_INHERIT_FLAG|NO_PROPAGATE_INHERIT_FLAG|INHERIT_ONLY_FLAG|INHERITED_ACE_FLAG)
Packit Service 09cdfc
Packit Service 09cdfc
#define ACCESS_ALLOWED	0		/* ALLOWED */
Packit Service 09cdfc
#define ACCESS_DENIED	1		/* DENIED */
Packit Service 09cdfc
#define ACCESS_ALLOWED_OBJECT	5	/* OBJECT_ALLOWED */
Packit Service 09cdfc
#define ACCESS_DENIED_OBJECT	6	/* OBJECT_DENIED */
Packit Service 09cdfc
Packit Service 09cdfc
#define COMPSID 0x1
Packit Service 09cdfc
#define COMPTYPE 0x2
Packit Service 09cdfc
#define COMPFLAG 0x4
Packit Service 09cdfc
#define COMPMASK 0x8
Packit Service 09cdfc
#define COMPALL (COMPSID|COMPTYPE|COMPFLAG|COMPMASK)
Packit Service 09cdfc
Packit Service 09cdfc
/*
Packit Service 09cdfc
 * While not indicated here, the structs below represent on-the-wire data
Packit Service 09cdfc
 * structures. Any multi-byte values are expected to be little-endian!
Packit Service 09cdfc
 *
Packit Service 09cdfc
 * FIXME: should we change these to use endianness annotations?
Packit Service 09cdfc
 */
Packit Service 09cdfc
struct cifs_ntsd {
Packit Service 09cdfc
	uint16_t revision; /* revision level */
Packit Service 09cdfc
	uint16_t type;
Packit Service 09cdfc
	uint32_t osidoffset;
Packit Service 09cdfc
	uint32_t gsidoffset;
Packit Service 09cdfc
	uint32_t sacloffset;
Packit Service 09cdfc
	uint32_t dacloffset;
Packit Service 09cdfc
} __attribute__((packed));
Packit Service 09cdfc
Packit Service 09cdfc
struct cifs_ctrl_acl {
Packit Service 09cdfc
	uint16_t revision; /* revision level */
Packit Service 09cdfc
	uint16_t size;
Packit Service 09cdfc
	uint32_t num_aces;
Packit Service 09cdfc
} __attribute__((packed));
Packit Service 09cdfc
Packit Service 09cdfc
struct cifs_ace {
Packit Service 09cdfc
	uint8_t type;
Packit Service 09cdfc
	uint8_t flags;
Packit Service 09cdfc
	uint16_t size;
Packit Service 09cdfc
	uint32_t access_req;
Packit Service 09cdfc
	struct cifs_sid sid; /* ie UUID of user or group who gets these perms */
Packit Service 09cdfc
} __attribute__((packed));
Packit Service 09cdfc
Packit Service 09cdfc
#endif /* CIFSACL_H */