Использование Samba для произвольного доступа без монтирования файловой системы? - PullRequest
2 голосов
/ 05 ноября 2008

Я использую машину, на которой у меня нет доступа с правами root, и я хочу получить доступ к файлам на сервере Samba в режиме произвольного доступа. Я знаю, что могу передать файлы целиком, используя smbclient, но файлы очень большие (> 1 ГБ), и я предпочел бы просто обращаться с ними как с удаленными файлами, к которым я могу осуществлять произвольный доступ.

Проблема, как уже отмечалось, заключается в том, что у меня нет root-доступа к этой машине (Linux box), поэтому я не могу смонтировать удаленную файловую систему Samba.

Существует ли решение на уровне пользователя, которое позволит мне произвольно получать доступ к содержимому файла на сервере Samba? Кажется, должно быть возможно сделать все, что делает клиент файловой системы ядра, но из приложения уровня пользователя.

Мне нужен только доступ только для чтения, и удаленный файл гарантированно не изменится.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2008

Чтобы ответить на мой собственный вопрос после поиска в исходном коде Samba: есть клиентская библиотека libsmbclient, которая включает в себя все обычные вещи для обработки файлов: smbc_open, smbc_fstat, smbc_lseek, smbc_read и т. Д. Например, вот фрагмент, который я только что написал который читает файл в обратном направлении (просто чтобы убедиться, что он выполнял истинный поиск):

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);
}

(проверка ошибок удалена для ясности)

1 голос
/ 05 ноября 2008

Попробуйте использовать smbmount для монтирования файловой системы без прав root:

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

Редактировать: Обновлено для использования smbmount вместо mount.

...