nixp.ru v3.0

25 января 2017,
среда,
04:15:22 MSK

DevOps с компанией «Флант»
Anarchist написал 27 сентября 2006 года в 17:20 (1440 просмотров) Ведет себя как мужчина; открыл 258 тем в форуме, оставил 4097 комментариев на сайте.

Дано:

Samba 3.0.23 на FreeBSD 6.1

И снова кодировки многострадального русского языка…

Файлы к которым открыт доступ через Samba живут на отдельном разделе жёсткого диска.

Возраст файлового сервера почтенный (начинали его строить на другой машине, давно и без меня), нравы пользователей, полагаю, всем известны (следствие в виде большого количества файлов с русскими именами).

Вот только имена эти (что на исходной машине, что на новой) корректно отображаются только при обращении с виндовых машин (ни системные команды, ни smbclient не отображают кодировки корректно).

Как следствие — набор граблей с переносом данных и резервным копированием.

Поиск в Сети не дал однозначного ответа на вопрос о причинах возникновения и способах лечения.

Где здесь грабли?

И ещё интересный момент: в процессе танцев с бубном пробовал поменять системную локаль на СР866.

Не помогло.

Но последствия оказались ещё интерснее: после восстановления всех настроек на KOI8R перестала корректно отображаться кириллица в ssh-терминале (монитор подключённый собственно к серверу всё отображает корректно).

В чём глюк?

Ведь настройки ssh я не трогал, а всё остальное было возвращено на место.

Приоритет указанных задач фоновый, соответственно упираться в них — увы, непозволительная роскошь.

fly4life
Anarchist
Дано:

Samba 3.0.23 на FreeBSD 6.1

И снова кодировки многострадального русского языка…

Файлы к которым открыт доступ через Samba живут на отдельном разделе жёсткого диска.

Возраст файлового сервера почтенный (начинали его строить на другой машине, давно и без меня), нравы пользователей, полагаю, всем известны (следствие в виде большого количества файлов с русскими именами).

Вот только имена эти (что на исходной машине, что на новой) корректно отображаются только при обращении с виндовых машин (ни системные команды, ни smbclient не отображают кодировки корректно).

Как следствие — набор граблей с переносом данных и резервным копированием.

Поиск в Сети не дал однозначного ответа на вопрос о причинах возникновения и способах лечения.

Где здесь грабли?

Судя по всему, либо в конфиге самбы какая-то ерунда в значениях параметров 'dos charset' и 'unix charset’, либо они вообще отсутствуют.

Anarchist
fly4life
Судя по всему, либо в конфиге самбы какая-то ерунда в значениях параметров 'dos charset' и 'unix charset’, либо они вообще отсутствуют.

Корреляции от этой секции конфига не отмечено.

dos charset = 866
character set = koi8-r

недостаточно?

(судя по докам в третьей версии вместо 'unix charset' принято писать 'character set’, вопрос относительно совместимости со старой версией конфига остаётся открытым).

fly4life
Anarchist
Корреляции от этой секции конфига не отмечено.

dos charset = 866
character set = koi8-r

недостаточно?

(судя по докам в третьей версии вместо 'unix charset' принято писать 'character set’, вопрос относительно совместимости со старой версией конфига остаётся открытым).

Как раз таки наоборот — вместо 'character set’, который использовался в версиях 2.х, надо использовать 'unix charset’.

Genie


$ 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

сие проблем не создаёт. ;)

Но последствия оказались ещё интерснее: после восстановления всех настроек на KOI8R перестала корректно отображаться кириллица в ssh-терминале (монитор подключённый собственно к серверу всё отображает корректно).

В чём глюк?

ssh рестартани с правильной локалью.

возможно, что-то ещё забыл восстановить.

чей-нибудь .*profile или типа того

Anarchist
Genie

$ 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

сие проблем не создаёт. ;)

Знаю.

Проходил.

Повторил эксперимент на свежеустановленной Самбе (т.е. ещё без данных представляющих ценность):

Результат тот же.

А именно:

touch тест
ls
тест

Выньдоуз отображает этот файл как

РЕЯР

Создание средствами выньдоуз файлика тест.txt

Отображается:

ls
ФЕУФ.txt


Genie
ssh рестартани с правильной локалью.

возможно, что-то ещё забыл восстановить.

чей-нибудь .*profile или типа того

Не вполне понятно, что понимается под рестартом с правильной локалью.

Впрочем вопросом ssh и локали я буду заниматься потом, на досуге.

Anarchist

Рецептов по русификации 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.

Соответственно после добавления в конфиг Самбы пары строчек:

client code page = cp1251
unix char set = koi8-r

всё встало на свои места (ну за исключением необходимости перекодировки имён содержимого шары).

Даже рестарта не потребовалось.

TODO:

Гостевой доступ без авторизации к одному каталогу && доступ по имени пользователя/паролю к некоторому (индивидуальному для каждого пользователя) перечню каталогов.

Контроль видимости каталогов в зависимости от пользователя.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.