浏览代码

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. :^)
Karol Kosek 2 年之前
父节点
当前提交
8cfd445c23
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      Kernel/FileSystem/VirtualFileSystem.cpp

+ 2 - 2
Kernel/FileSystem/VirtualFileSystem.cpp

@@ -645,7 +645,7 @@ ErrorOr<void> 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<void> 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;
     }