例如,root用户触摸普通用户(名为bob)主目录下的新文件:
/home/bob $ ls -alh a.txt
-rw-r--r-- 1 root root 0 Jul 16 17:45 a.txt
现在用户bob用vim打开它,它应该是readonly。
我尝试强制使用:w!
覆盖它,并将其保存并将owner:group
更改为bob:
/home/bob $ ls -alh a.txt
-rw-r--r-- 1 bob bob 4 Jul 16 17:47 a.txt
IMO,我认为无法通过权限被拒绝保存,但它可以,并且所有者:组也已更改。
这只能在bob的主目录下,如果在外部目录下,如/ tmp或其他目录,则无法按照我的想法编写。
任何人都能解释一下吗? :w!
实际做了哪些流程? THX。
答案 0 :(得分:3)
Bob可以读取该文件,因此Bob可以在Vim中打开它。
该目录可由Bob写入,因此Bob可以取消链接(删除)其中的任何文件,并将任何新文件写入其中。这是使用:w!
时发生的情况。
/tmp
目录不是这样,因为它可能设置了“粘性”位。
来自OS X sticky(8)
手册:
设置了'sticky bit'的目录成为仅附加目录,或者更准确地说,是删除文件的目录 受到限制。粘贴目录中的文件只能被删除或 如果用户具有该目录的写入权限,则由用户重命名 并且用户是文件的所有者,目录的所有者或 超级用户。此功能非常适用于此类目录 作为
/tmp
,必须是公开可写的,但应该拒绝用户 许可任意删除或重命名彼此的文件。