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