为什么 sed 更改 cifs 挂载共享上的文件的权限?

为什么 sed 更改 cifs 挂载共享上的文件的权限?

我有一台 Arch Linux 机器,它使用以下 fstab 条目来挂载共享:

//192.168.3.1/Documents        /mnt/  cifs    credentials=/home/tal/.smbcredentials,rw,x-systemd.automount,iocharset=utf8,file_mode=0600,dir_mode=0700,uid=tal 0 0

共享文件夹的服务器是Windows服务器,共享文件夹所在的分区是NTFS。

使用上面的 fstab 条目,共享在启动时安装得很好。正如预期的那样,所有文件似乎/mnt/都属于“tal”,并且具有 0600 权限。 /mnt 下新创建的文件也属于 tal 所有(无论它们是由 root 还是 tal 创建的),并且具有 0600 权限,正如预期的那样。

问题是,如果我在 /mnt 下有一个文件:

-rw------- tal root 1000 test.txt

我在上面运行这个:

sed -i -e '1,2d' test.txt

要删除前 2 行,这 2 行将被删除,但文件的权限将更改为:

-r-------- tal root 1000 test.txt

为什么 sed 改变文件权限?查看 test.txt 的 inode,我可以看出 sed 的-i选项使用新内容重新创建文件,而不是修改文件,但这并不重要 - 所有新创建的文件都/mnt应该获得 0600 权限。

作为测试,我使用 vim 修改了同一文件并检查了 inode。 Vim 还会就地重新创建文件而不是修改它,但当 vim 执行此操作时,权限仍为 0600。

答案1

不确定是否相关:我记得 AD 用户可以选择在用户成员资格中指定“主组”“如果您有 mac 客户端或 posix 应用程序”

相关内容