Сохранение прав доступа к файлам для общих ресурсов samba при редактировании файла

Основы кода, с которыми я работаю, извлекаются из репозиториев Git на мою Linux-машину. Поскольку наш производственный код написан для развертывания в Linux, я провожу все тестирование на своем компьютере с Linux, но люблю использовать Windows для повседневного использования, включая редактирование / авторизацию кода.

Для этого я создал общий ресурс Samba для папки (моя домашняя папка), куда я извлекаю код, например:

[wgrover]
    path = /home/wgrover
    available = yes
    valid users = wgrover
    read only = no
    browsable = yes
    public = yes
    writable = yes

Тем не менее, когда я редактирую файл из общего ресурса самбы \\linux-box\wgrover в Windows разрешение файла в Linux постоянно меняется на 755 хотя это было 644 до редактирования.

Это продолжает появляться в моем git diff как это:

diff --git a/debian/maggie.nginx.conf b/debian/maggie.nginx.conf
old mode 100644
new mode 100755
index 7cda506..7eab574

Можно установить create mask в smb.conf, но это также не "сохранит" исходные права доступа к файлу. Я могу игнорировать изменения режима файла в git, установив fileMode = false в .gitconfig но это также игнорирует проблему.

Есть ли способ сохранить права доступа к файлам при их изменении из linux?

1 ответ

Решение

Может наконец выяснить, почему разрешение менялось. Путаница возникла из map archive = yes настройка является значением по умолчанию в Samba. После настройки map archive = no, бит выполнения владелец начал вести себя так, как я ожидал.

Чтобы найти ответ, прочитайте документацию здесь: http://www.samba.org/samba/docs/using_samba/ch08.html в разделе " Права доступа к файлам и атрибуты в MS-DOS и Unix ". Это ясно упоминает этот побочный эффект:

Следовательно, нет никакого смысла ни для одного из трех исполняемых битов Unix, которые присутствуют в файле на общем диске Samba. Файлы DOS, однако, имеют свои собственные атрибуты, которые необходимо сохранять при хранении в среде Unix: архив, система и скрытые биты. Samba может сохранить эти биты, повторно используя исполняемые биты прав доступа к файлу на стороне Unix - если это предписано. Однако отображение этих битов имеет неприятный побочный эффект: если пользователь Windows сохраняет файл в общем ресурсе Samba и вы просматриваете его в Unix с помощью ls -al команда, некоторые из исполняемых битов не будут означать то, что вы ожидаете от них.

Тем не менее, он также упоминает это:

Мы должны предупредить вас, что значение по умолчанию map archive вариант yes в то время как другие две опции имеют значение по умолчанию no, Это связано с тем, что многие программы не работают должным образом, если бит архива хранится неправильно для файлов DOS и Windows. Системные и скрытые атрибуты, однако, не являются критичными для работы программы и оставляются на усмотрение администратора.

Вы также можете прочитать больше об архиве немного здесь: http://en.wikipedia.org/wiki/Archive_bit

Другие вопросы по тегам