Дано:
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
Судя по всему, либо в конфиге самбы какая-то ерунда в значениях параметров 'dos charset' и 'unix charset’, либо они вообще отсутствуют.
Корреляции от этой секции конфига не отмечено.
недостаточно?
(судя по докам в третьей версии вместо 'unix charset' принято писать 'character set’, вопрос относительно совместимости со старой версией конфига остаётся открытым).
Как раз таки наоборот — вместо 'character set’, который использовался в версиях 2.х, надо использовать 'unix charset’.
сие проблем не создаёт. ;)
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’ов и коррекцией значений переменных) оказалась такая интересная строчка:
Исправление типа терминала на правильный обеспечило желаемый эффект (полноценную поддержку кириллицы в консоли).
Далее: исходя из религиозных предпочтений системная кодировка, естественно — KOI8-R, выньдоуз-кодировка — CP1251.
Соответственно после добавления в конфиг Самбы пары строчек:
всё встало на свои места (ну за исключением необходимости перекодировки имён содержимого шары).
Даже рестарта не потребовалось.
TODO:
Гостевой доступ без авторизации к одному каталогу && доступ по имени пользователя/паролю к некоторому (индивидуальному для каждого пользователя) перечню каталогов.
Контроль видимости каталогов в зависимости от пользователя.