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