Hi, All!как-то уже затрагивалась на форуме тема сабжа
решение так и не было найдено :(OS FFreeBSD 7.0
В ядре прописано:
options NETSMB
options LIBMCHAIN
options SMBFS
options LIBICONV
проскакивали рекомендации удалить эти записи из конфигурации ядра и подгружать соответствующие модули - результат тот же~/.nsmbrc:
[default]
workgroup=WORKGROUP
[HOST]
charsets=koi8-r:cp866
addr=host
[BSERV:USER]
password=$$1234567890
# sysctl vfs.usermount=1
$ mount_smbfs //user@host/share $HOME/mnt
выдает:
mount_smbfs: can not setup kernel iconv table (koi8-r:tolower): syserr = Operation not permittedПомогает:
# chmod 4555 /usr/sbin/mount_smbfs
(the setuid bit)
но полагаю это не решение проблемыкак решить проблему?
заранее спасибо.
>как решить проблему?
>заранее спасибо.Для перекодировки имен файлов на iso9660/msfosfs/smbfs используется kernel iconv (kiconv). Проблема в том, что для каждой кодировки нужна своя таблица; загрузить сразу все таблицы - лсишком много памяти, позволить юзеру загружать таблицы нельзя по этой же причине (возможен Denial of service).
Правильное решение, по идее, - подгрузить нужные таблицы при загрузке системы. Можно поискать утилку для этого (думаю, их написано не одна и не две, даже у меня своя была, но сейчас найти не могу).
Альтернативные решения:
- один раз смонтировать систему с нужной кодировкой от рута - таблица загрузится и далее будет работать mount от юзера. Можно для этого сделать маленький образ с msdosfs и монтиовать его через md с соответствующими параметрами кодировок. Геморрой, да.
- монтировать эту smbfs от рута/через sudo/из fstab
- монтировать через amd - тоже вполне прямое решение
>Правильное решение, по идее, - подгрузить нужные таблицы при загрузке системы. Можно
>поискать утилку для этого (думаю, их написано не одна и не
>две, даже у меня своя была, но сейчас найти не могу).а как подгрузить, по какому принципу?
>Альтернативные решения:
>- один раз смонтировать систему с нужной кодировкой от рута - таблица
>загрузится и далее будет работать mount от юзера. Можно для этого
>сделать маленький образ с msdosfs и монтиовать его через md с
>соответствующими параметрами кодировок. Геморрой, да.почему-то не срабатывает :(
>- монтировать эту smbfs от рута/через sudo/из fstab
fstab не понимает "~/mnt" в точке монтирования
моннировать надо пользователю (из скрипта)
к тому же не пользователь один
>- монтировать через amd - тоже вполне прямое решениессылку на доку ПЛИЗ
>>Правильное решение, по идее, - подгрузить нужные таблицы при загрузке системы. Можно
>>поискать утилку для этого (думаю, их написано не одна и не
>>две, даже у меня своя была, но сейчас найти не могу).
>а как подгрузить, по какому принципу?Описанно в man kiconv.
Думаю, как-то так:---
#include <stdio.h>
#include <sys/types.h>
#include <sys/iconv.h>int main() {
return kiconv_add_xlat16_cspairs("cp866", "koi8-r");
}
---
gcc -o kiconvutil kiconvutil.c -lkiconv
---
# kiconvutil; echo $?
0
--->>Альтернативные решения:
>>- один раз смонтировать систему с нужной кодировкой от рута - таблица
>>загрузится и далее будет работать mount от юзера. Можно для этого
>>сделать маленький образ с msdosfs и монтиовать его через md с
>>соответствующими параметрами кодировок. Геморрой, да.
>почему-то не срабатывает :(Всегда работало.
>>- монтировать эту smbfs от рута/через sudo/из fstab
>fstab не понимает "~/mnt" в точке монтирования
>моннировать надо пользователю (из скрипта)
>к тому же не пользователь одинИмелось в виду это:
//aaa@bbb/ccc /home/user1/mnt
//aaa@bbb/ccc /home/user2/mnt
//aaa@bbb/ccc /home/user3/mnt
//aaa@bbb/ccc /home/user4/mnt
...>>- монтировать через amd - тоже вполне прямое решение
>ссылку на доку ПЛИЗ
>[оверквотинг удален]
>решение так и не было найдено :(
>
>~/.nsmbrc:
>[default]
>workgroup=WORKGROUP
>[HOST]
>charsets=koi8-r:cp866
>addr=host
>[BSERV:USER]
>password=$$1234567890А у меня вообще charsets выключен, а монтирую с флагами -d 0777 и -f 0777