Странные изменения разрешений при сохранении файла на разделе Samba из редактора Windows

Странные изменения разрешений при сохранении файла на разделе Samba из редактора Windows

Я пытаюсь выяснить, почему проявляется определенное поведение при изменении прав доступа к файлу, сохраняемому из редактора Windows на смонтированном с помощью SAMBA разделе Unix.

Ситуация:

  • У нас есть файл в Unix с правами доступа 777:

    -rwxrwxrwx 1 testuser users 4859 Jan 23 15:09 fbparser.pl*

  • Каталог, в котором находится файл, монтируется с ПК под управлением Windows 7 через Samba.

  • Открываем файл для редактирования в редакторах «Notepad++» или «Sublime».

  • При изменении и сохранении файла на стороне Unix права доступа меняются на:

    -rw-rwxrwx 1 testuser users 4859 Jan 23 15:09 fbparser.pl*

Теперь я подозреваю, что это может быть связано НЕ с монтированием Samba, потому что та же проблемаНЕпроисходит при открытии и сохранении файла в обычном Блокноте Windows!

Поэтому я изначально думал, что это потому, что упомянутые выше редакторы программирования могут быть настроены на то, чтобы - вместо того, чтобы просто сохранить файл - переименовывать исходный файл в $orig_filename.bakи затем сохранять новый контент как НОВЫЙ файл с исходным именем файла. Это основано на моем собственном предыдущем опыте решения той же проблемы с использованием редактора UltraEdit.

Однако если это является причиной изменений в завивке, я не могу объяснить два ДРУГИХ симптома, которые я наблюдал:

  • Во-первых, изначально не создается никакого файла резервной копии.

  • Во-вторых, при создании НОВЫХ файлов (с использованием touch) в том же каталоге в Unix Shell, разрешения для нового файла НЕТ -rw-rwxrwxвообще.

  • В-третьих, если это имеет значение, номер инода для файла остается прежним после редактирования.

В чем еще может быть проблема и какие шаги я могу предпринять для ее изучения?

Моя собственная проблема с UltraEdit исчезла, когда я сказал UE НЕ создавать резервную копию файла путем переименования; однако в Notepad++ такой возможности нет.

решение1

Я нашел этот вопрос, пытаясь решить очень похожую проблему. Решение в моем случае заключалось в добавлении map archive = noв глобальный раздел smb.conf.


Основная проблема заключается в способе, которым Samba сопоставляет разрешения из Dos в Linux.

Похоже, что когда notepad++ сохраняет файл, он устанавливает/сбрасывает атрибут "архив" dos-файла. По умолчанию Samba использует его для управления атрибутом выполнения для разрешений пользователя на файл.

Итак, если вы установите параметр Samba:

map archive = no

Атрибут не сопоставляется, и разрешения пользователя на выполнение сохраняются в том виде, в котором они были установлены ранее.

решение2

У меня была такая же ситуация. Мне помогло изменение параметра create mask в файле smb.conf.

create mask = 0600 ->  create mask = 0700

Связанный контент