author | Alan Coopersmith <Alan.Coopersmith@Oracle.COM> |
Fri, 05 Jun 2015 17:26:12 -0700 | |
branch | s11-update |
changeset 4441 | 8e251f3e0ce3 |
parent 3000 | 44bcab9cfdee |
child 4371 | 29fdb14099eb |
permissions | -rw-r--r-- |
3000
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
1 |
Samba.org patch source is referenced below. |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
2 |
WiKi page is: |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
3 |
https://wiki.samba.org/index.php/VFS/vfs_worm |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
4 |
changes against the community version: |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
5 |
- removed support of grace time on file |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
6 |
- slightly modified to run on VFS rev.28 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
7 |
-- Jiri Sasek |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
8 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
9 |
From 2004317c09d781a4ec1275aaa4a29289e798eff3 Mon Sep 17 00:00:00 2001 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
10 |
From: Volker Lendecke <[email protected]> |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
11 |
Date: Wed, 20 Nov 2013 12:09:47 +0100 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
12 |
Subject: [PATCH] s3-modules: add new vfs_worm module |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
13 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
14 |
VFS module to disallow writes for older files. |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
15 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
16 |
Signed-off-by: Volker Lendecke <[email protected]> |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
17 |
Reviewed-by: Stefan Metzmacher <[email protected]> |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
18 |
Reviewed-by: Jeremy Allison <[email protected]> |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
19 |
--- |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
20 |
source3/modules/vfs_worm.c | 97 ++++++++++++++++++++++++++++++++++++++++++++ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
21 |
1 files changed, 97 insertions(+), 0 deletions(-) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
22 |
create mode 100644 source3/modules/vfs_worm.c |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
23 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
24 |
diff --git a/source3/modules/vfs_worm.c b/source3/modules/vfs_worm.c |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
25 |
new file mode 100644 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
26 |
index 0000000..77a18ca |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
27 |
--- /dev/null |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
28 |
+++ b/source3/modules/vfs_worm.c |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
29 |
@@ -0,0 +1,93 @@ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
30 |
+/* |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
31 |
+ * VFS module to disallow writes for older files |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
32 |
+ * |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
33 |
+ * Copyright (C) 2013, Volker Lendecke |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
34 |
+ * |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
35 |
+ * This program is free software; you can redistribute it and/or modify |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
36 |
+ * it under the terms of the GNU General Public License as published by |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
37 |
+ * the Free Software Foundation; either version 3 of the License, or |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
38 |
+ * (at your option) any later version. |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
39 |
+ * |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
40 |
+ * This program is distributed in the hope that it will be useful, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
41 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
42 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
43 |
+ * GNU General Public License for more details. |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
44 |
+ * |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
45 |
+ * You should have received a copy of the GNU General Public License |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
46 |
+ * along with this program; if not, see <http://www.gnu.org/licenses/>. |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
47 |
+ */ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
48 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
49 |
+#include "includes.h" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
50 |
+#include "smbd/smbd.h" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
51 |
+#include "system/filesys.h" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
52 |
+#include "libcli/security/security.h" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
53 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
54 |
+static NTSTATUS vfs_worm_create_file(vfs_handle_struct *handle, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
55 |
+ struct smb_request *req, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
56 |
+ uint16_t root_dir_fid, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
57 |
+ struct smb_filename *smb_fname, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
58 |
+ uint32_t access_mask, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
59 |
+ uint32_t share_access, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
60 |
+ uint32_t create_disposition, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
61 |
+ uint32_t create_options, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
62 |
+ uint32_t file_attributes, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
63 |
+ uint32_t oplock_request, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
64 |
+ uint64_t allocation_size, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
65 |
+ uint32_t private_flags, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
66 |
+ struct security_descriptor *sd, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
67 |
+ struct ea_list *ea_list, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
68 |
+ files_struct **result, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
69 |
+ int *pinfo) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
70 |
+{ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
71 |
+ bool readonly = false; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
72 |
+ const uint32_t write_access_flags = |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
73 |
+ FILE_WRITE_DATA | FILE_APPEND_DATA | |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
74 |
+ FILE_WRITE_ATTRIBUTES | DELETE_ACCESS | |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
75 |
+ WRITE_DAC_ACCESS | WRITE_OWNER_ACCESS; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
76 |
+ NTSTATUS status; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
77 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
78 |
+ if (VALID_STAT(smb_fname->st)) { |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
79 |
+ /* no grace_period supported */ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
80 |
+ readonly = true; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
81 |
+ } |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
82 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
83 |
+ if (readonly && (access_mask & write_access_flags)) { |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
84 |
+ return NT_STATUS_ACCESS_DENIED; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
85 |
+ } |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
86 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
87 |
+ status = SMB_VFS_NEXT_CREATE_FILE( |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
88 |
+ handle, req, root_dir_fid, smb_fname, access_mask, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
89 |
+ share_access, create_disposition, create_options, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
90 |
+ file_attributes, oplock_request, allocation_size, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
91 |
+ private_flags, sd, ea_list, result, pinfo); |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
92 |
+ if (!NT_STATUS_IS_OK(status)) { |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
93 |
+ return status; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
94 |
+ } |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
95 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
96 |
+ /* |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
97 |
+ * Access via MAXIMUM_ALLOWED_ACCESS? |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
98 |
+ */ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
99 |
+ if (readonly && ((*result)->access_mask & write_access_flags)) { |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
100 |
+ close_file(req, *result, NORMAL_CLOSE); |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
101 |
+ return NT_STATUS_ACCESS_DENIED; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
102 |
+ } |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
103 |
+ return NT_STATUS_OK; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
104 |
+} |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
105 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
106 |
+static struct vfs_fn_pointers vfs_worm_fns = { |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
107 |
+ .create_file = vfs_worm_create_file, |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
108 |
+}; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
109 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
110 |
+NTSTATUS vfs_worm_init(void); |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
111 |
+NTSTATUS vfs_worm_init(void) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
112 |
+{ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
113 |
+ NTSTATUS ret; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
114 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
115 |
+ ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "worm", |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
116 |
+ &vfs_worm_fns); |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
117 |
+ if (!NT_STATUS_IS_OK(ret)) { |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
118 |
+ return ret; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
119 |
+ } |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
120 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
121 |
+ return ret; |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
122 |
+} |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
123 |
-- |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
124 |
1.7.0.4 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
125 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
126 |
Makefile.in and configure.in adds |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
127 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
128 |
--- a/source3/configure.in 2013-01-17 15:54:47.194376100 -0800 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
129 |
+++ b/source3/configure.in 2013-01-17 15:58:39.854303900 -0800 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
130 |
@@ -6994,6 +6994,7 @@ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
131 |
SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
132 |
SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
133 |
SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
134 |
+SMB_MODULE(vfs_worm, \$(VFS_WORM_OBJ), "bin/worm.$SHLIBEXT", VFS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
135 |
AC_SUBST(SAMFS_LIBS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
136 |
SMB_MODULE(vfs_samfs, \$(VFS_SAMFS_OBJ), "bin/samfs.$SHLIBEXT", VFS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
137 |
SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
138 |
--- a/source3/Makefile.in 2013-01-17 15:55:00.777531900 -0800 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
139 |
+++ b/source3/Makefile.in 2013-01-17 16:02:06.513093500 -0800 |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
140 |
@@ -813,6 +813,7 @@ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
141 |
VFS_AIXACL2_OBJ = modules/vfs_aixacl2.o modules/vfs_aixacl_util.o modules/nfs4_acls.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
142 |
VFS_SOLARISACL_OBJ = modules/vfs_solarisacl.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
143 |
VFS_ZFSACL_OBJ = modules/vfs_zfsacl.o modules/nfs4_acls.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
144 |
+VFS_WORM_OBJ = modules/vfs_worm.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
145 |
VFS_SAMFS_OBJ = modules/vfs_samfs.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
146 |
VFS_HPUXACL_OBJ = modules/vfs_hpuxacl.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
147 |
VFS_IRIXACL_OBJ = modules/vfs_irixacl.o |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
148 |
@@ -2967,6 +2968,10 @@ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
149 |
@echo "Building plugin $@" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
150 |
@$(SHLD_MODULE) $(VFS_ZFSACL_OBJ) @ZFSACL_LIBS@ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
151 |
|
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
152 |
+bin/worm.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_WORM_OBJ) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
153 |
+ @echo "Building plugin $@" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
154 |
+ @$(SHLD_MODULE) $(VFS_WORM_OBJ) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
155 |
+ |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
156 |
bin/samfs.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_SAMFS_OBJ) |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
157 |
@echo "Building plugin $@" |
44bcab9cfdee
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff
changeset
|
158 |
@$(SHLD_MODULE) $(VFS_SAMFS_OBJ) @SAMFS_LIBS@ |