我了解从设置了粘性位的目录中创建/删除文件需要以下操作之一
- 你是根
- 您是该文件的所有者
- 您是该目录的所有者
并且您还必须+w
在目录中。
问题出+x
在目录上。据我所知,如果未设置目录的粘性位,+x
则需要在其中创建/删除文件。然而,我的教授说,如果设置了粘性位,则+x
不需要。
我在 Ubuntu 16.04 上尝试过,+x
即使设置了粘性位,似乎仍然需要它。
Bob@david-VirtualBox:/home/Alice$ ls -ld InBox/
drwx----wT 2 Alice Alice 4096 十一 7 01:09 InBox/
Bob@david-VirtualBox:/home/Alice$ touch InBox/some_file
touch: cannot touch 'InBox/some_file': Permission denied
Bob@david-VirtualBox:/home/Alice$ rm InBox/link
rm: cannot remove 'InBox/link': Permission denied
Bob@david-VirtualBox:/home/Alice$ su Alice
Password:
Alice@david-VirtualBox:~$ chmod 1703 InBox/
Alice@david-VirtualBox:~$ su Bob
Password:
Bob@david-VirtualBox:/home/Alice$ touch InBox/some_file
Bob@david-VirtualBox:/home/Alice$ rm InBox/link
Bob@david-VirtualBox:/home/Alice$
我的问题
- 这种行为在不同的发行版中是否一致或在某些标准中有所描述?
- 我尝试谷歌,但大多数关于目录粘性位的资源都强调上述三点。我想知道我的教授这么说是否有一些(历史上的?)原因。
如果有人问,我会直接问我的教授是否回复我的电子邮件:(
先感谢您。
答案1
你的教授错了:
如果您想从目录中删除某些内容,您需要所谓的“搜索权限”,这是由目录上的 x 位授予的。
如果没有 x 位,则无法验证要删除的文件是否存在。