在编辑文件时保留samba共享的文件权限

 雨天是最美 发布于 2023-02-06 10:53

我使用的代码库从Git存储库检出到我的Linux机器上.由于我们的生产代码是为部署在Linux上编写的,因此我在Linux机器上进行了所有测试,但是喜欢使用Windows进行日常使用,包括代码编辑/创作.

为此,我创建了一个文件夹(我的主文件夹)的Samba共享,我在那里签出代码,如下所示:

[wgrover]
    path = /home/wgrover
    available = yes
    valid users = wgrover
    read only = no
    browsable = yes
    public = yes
    writable = yes

但是,当我从\\linux-box\wgroverWindows中的samba共享编辑文件时,755即使644在编辑之前,Linux中的文件权限也会不断变化.

这一直在我git diff这样出现:

diff --git a/debian/maggie.nginx.conf b/debian/maggie.nginx.conf
old mode 100644
new mode 100755
index 7cda506..7eab574

可以create mask在smb.conf中设置,但也不会"保留"原始文件权限.我可以通过设置忽略git中的文件模式更改fileMode = false,.gitconfig但也忽略了问题.

从linux修改文件权限有什么办法可以保留文件权限吗?

1 个回答
  • 最终可以弄清楚许可的变化原因.混淆源于map archive = yes设置是Samba中的默认值.设置后map archive = no,所有者执行位开始表现得像我预期的那样.

    通过阅读以下文档找到答案:http://www.samba.org/samba/docs/using_samba/ch08.html在MS-DOS和Unix上文件权限和属性部分.它清楚地提到了这种副作用:

    因此,Samba磁盘共享中的文件中存在的三个Unix可执行位中的任何一个都没有用处.但是,DOS文件在Unix环境中存储时需要保留自己的属性:归档,系统和隐藏位.Samba可以通过重用Unix端文件的可执行权限位来保留这些位 - 如果它被指示这样做的话.然而,映射这些位有一个不幸的副作用:如果Windows用户将文件存储在Samba共享中,并且您在Unix上使用该ls -al命令查看它,则某些可执行位将不代表您对它们的期望.

    但是,它也提到了这一点:

    我们应该警告您map archive选项的默认值是yes,而其他两个选项的默认值是no.这是因为如果没有为DOS和Windows文件正确存储存档位,许多程序将无法正常工作.但是,系统和隐藏属性对于程序的操作并不重要,由管理员自行决定.

    您还可以在此处阅读有关存档位的更多信息:http://en.wikipedia.org/wiki/Archive_bit

    2023-02-06 10:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有