Странные изменения прав при сохранении файла в разделе 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 ++ не имеет такой возможности.

2 ответа

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


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

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

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

map archive = no

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

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

create mask = 0600 ->  create mask = 0700
Другие вопросы по тегам