我有一台 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 应用程序”