我有一台 Windows 7 机器和一台 Linux 机器。我可以从Linux机器上正确访问Windows机器上的文件。但是,当我在 Windows 机器上查看 Linux 和 Cygwin 的权限时,它们并不相同。
我的理解是,文件系统权限本身是由访问控制列表(ACL)管理的,在连接时,Cygwin 和 Samba 将这些权限映射到 POSIX 文件系统权限(ACL 的子集),这是正确的吗?我需要启用某些功能才能samba.conf
执行此操作吗?
# Linux machine (incorrect file permissions)
» ll .gitignore
-rwx------ 1 michael users 57 Oct 28 10:41 .gitignore
# Windows machine (via cygwin, correct file permissions)
$ ll .gitignore
-rw-r--r-- 1 hauserra Domain Users 57 Oct 28 10:41 .gitignore
有没有什么方法可以让这两个盒子使用相同的文件权限语言,这样我就可以从 Linux 修改 Windows 盒子上的文件,而不会严重破坏事情?
答案1
因此,我非常接近使用 smb 的答案,但回到我的计算机时,它停止识别另一台计算机,我将描述该解决方案,然后描述我使用的(在我看来更简单的)解决方案,并提及其优点和缺点两个都。
我的第一个解决方案是尝试让 smb 识别 Windows ACL,以便它将权限转换为正确的 posix 权限,这会导致创建该文件的用户不会显示(参见这个问题)。这产生了足够可接受的结果(文件权限在两台计算机之间正确传输,并且在linux端修改文件不会修改任何权限,这是我期望的目标)。通过重新启动可以正常工作,但第二天就停止工作了(我认为是网络问题)。为了获得目录自动挂载,我执行了以下操作:
#smb.conf
[global]
...
inherit acls = Yes
map acl inherit = Yes
acl group control = yes
在 smb.conf 中
#/etc/fstab
//YourServerName/YourSharedFile /mnt/host cifs cifsacl,user=bar,password=foo,workgroup=WorkGroup,ip=your_ip_address_of_server 0 0
您还可以添加身份验证文件,以便您的密码和用户名至少受到保护。
然而,这不是最好的解决方案,因此根据评论中 @barrycarter 的建议,我决定使用 sshfs (这非常简单)。
设置的详细说明位于这里但相关的主要命令是
sshfs USERNAME@HOSTNAME_OR_IP:/PATH LOCAL_MOUNT_POINT SSH_OPTIONS
现在来比较一下它们。这个基准实际上似乎表明 sshfs 实际上比 samba 更快,但对此似乎有很多不同的意见。设置起来肯定要简单得多。