From 879e1e0ec746d9d06c3bef1c91d1d2cd6f916442 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 4 Jul 2007 04:16:16 +0000 Subject: r23697: use the file perm options in the posix backend (This used to be commit 701d06ac016c69fcd9ac92b5afefa2346c9bc26f) --- source4/ntvfs/posix/pvfs_fileinfo.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'source4/ntvfs/posix/pvfs_fileinfo.c') diff --git a/source4/ntvfs/posix/pvfs_fileinfo.c b/source4/ntvfs/posix/pvfs_fileinfo.c index 8226b66d1f..b244019d56 100644 --- a/source4/ntvfs/posix/pvfs_fileinfo.c +++ b/source4/ntvfs/posix/pvfs_fileinfo.c @@ -88,15 +88,11 @@ NTSTATUS pvfs_fill_dos_info(struct pvfs_state *pvfs, struct pvfs_filename *name, */ mode_t pvfs_fileperms(struct pvfs_state *pvfs, uint32_t attrib) { - mode_t mode = S_IRUSR; + mode_t mode = (S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR | S_IWGRP | S_IWOTH); - if (attrib & FILE_ATTRIBUTE_DIRECTORY) { - mode |= S_IXUSR; - } - - if (!(attrib & FILE_ATTRIBUTE_READONLY) || - (pvfs->flags & PVFS_FLAG_XATTR_ENABLE)) { - mode |= S_IWUSR; + if (!(pvfs->flags & PVFS_FLAG_XATTR_ENABLE) && + (attrib & FILE_ATTRIBUTE_READONLY)) { + mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); } if (!(pvfs->flags & PVFS_FLAG_XATTR_ENABLE)) { @@ -104,18 +100,27 @@ mode_t pvfs_fileperms(struct pvfs_state *pvfs, uint32_t attrib) (pvfs->flags & PVFS_FLAG_MAP_ARCHIVE)) { mode |= S_IXUSR; } - if ((attrib & FILE_ATTRIBUTE_SYSTEM) && (pvfs->flags & PVFS_FLAG_MAP_SYSTEM)) { mode |= S_IXGRP; } - if ((attrib & FILE_ATTRIBUTE_HIDDEN) && (pvfs->flags & PVFS_FLAG_MAP_HIDDEN)) { mode |= S_IXOTH; } } + if (attrib & FILE_ATTRIBUTE_DIRECTORY) { + mode |= (S_IFDIR | S_IWUSR); + mode |= (S_IXUSR | S_IXGRP | S_IXOTH); + mode &= pvfs->options.dir_mask; + mode |= pvfs->options.force_dir_mode; + } else { + mode &= pvfs->options.create_mask; + mode |= pvfs->options.force_create_mode; + } + return mode; } + -- cgit