Pregunta

Estoy usando una máquina en la que no tengo acceso de root y me gustaría acceder a archivos en un servidor Samba en modo de acceso aleatorio. Sé que puedo transferir los archivos en su totalidad utilizando smbclient pero los archivos son muy grandes (> 1GB) y prefiero simplemente tratarlos como archivos remotos en los que puedo hacer acceso aleatorio.

El problema como se señaló es que no tengo acceso de root a esta máquina (una caja de Linux), así que no puedo montar el sistema de archivos Samba remoto.

¿Existe una solución a nivel de usuario que me permita acceder aleatoriamente al contenido de un archivo en un servidor Samba? Parece que debería ser posible hacer todo lo que el cliente del sistema de archivos del núcleo está haciendo, pero desde una aplicación de nivel de usuario.

Solo necesito acceso de solo lectura por cierto y se garantiza que el archivo remoto no cambiará.

¿Fue útil?

Solución

Para responder mi propia pregunta después de buscar en la fuente de Samba: hay una biblioteca cliente libsmbclient que incluye todas las cosas habituales de manejo de archivos: smbc_open, smbc_fstat, smbc_lseek, smbc_read, etc. Por ejemplo, aquí hay un fragmento que acabo de escribir. que lee un archivo al revés (solo para verificar que estaba haciendo una verdadera búsqueda):

fd = smbc_open(path, O_RDONLY, 0);
smbc_fstat(fd, &st);

for (offset = st.st_size - BUFLEN; offset > 0; offset -= BUFLEN) {
    smbc_lseek(fd, offset, SEEK_SET);
    smbc_read(fd, buffer, BUFLEN);
}

(comprobación de errores eliminada para mayor claridad)

Otros consejos

Intente utilizar smbmount para montar el sistema de archivos sin permisos de root:

mkdir ~/temp
smbmount //{server}/{share} ~/temp -o username=username={username},password={password}

Editar: actualizado para usar smbmount en lugar de mount.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top