From 8cfd445c23dce63d0a2510bd75bdd9ee8a76197e Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Thu, 1 Sep 2022 14:16:32 +0200 Subject: [PATCH] Kernel: Allow to remove files from sticky directory if user owns it It's what the Linux chmod(1) manpage says (in the 'Restricted Deletion Flag or Sticky Bit' section), and it just makes sense to me. :^) --- Kernel/FileSystem/VirtualFileSystem.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index 6409c43896..47edde7dbf 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -645,7 +645,7 @@ ErrorOr VirtualFileSystem::rename(Credentials const& credentials, Custody& return EACCES; if (old_parent_inode.metadata().is_sticky()) { - if (!credentials.is_superuser() && old_inode.metadata().uid != credentials.euid()) + if (!credentials.is_superuser() && old_parent_inode.metadata().uid != credentials.euid() && old_inode.metadata().uid != credentials.euid()) return EACCES; } @@ -807,7 +807,7 @@ ErrorOr VirtualFileSystem::unlink(Credentials const& credentials, StringVi return EACCES; if (parent_inode.metadata().is_sticky()) { - if (!credentials.is_superuser() && inode.metadata().uid != credentials.euid()) + if (!credentials.is_superuser() && parent_inode.metadata().uid != credentials.euid() && inode.metadata().uid != credentials.euid()) return EACCES; }