5

Я пытаюсь выяснить, почему проявляется определенное поведение при изменении разрешения для файла, сохраняемого из редактора 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 ответа2

5

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


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

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

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

map archive = no

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

0

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

create mask = 0600 ->  create mask = 0700

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .