Использование Samba для произвольного доступа без монтирования файловой системы?
-
06-07-2019 - |
Вопрос
Я использую компьютер, на котором у меня нет доступа с правами root, и я хочу получить доступ к файлам на сервере Samba в режиме произвольного доступа. Я знаю, что могу передать файлы целиком с помощью smbclient, но файлы очень большие (> 1 ГБ), и я бы предпочел просто обращаться с ними как с удаленными файлами, к которым я могу осуществлять произвольный доступ.
Проблема, как уже отмечалось, заключается в том, что у меня нет root-доступа к этому компьютеру (в комплекте с Linux), поэтому я не могу смонтировать удаленную файловую систему Samba. Р>
Существует ли решение на уровне пользователя, которое позволит мне произвольно получать доступ к содержимому файла на сервере Samba? Кажется, должно быть возможно сделать все, что делает клиент файловой системы ядра, но из приложения уровня пользователя.
Мне нужен только доступ только для чтения, и удаленный файл гарантированно не изменится.
Решение
Чтобы ответить на мой собственный вопрос после поиска в исходном коде 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);
}
(проверка ошибок удалена для ясности)
Другие советы
Попробуйте использовать smbmount
для монтирования файловой системы без прав root:
mkdir ~/temp
smbmount //{server}/{share} ~/temp -o username=username={username},password={password}
Изменить: обновлено использование smbmount
вместо mount
.