2002-10-07 02:53:37

by Nathan Scott

[permalink] [raw]
Subject: [PATCH 2/2] POSIX ACL configuration option

Hi Linus,

This patch provides the configuration entry, help text and basic
header file definitions for filesystems that support POSIX ACLs.
The code implementing this in XFS is already merged in your tree,
we're just missing these enabling pieces and that previous umask
patch.

cheers.

--
Nathan


fs/Config.help | 8 ++++
fs/Config.in | 3 +
include/linux/posix_acl_xattr.h | 67 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 78 insertions

diff -Naur 2.5.40-pristine/fs/Config.help 2.5.40-posixacl/fs/Config.help
--- 2.5.40-pristine/fs/Config.help 2002-09-18 13:50:18.000000000 +1000
+++ 2.5.40-posixacl/fs/Config.help 2002-10-06 16:47:25.000000000 +1000
@@ -18,6 +18,14 @@
need this functionality say Y here. Note that you will need latest
quota utilities for new quota format with this kernel.

+CONFIG_FS_POSIX_ACL
+ POSIX Access Control Lists (ACLs) support permissions for users and
+ groups beyond the owner/group/world scheme.
+
+ Refer to <http://acl.bestbits.at/> for more information about POSIX
+ ACLs on Linux. If you wish to use ACLs, you'll need the getfacl(1)
+ and setfacl(1) utilities. If unsure, say N.
+
CONFIG_MINIX_FS
Minix is a simple operating system used in many classes about OS's.
The minix file system (method to organize files on a hard disk
diff -Naur 2.5.40-pristine/fs/Config.in 2.5.40-posixacl/fs/Config.in
--- 2.5.40-pristine/fs/Config.in 2002-09-18 13:50:18.000000000 +1000
+++ 2.5.40-posixacl/fs/Config.in 2002-10-06 16:46:26.000000000 +1000
@@ -10,6 +10,9 @@
if [ "$CONFIG_QUOTA" = "y" ]; then
define_bool CONFIG_QUOTACTL y
fi
+
+bool 'POSIX Access Control Lists' CONFIG_FS_POSIX_ACL
+
tristate 'Kernel automounter support' CONFIG_AUTOFS_FS
tristate 'Kernel automounter version 4 support (also supports v3)' CONFIG_AUTOFS4_FS

diff -Naur 2.5.40-pristine/include/linux/posix_acl_xattr.h 2.5.40-posixacl/include/linux/posix_acl_xattr.h
--- 2.5.40-pristine/include/linux/posix_acl_xattr.h 1970-01-01 10:00:00.000000000 +1000
+++ 2.5.40-posixacl/include/linux/posix_acl_xattr.h 2002-10-06 16:45:06.000000000 +1000
@@ -0,0 +1,67 @@
+/*
+ File: linux/posix_acl_xattr.h
+
+ Extended attribute system call representation of Access Control Lists.
+
+ Copyright (C) 2000 by Andreas Gruenbacher <[email protected]>
+ Copyright (C) 2002 SGI - Silicon Graphics, Inc <[email protected]>
+ */
+#ifndef _POSIX_ACL_XATTR_H
+#define _POSIX_ACL_XATTR_H
+
+/* Extended attribute names */
+#define POSIX_ACL_XATTR_ACCESS "system.posix_acl_access"
+#define POSIX_ACL_XATTR_DEFAULT "system.posix_acl_default"
+
+/* Supported ACL a_version fields */
+#define POSIX_ACL_XATTR_VERSION 0x0002
+
+
+/* An undefined entry e_id value */
+#define ACL_UNDEFINED_ID (-1)
+
+/* ACL entry e_tag field values */
+#define ACL_USER_OBJ (0x01)
+#define ACL_USER (0x02)
+#define ACL_GROUP_OBJ (0x04)
+#define ACL_GROUP (0x08)
+#define ACL_MASK (0x10)
+#define ACL_OTHER (0x20)
+
+/* ACL entry e_perm bitfield values */
+#define ACL_READ (0x04)
+#define ACL_WRITE (0x02)
+#define ACL_EXECUTE (0x01)
+
+
+typedef struct {
+ __u16 e_tag;
+ __u16 e_perm;
+ __u32 e_id;
+} posix_acl_xattr_entry;
+
+typedef struct {
+ __u32 a_version;
+ posix_acl_xattr_entry a_entries[0];
+} posix_acl_xattr_header;
+
+
+static inline size_t
+posix_acl_xattr_size(int count)
+{
+ return (sizeof(posix_acl_xattr_header) +
+ (count * sizeof(posix_acl_xattr_entry)));
+}
+
+static inline int
+posix_acl_xattr_count(size_t size)
+{
+ if (size < sizeof(posix_acl_xattr_header))
+ return -1;
+ size -= sizeof(posix_acl_xattr_header);
+ if (size % sizeof(posix_acl_xattr_entry))
+ return -1;
+ return size / sizeof(posix_acl_xattr_entry);
+}
+
+#endif /* _POSIX_ACL_XATTR_H */


2002-10-08 21:56:14

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH 2/2] POSIX ACL configuration option

On Mon, Oct 07, 2002 at 12:58:15PM +1000, Nathan Scott wrote:
> Hi Linus,
>
> This patch provides the configuration entry, help text and basic
> header file definitions for filesystems that support POSIX ACLs.
> The code implementing this in XFS is already merged in your tree,
> we're just missing these enabling pieces and that previous umask
> patch.

FWIW, I need this patch as well for as part of porting Andreas's ACL
code to 2.5. So if it doesn't get accepted, I'll be resubmitting it
as part of the ext 2/3 ACL patch set...

(the patch was developed and agreed upon between the XFS team and
Andreas Gruenbacher, so it's part of the ext 2/3 ACL patches.)

- Ted