1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

vfs: Add VFS_OPEN_HOW_WITH_BACKUP_INTENT

Indicate BACKUP_INTENT to vfs_openat(). Why? I have a customer request
who wants to add O_NOATIME in this case to avoid metadata updates when
a backup or virus-checking application comes along.

This does not fully handle BACKUP_INTENT correctly, this would require
become_root() appropriately. We might want to do that later after a
lot of careful security audit, but this patch independently might
already provide some infrastructure for it.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>

Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Thu Oct  5 14:00:33 UTC 2023 on atb-devel-224
This commit is contained in:
Volker Lendecke 2023-09-01 14:51:47 +02:00 committed by Ralph Boehme
parent f701faf667
commit d1846452e9
3 changed files with 8 additions and 1 deletions

View File

@ -908,6 +908,7 @@ struct vfs_aio_state {
};
#define VFS_OPEN_HOW_RESOLVE_NO_SYMLINKS 1
#define VFS_OPEN_HOW_WITH_BACKUP_INTENT 2
struct vfs_open_how {
int flags;

View File

@ -664,7 +664,8 @@ static int vfswrap_openat(vfs_handle_struct *handle,
START_PROFILE(syscall_openat);
if (how->resolve & ~VFS_OPEN_HOW_RESOLVE_NO_SYMLINKS) {
if (how->resolve & ~(VFS_OPEN_HOW_RESOLVE_NO_SYMLINKS |
VFS_OPEN_HOW_WITH_BACKUP_INTENT)) {
errno = ENOSYS;
result = -1;
goto out;

View File

@ -4133,6 +4133,11 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
.flags = flags,
.mode = unx_mode,
};
if (create_options & FILE_OPEN_FOR_BACKUP_INTENT) {
how.resolve |= VFS_OPEN_HOW_WITH_BACKUP_INTENT;
}
fsp_open = open_file(req,
parent_dir_fname->fsp,
smb_fname_atname,