Когда я создаю файл на сервере Windows с помощью cygwin, полученный файл доступен только для чтения. Например 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, но не нашел решения.
Как мне создать файл, к которому можно будет получить доступ позже, без необходимости возиться с правами доступа?
По умолчанию cygwin пытается сопоставить списки ACL NTFS с разрешениями POSIX.
Из документы:
В NTFS права доступа к файлам оцениваются с помощью списков управления доступом (ACL), прикрепленных к файлу. Это можно отключить с помощью параметра «noacl» для соответствующей точки монтирования в файле / etc / fstab или /etc/fstab.d/$USER. Для получения дополнительной информации о правах доступа к файлам см. Раздел «Учетные записи 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. Так что просто выберите свой яд.