una - tabla de permisos linux
preservando los permisos de archivos para samba comparte cuando se edita el archivo (1)
Finalmente pudo descubrir por qué el permiso estaba cambiando. La confusión surgió de la configuración map archive = yes
que es el valor predeterminado en Samba. Después de establecer map archive = no
, el bit de ejecución del propietario comenzó a comportarse como esperaba que se comportara.
Encontré la respuesta leyendo la documentación aquí: samba.org/samba/docs/using_samba/ch08.html en Permisos y atributos de archivos en las secciones de MS-DOS y Unix . Menciona claramente este efecto secundario:
En consecuencia, no hay uso para ninguno de los tres bits ejecutables de Unix que están presentes en un archivo en un recurso compartido de disco de Samba. Sin embargo, los archivos DOS tienen sus propios atributos que deben preservarse cuando se almacenan en un entorno Unix: el archivo, el sistema y los bits ocultos. Samba puede conservar estos bits reutilizando los bits de permisos ejecutables del archivo en el lado de Unix, si así se le indica. La asignación de estos bits, sin embargo, tiene un desafortunado efecto secundario: si un usuario de Windows almacena un archivo en un recurso compartido de Samba, y lo ve en Unix con el
ls -al
, algunos de los bits ejecutables no significarán lo que usted esperar que lo hagan.
Sin embargo, también menciona esto:
Debemos advertirle que el valor predeterminado de la opción de
map archive
esyes
, mientras que las otras dos opciones tienen un valor predeterminado deno
. Esto se debe a que muchos programas no funcionan correctamente si el bit de archivo no se almacena correctamente para los archivos de DOS y Windows. El sistema y los atributos ocultos, sin embargo, no son críticos para el funcionamiento de un programa y se dejan a la discreción del administrador.
También puede leer más sobre el bit de archivo aquí: http://en.wikipedia.org/wiki/Archive_bit
Las bases de código con las que trabajo se extraen de los repositorios de Git en mi máquina Linux. Como nuestro código de producción está escrito para ser implementado en Linux, realizo todas las pruebas en mi máquina Linux pero me gusta usar Windows para el uso diario, incluida la edición / creación de código.
Para ese propósito, he creado un recurso compartido de Samba de la carpeta (mi carpeta de inicio) donde pago el código, de esta manera:
[wgrover]
path = /home/wgrover
available = yes
valid users = wgrover
read only = no
browsable = yes
public = yes
writable = yes
Sin embargo, cuando edito un archivo de samba share //linux-box/wgrover
en Windows, el permiso de archivo en Linux sigue cambiando a 755
aunque fue 644
antes de la edición .
Esto sigue apareciendo en mi git diff
así:
diff --git a/debian/maggie.nginx.conf b/debian/maggie.nginx.conf
old mode 100644
new mode 100755
index 7cda506..7eab574
Es posible establecer una create mask
en smb.conf, pero eso tampoco "preservará" los permisos del archivo original. Puedo ignorar los cambios de modo de archivo en git estableciendo fileMode = false
en .gitconfig
pero eso también ignora el problema.
¿Hay alguna manera de preservar los permisos de archivos cuando se modifican desde Linux?