背景描述:
某公司文件服务器上某部门文件夹对非本部门成员设置的是只读权限,由于工作原因需要将部门文件夹下的一个excel文档给予全体员工修改权限,于是就给此excel文档单独设置开放修改权限给全体员工,但是发现编辑后无法保存。
问题复现:
首先我在测试机上将问题复现然后研究,避免研究过程中做一些更改导致一些未知的的后果。 如下图所示,我新建了一个【信息技术部】的文件夹,Test用户作为非本部门成员,对此文件夹只有读取权限。 对于【信息技术部】里的【测试excel文档】,Test用户拥有修改权限。 但是Test用户在编辑文档后,出现了无法保存的问题。系统提示“拒绝访问。请与管理员联系。”但是此文档明明已经给予了Test用户修改权限,令人百思不得其解。
测试与猜想:
我在此文件夹下新建一些txt、word、ppt文档,同样给予Test用户,发现txt文档可以正常保存不会出错,office文档都会出现此错误。看来原因更可能是与office文档有关,不像是服务器的问题。
随后我突然注意到,当我打开编辑excel文档时,电脑会生成一个带~$ 前缀的隐藏文件。 这其实是一个隐藏的临时缓存文件,以前没有太关注这个文件的作用。这次突然出现问题,我突然想会不会是跟这个临时文件有关? 因为excel文档我是已经给予了修改权限的,而这个临时文件是新生成的,权限是继承上级文件夹,所以Test用户对于此临时文件是只有只读权限的。 假如就是跟此临时文件有关,那么我猜想比较可能的原因就是就是此excel文档保存的机制就是保存过的文档存放在临时文件中,当我们保存文件时,临时文件变成最新版本的文档,旧的文档删除。
验证猜想:
为了验证此猜想,我把文件夹给予Test用户新建和写入权限,没有删除权限。如果猜想正确的话,那么保存文档之后文件夹下可能会多出一个文件出来。 随后保存文档,果然多出了一个tmp格式的临时文件。并且将tmp格式文件重命名成xlsx格式,打开之后里面就是我们想要保存的数据。
随后我再给予Test用户删除权限,随后编辑保存excel文档,excel文档就能正常保存了,进一步验证了我的猜想正确。
总结:
总结一下,Office文档保存的机制如下: 1、打开office文档后,系统会生成隐藏的临时文件,对文档的编辑都临时保存在临时文件中。 2、当我们保存文档时,临时文件转变成tmp格式的文件,里面存放有最新版本的数据 3、删除旧版本的文档 4、将tmp格式文件重命名成原来的文件名和后缀
这个机制只是我猜想的,不一定完全正确。
解决方法:
明白了大概的机制之后就好办了,为了满足用户的需求,我们可以在信息技术部下新建一个文件夹,同时给予相应员工修改权限,之后放在里面的office文档就能正常编辑保存了。
过了很久之后,偶然翻阅了一篇帖子,里面的对临时文件介绍的更加详细。
https://tieba.baidu.com/p/93811988?red_tag=3450071817
|