Дано:
Samba 3.0.23 на FreeBSD 6.1
И снова кодировки многострадального русского языка…
Файлы к которым открыт доступ через Samba живут на отдельном разделе жёсткого диска.
Возраст файлового сервера почтенный (начинали его строить на другой машине, давно и без меня), нравы пользователей, полагаю, всем известны (следствие в виде большого количества файлов с русскими именами).
Вот только имена эти (что на исходной машине, что на новой) корректно отображаются только при обращении с виндовых машин (ни системные команды, ни smbclient не отображают кодировки корректно).
Как следствие — набор граблей с переносом данных и резервным копированием.
Поиск в Сети не дал однозначного ответа на вопрос о причинах возникновения и способах лечения.
Где здесь грабли?
И ещё интересный момент: в процессе танцев с бубном пробовал поменять системную локаль на СР866.
Не помогло.
Но последствия оказались ещё интерснее: после восстановления всех настроек на KOI8R перестала корректно отображаться кириллица в ssh-терминале (монитор подключённый собственно к серверу всё отображает корректно).
В чём глюк?
Ведь настройки ssh я не трогал, а всё остальное было возвращено на место.
Приоритет указанных задач фоновый, соответственно упираться в них — увы, непозволительная роскошь.
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark

Судя по всему, либо в конфиге самбы какая-то ерунда в значениях параметров 'dos charset' и 'unix charset’, либо они вообще отсутствуют.
Корреляции от этой секции конфига не отмечено.
недостаточно?
(судя по докам в третьей версии вместо 'unix charset' принято писать 'character set’, вопрос относительно совместимости со старой версией конфига остаётся открытым).
Как раз таки наоборот — вместо 'character set’, который использовался в версиях 2.х, надо использовать 'unix charset’.
$ grep -A1 -B1 866 /etc/samba/smb.conf map to guest = bas password dos char set = cp866 unix char set = koi8-r $ smbclient -V Version 3.0.14a-Debianсие проблем не создаёт. ;)
ssh рестартани с правильной локалью.
возможно, что-то ещё забыл восстановить.
чей-нибудь .*profile или типа того
Знаю.
Проходил.
Повторил эксперимент на свежеустановленной Самбе (т.е. ещё без данных представляющих ценность):
Результат тот же.
А именно:
Выньдоуз отображает этот файл как
Создание средствами выньдоуз файлика тест.txt
Отображается:
Не вполне понятно, что понимается под рестартом с правильной локалью.
Впрочем вопросом ssh и локали я буду заниматься потом, на досуге.
Рецептов по русификации FreeBSD в Сети достаточно.
Но вот для случая FreeBSD 6.1 (полагаю — для всей ветки 6.Х) полностью проблему не решают (почему — вопрос).
Я пользовался этим.
Итого, по шагам (для решения моей задачи достаточно первых двух):
Step 1:
Русификация консоли
Для русификации консоли достаточно в файле /etc/rc.conf в секции System console options написать следущее:
keymap=ru.koi8-r
scrnmap=koi8-r2cp866
font8×16=cp866b-8×16
font8×14=cp866-8×14
font8×8=cp866-8×8
По-умолчанию, переключение кодировок производится клавишей CapsLock.
Каждому терминалу в /etc/ttys следует изменить тип с cons25 на cons25r
ttyv0 «/usr/libexec/getty Pc» cons25r on secure
Step 2:
Поддержка LOCALE
Для поддержки LOCALE следует установить 2 переменные:
1) LANG
2) MM_CHARSET
В файле /etc/login.conf есть специальный класс:
russian login class
russian:Russian Users Accounts:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:\
:tc=default:
С помощью vipw следует каждому пользователю вашей системы изменить 5-е поле файла /etc/passwd
user:password:1111:11:russian:0:0:User Name:/home/user:/bin/csh
если вы не хотите использовать этот метод — можно сделать следущее:
В файле /etc/profile следует написать:
(для существующих пользователей в ~/.profile
export LANG=ru_RU.KOI8-R
export MM_CHARSET=KOI8-R
Но!!!
Praktica показала, что этого НЕДОСТАТОЧНО
Помогла привычка к использованию нестандартных профилей.
Любимый привычный файлик был похерен в череде переездов, в найденной в Сети наиболее близкой к привычному (естественно с прописыванием привычных alias’ов и коррекцией значений переменных) оказалась такая интересная строчка:
export TERM=${TERM:-cons25}Исправление типа терминала на правильный обеспечило желаемый эффект (полноценную поддержку кириллицы в консоли).
[b]export TERM=${TERM:-cons25r}[/b]Далее: исходя из религиозных предпочтений системная кодировка, естественно — KOI8-R, выньдоуз-кодировка — CP1251.
Соответственно после добавления в конфиг Самбы пары строчек:
всё встало на свои места (ну за исключением необходимости перекодировки имён содержимого шары).
Даже рестарта не потребовалось.
TODO:
Гостевой доступ без авторизации к одному каталогу && доступ по имени пользователя/паролю к некоторому (индивидуальному для каждого пользователя) перечню каталогов.
Контроль видимости каталогов в зависимости от пользователя.