服务器上创建的文件显示为只读

服务器上创建的文件显示为只读

当我使用 cygwin 在 Windows 服务器上创建文件时,生成的文件似乎是只读的。例如 echo > hallo.txt

生成具有以下权限的文件:

Path              : Microsoft.PowerShell.Core\FileSystem::\\rh-data-s01\Abteilungen\Neue Medien\hallo.txt
FileSystemRights  : WriteExtendedAttributes, ExecuteFile, DeleteSubdirectoriesAndFiles, ReadPermissions
AccessControlType : Deny
IdentityReference : NULL SID
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

Path              : Microsoft.PowerShell.Core\FileSystem::\\rh-data-s01\Abteilungen\Neue Medien\hallo.txt
FileSystemRights  : Write, Delete, Read, ChangePermissions, TakeOwnership, Synchronize
AccessControlType : Allow
IdentityReference : S-1-15-3-1024-1065365936-1281604716-3511738428-1654721687-432734479-3232135806-4053264122-3456934681
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

Path              : Microsoft.PowerShell.Core\FileSystem::\\rh-data-s01\Abteilungen\Neue Medien\hallo.txt
FileSystemRights  : ExecuteFile
AccessControlType : Deny
IdentityReference : S-1-5-32-4028125388-2803578072-1053907958-341417128-2434011155-477421480-740873757-3973419746
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

Path              : Microsoft.PowerShell.Core\FileSystem::\\rh-data-s01\Abteilungen\Neue Medien\hallo.txt
FileSystemRights  : ReadAndExecute, Synchronize
AccessControlType : Allow
IdentityReference : S-1-5-32-4028125388-2803578072-1053907958-341417128-2434011155-477421480-740873757-3973419746
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

Path              : Microsoft.PowerShell.Core\FileSystem::\\rh-data-s01\Abteilungen\Neue Medien\hallo.txt
FileSystemRights  : Read, Synchronize
AccessControlType : Allow
IdentityReference : Everyone
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

对于此文件,Windows 建议“重新排序”文件权限。我浏览了 posix 权限页面,但找不到解决方案。

如何创建一个以后可以访问的文件而不需要摆弄访问权限?

答案1

默认情况下,cygwin 尝试将 NTFS ACL 与 POSIX 权限匹配。

来自文档

在 NTFS 上,文件权限使用附加到文件的访问控制列表 (ACL) 进行评估。可以使用 /etc/fstab 或 /etc/fstab.d/$USER 文件中相应挂载点的“noacl”选项关闭此功能。有关文件权限的更多信息,请参阅“POSIX 帐户、权​​限和安全”一节。

因此使用noacl安装或将你的 Windows / NTFS 映射到 POSIX 帐户

Cygwin 的 SID 和 uid/gid 值之间的映射有两种方式。

如果存在 /etc/passwd 和 /etc/group 文件,则读取它们,就像以前一样,主要是为了向后兼容。

如果没有文件,或者文件中缺少条目,则询问 Windows。

至少,这是现在的默认行为。可以使用文件 /etc/nsswitch.conf 对其进行配置,该文件将在“/etc/nsswitch.conf 文件”一节中讨论。现在让我们来探索一下默认行为。

如果 passwd 或 group 文件存在,则在需要从 SID 到 uid/gid 或帐户名的映射时,将根据需要扫描它们。新机制永远不会将整个文件读入内存,而只会扫描请求的条目并将其缓存在内存中。

如果没有找到条目,或者没有密码或组文件,Cygwin 将询问操作系统。

这也可以通过 SMB 或 NFS 帐户完成。因此,只需选择您需要的毒药即可。

相关内容