Nota: Solo estoy adivinando aquí, no soy un samba guru.
Samba / CIFS, al menos la forma en que lo está utilizando aquí, no reproduce credenciales entre el servidor y el cliente. Debido a la force user
directiva en el servidor, todas las operaciones se realizan como el usuario erpm
en el servidor. Sin embargo, debido a que tanto el cliente como el servidor ejecutan un sistema unix, negociaron automáticamente las extensiones POSIF CIFS . Esto hace que los permisos de Unix parezcan funcionar hasta cierto punto, pero solo en la medida en que el servidor lo permita, y se ha topado con un caso en el que lo que afirman los permisos de Unix y lo que permite el servidor difieren.
Notarás que todos los archivos aparecen como ID de usuario 501. Ese es su uid en el servidor.
Cuando intenta crear o eliminar un archivo, esto requiere permiso de escritura en el directorio. Todos los accesos se asignan a un solo usuario en el servidor, por lo que el permiso de escritura se reduce a si erpm
se permite escribir en ese directorio en el servidor. La respuesta es sí.
Cuando ejecuta touch
, crea el archivo y luego cambia su hora de modificación. Cambiar el tiempo de modificación de un archivo requiere propiedad, y esto se prueba mediante el código genérico del sistema de archivos, en el lado del cliente.
Si ejecuta strace touch test
, notará que la open
llamada (que crea el archivo) tiene éxito, entonces la utimes
llamada (o más bien en Linux, la utimensat
llamada del sistema) no puede establecer los tiempos.
Esto es realmente un poco extraño porque utimes
debería tener éxito, ya que lo touch
llama con un argumento NULL (que significa "establecer la marca de tiempo a la hora actual"), y se supone que está permitido a cualquier persona que llame que pueda escribir en el archivo, y no solo al propietario le gusta establecer una marca de tiempo arbitraria. Sospecho que en utimensat
realidad está haciendo una verificación basada en permisos y determinando que los permisos dicen que no puede escribir en ese archivo, a pesar de que el sistema de archivos permitiría una operación de escritura independientemente de los permisos reales.
La principal ventaja de las extensiones POSIX de CIFS cuando el lado del servidor se ejecuta con los permisos de un usuario no root es transferir el bit ejecutable y posiblemente la propiedad del grupo. Puede ser menos confuso si asigna la propiedad del usuario a un solo usuario del lado del cliente con la forceuid
opción de montaje.