瀏覽代碼

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;
     }