【问题标题】:preserving file permissions for samba shares when file is edited编辑文件时保留 samba 共享的文件权限
【发布时间】:2014-01-24 09:12:17
【问题描述】:

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

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

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

但是,当我在 Windows 中编辑来自 samba 共享 \\linux-box\wgrover 的文件时,Linux 中的文件权限不断更改为 755,即使在编辑之前它是 644

这不断出现在我的git diff 中,如下所示:

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

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

有没有办法在从 linux 修改文件时保留文件权限?

【问题讨论】:

  • 我的 /etc/login.defs 说 UMASK 022,这有关系吗?
  • @ElliottFrisch 我尝试使用 umask 值,但没有成功。你对你看到的任何文件有任何参考吗?
  • @ElliottFrisch 我知道 umask。我想知道您为什么认为 umask 会创建 samba 文件,以及是否有您所指的任何文档。
  • Yes。我找到了几张documentation
  • @ElliottFrisch 这些都是关于 umask 影响 samba 文件创建的用户问题。据我了解,它没有。这就是 Samba 中有 create maskdirectory mask 设置的原因。如果您有空闲时间,请在此处阅读 Creation Masks 部分:samba.org/samba/docs/using_samba/ch08.html - 它解释了为什么 umask 不影响 samba。

标签: linux chmod samba


【解决方案1】:

终于可以弄清楚为什么权限会发生变化。混淆源于map archive = yes 设置是 Samba 中的默认值。设置map archive = no 后,所有者执行位开始表现得像我预期的那样。

通过阅读此处的文档找到答案:http://www.samba.org/samba/docs/using_samba/ch08.htmlMS-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

【讨论】:

  • 感谢您的关注;我今天遇到了同样的问题,这个答案挽救了一天!
  • 哈,我到这里时遇到了 exact 相同的问题(git diff 显示 644-755 权限更改),谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 2012-02-18
  • 1970-01-01
  • 2020-05-03
相关资源
最近更新 更多