如何使 Windows 机器无法删除 Linux Samba 服务器上的目录(而不是其内容)?

如何使 Windows 机器无法删除 Linux Samba 服务器上的目录(而不是其内容)?

标题说明了一切。(这是真正合适的少数情况之一。:P)

答案1

Linux 端的一个老技巧可能在这里有用:

mkdir StayingAlive
sudo touch StayingAlive/.CantTouchThis
sudo chattr +i StayingAlive/.CantTouchThis

这里的关键是 上的不可变属性.CantTouchThis(您可能想要一个更严肃的名称,例如.rootfile)。此属性可防止文件被删除(甚至修改)——即使 root 也无法在不先删除该属性的情况下删除它。此文件将防止目录被清空,因此防止目录被删除。

过去我这样做时,通常还会更改文件夹的所有权,并通过 setgid 位 (g+s) 授予用户访问权限——尽管我暂时想不通这样做背后的原因

sudo chown root.user StayingAlive
sudo chmod g+sw StayingAlive

答案2

为了删除目录,该目录必须是空的,并且您必须对其父目录具有写权限。

因此,您可以像 STW 建议的那样防止目录变空,或者确保用户对目录的父目录没有写权限,并且不允许删除该目录。

假设您有一个名为 的目录/foo/bar和一个名为 的文件/foo/bar/file,则对 具有写入权限的用户/foo/bar可以删除该文件。但对 具有写入权限/foo/bar并不意味着有权删除/foo/bar,删除需要对 具有写入权限/foo

相关内容