Ключевые слова:samba, rus, howto, (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : zoltar.tlt.ru!sowhat@zoltar.tlt.ru Wed 24 Sep 97 09:18
Subj : "Samba наконец-то умеет "понимайт по рюсски"!"
________________________________________________________________________________
Большое человеческое спасибо за это Александру Глазунову!
С его разрешения отсылаю его письмо с патчем и smb.conf: vvvv
-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x--
...
После того, как мой директор поставил под сомнение существование
Linux-сервера в виду отсутствия поддержки русских букв Самбой пришлось
форсировать решение этой проблемы.
Долгие поиски в Интернете и Usenet'е ничего хорошего не дали.
Осталось только вспомнить Си и лезть в исходники. Выяснилось, что задуманный
параметр в файле конфигурации "valid chars" для интернационализации Самбы
обрабатывается ни фига не правильно. Да ещё пару ляпусов нашлось по ходу.
Пришлось отхачить файл charset.c. После чего всё встало на свои места.
Долгого тестирования не было, но за всё время работы нашего сервера
bug'ов пока не обнаружил. Сижу довольный. И все вокруг довольны.
А теперь к делу:
Версия Самбы: брал последнюю - samba-1.9.17p1, насколько понимаю,
ранние версии немного не так устроены, поэтому желательно сначала
поиметь эту версию Самбы. Можно у меня на
ftp://alba.august.ru/pub/Linux/samba
там же лежит patch и пример smb.conf со строкой "valid chars=..."
патч привожу ниже
patch.samba-1.9.17p1
--------------------------------
diff -u -N -r samba-1.9.17p1/source/charset.old
samba-1.9.17p1/source/charset.c
-$- samba-1.9.17p1/source/charset.old Fri Sep 5 16:53:47 1997
+++ samba-1.9.17p1/source/charset.c Mon Sep 22 13:29:26 1997
@@ -190,8 +190,15 @@
DEBUG(6,("Adding chars 0x%x 0x%x (l->u = %s) (u->l = %s)\n",lower,upper,
map_lower_to_upper ? "True" : "False",
map_upper_to_lower ? "True" : "False"));
- if (lower) dos_char_map[lower] = 1;
- if (upper) dos_char_map[upper] = 1;
+ if (lower) {
+ dos_char_map[lower] = 1;
+ lower_char_map[lower] = (char)lower;
+ upper_char_map[lower] = (char)lower;
+ }
+ if (upper) {
+ dos_char_map[upper] = 1;
+ upper_char_map[upper] = (char)upper;
+ }
if (lower && upper) {
if(map_upper_to_lower)
lower_char_map[upper] = (char)lower;
@@ -213,7 +220,9 @@
setlocale(LC_ALL,"C");
#endif
- for (i= 0;i<=255;i++) {
+ for (i=0;i<=255;i++) {
+ char c = (char)i;
+ upper_char_map[i] = lower_char_map[i] = c;
dos_char_map[i] = 0;
}
@@ -222,12 +231,10 @@
add_dos_char(i,False,0,False);
}
- for (i=0; i<=255; i++) {
- char c = (char)i;
- upper_char_map[i] = lower_char_map[i] = c;
- if (isupper(c)) lower_char_map[i] = tolower(c);
- if (islower(c)) upper_char_map[i] = toupper(c);
+ for (i=0x41;i<=0x5a;i++) {
+ add_dos_char(i+0x20,True,i,True);
}
+
}
/**************************************************************************
**
@@ -301,10 +308,18 @@
int i1=0,i2=0;
if (isdigit((unsigned char)*t) || (*t)=='-') {
sscanf(t,"%i:%i",&i1,&i2);
- add_dos_char(i1,True,i2,True);
} else {
sscanf(t,"%c:%c",&c1,&c2);
- add_dos_char((unsigned char)c1,True,(unsigned char)c2, True);
+ i1=(unsigned char)c1;
+ i2=(unsigned char)c2;
+ }
+ if( i1 && i2 ) {
+ add_dos_char(i1,True,i2,True);
+ } else {
+ if( i1 )
+ add_dos_char(i1,False,0,False);
+ else
+ add_dos_char(i2,False,0,False);
}
}
--------------------------------
smb.conf: пример конфигурационного файла - возьми из него строку "valid
chars".
Предупреждаю, я сознательно её разделил на несколько строк - всё должно
быть
в ОДHОЙ строке: valid chars = ...
smb.conf
-------------
; The global setting for a RedHat default install
[global]
workgroup = WORKGROUP
log file = /var/log/samba
lock directory = /var/lock/samba
share modes = yes
auto services = public
read prediction = True
root directory = /
preserve case = yes
short preserve case = yes
case sensitive = no
default case = lower
client code page = 437
valid chars = 0xa0:0x80 0xa1:0x81 0xa2:0x82 0xa3:0x83 0xa4:0x84
0xa5:0x85 0xa6:0x86 0xa7:0x87
0xa8:0x88 0xa9:0x89 0xaa:0x8a 0xab:0x8b 0xac:0x8c 0xad:0x8d 0xae:0x8e
0xaf:0x8f 0xe0:0x90
0xe1:0x91 0xe2:0x92 0xe3:0x93 0xe4:0x94 0xe5:0x95 0xe6:0x96 0xe7:0x97
0xe8:0x98 0xe9:0x99
0xea:0x9a 0xeb:0x9b 0xec:0x9c 0xed:0x9d 0xee:0x9e 0xef:0x9f 0xf1:0xf0
; A publicly accessible directory, but read only, except for people in
; the staff group
[public]
guest account = nobody
comment = Public Stuff
path = /home/public
public = yes
writable = yes
browseable = yes
available = yes
------------------------------------------------
Вот, в принципе и всё. Желаю удачи!
Hу и как обычно, по всем вопросам и пожеланиям обращаться:
E-mail: can@alba.august.ru
ftp://alba.august.ruhttp://alba.august.ru
---
* Origin: IsTel Company (2:50/128.0@fidonet)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Lapinsky Alexander <avl@kiam1.rssi.ru> Wed 24 Sep 97 16:06
Subj : Re: "Samba наконец-то умеет "понимайт по рюсски"!"
________________________________________________________________________________
X-RealName: Lapinsky Alexander
RFC-In-reply-to: 's message of 24 Sep 1997 09:18:02 GMT
> Большое человеческое спасибо за это Александру Глазунову!
> С его разрешения отсылаю его письмо с патчем и smb.conf: vvvv
>
> -x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x--
>
> ...
>
> После того, как мой директор поставил под сомнение существование
> Linux-сервера в виду отсутствия поддержки русских букв Самбой пришлось
> форсировать решение этой проблемы.
> Долгие поиски в Интернете и Usenet'е ничего хорошего не дали.
Естественно, так как эти правки делались на прошлой неделе :)
Остальная часть письма опущена, а вместо него предлагается
альтернативное решение:
- скачать исправленные исходники samba-1.9.17p1
ftp://ftp.kiam1.rssi.ru/pub/unix/sources/samba-1.9.17p1-RUS.tar.gz
или
http://ftp.kiam1.rssi.ru/pub/unix/sources/samba-1.9.17p1-RUS.tar.gz
- скомпилировать ее и установить
- прочитать man smb.conf
- сделать исправления в smb.conf :
а. убрать строку ``valid chars = ...''
б. добавить строку ``client code page = 866''
в. добавить строку ``character set = koi8-r'' ( для UNIX'ов с KOI8-R ),
или ``character set = iso8859-5'' ( для UNIX'ов с ISO8859-5 ),
или ничего не добавлять ( для UNIX'ов с CP866 ).
- перезапустить все демона SAMB'ы
- послать письмо со словами благодарности по адресу
mailto:<avl@kiam1.rssi.ru> :)
Последний пункт можно опустить, но если возникли сложности и/или
есть замечания, то письмо надо выслать ОБЯЗАТЕЛЬHО.
Hемного погодя будет выложена версия, прозволяющая задавать
комментарии к ресурсам и к имени сервера по-русски. При
этом процесс browse'ния будет правильным как со стороны
MS-клиентов, так и со стороны smbclient'а.
А.Лапинский
P.S. Hеужели так мало владельцев систем с ISO8859-5 ?
Hи одного сообщения от них. Пожалуйста, хотя бы
положительные, а то я не знаю, правильно ли сделана
перекодировка ?
P.P.S. Обращаю внимание тех администраторов, у которых
SAMBA работала с использованием ``valid chars = ...''.
После применения указанных выше правок, файлы с
русскими буквами, лежащие на сервере, могут перестать
быть видными. Однако, если после этого дать им
эти самые русские имена уже в UNIX'е, то они снова
станут видимыми (во всяком случае так ДОЛЖHО быть).
---
* Origin: Keldysh Institute of Applied Math. (2:50/128.0@fidonet)
Можете ли вы мне помочь? у меня стоит ASP 7.3 и я немогу настроить самбу чтобы на виндовой машине видно было руские имена в нормальной кодировке. если можете както помочь помогите! PLZ.
Прочитал и хотел бы задать вопрос по этому поводу. Сам я дизайнер работаю в Mac OS X 10.3.5 у нас в офисе стоит сервер под Linux'ом, проблема в том, что OS X на сервере отображает русские имена коробозяками, дал прочесть статью нашему сисадмину он говорит, что у нас это и стоит:
а. убрать строку ''valid chars = ...''
б. добавить строку ''client code page = 866''
в. добавить строку ''character set = koi8-r''
а так: (или ничего не добавлять ( для UNIX'ов с CP866 )) сделать не может потому, что тогда не увидят Винды 98 (под ними сидят все менеджеры)