Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> X11 —> kde и smb

kde и smb шары по русски в win2003 домене

Автор: nikll.


1. Самба керберос фря и домен

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

Для того, чтобы фрю сделать членом домена, вначале надо настоить керберос, вот - пример моего файла:
##### /etc/krb5.conf
[appdefaults]
proxiable = true
ticket_lifetime = 24h
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false    # отключаем совместимость с 4 керебросом

[realms]
DOMAIN.LOCAL = {
	# где server.domain.local ваш контроллер домена
	kdc = tcp/server.domain.local:88
	# где server.domain.local ваш контроллер домена
	admin_server = server.domain.local
	# домен по умолчанию 
	default_domain = domain.local
}

[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL

[kdc]
enable-kerberos4 = false  # отключаес 4 керберос

[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log

Затем, надо поправить файл nsswitch.conf, чтобы система увидела доменные учётки, групы и компы
### /etc/nsswitch.conf
group: files winbind
hosts: files dns winbind
networks: files dns winbind
passwd: files winbind
shadow: files winbind
shells: files winbind
services: files
protocols: files
rpc: files

Теперь, надо заставить фрю авторизировать доменных юзеров таке прозрачно, как и локальных, для этого надо отредактировать содержимое каталога /etc/pam.d/. Я, просто расскоментировал все строчки содержащии pam_krb5.so.
Опять же, по желанию, можно сделать автосоздание профиля для доменных юзеров при первом входе в систему, для этого надо установить порт
/usr/ports/security/pam_mkhomedir

и поправить содержимое каталога /etc/pam.d, добавив в начало секций session следующую строчку:
# skel - это путь к дефаултному профилю
session  required  pam_mkhomedir.so  skel=/usr/share/skel

Процесс установки и настройки самбы для включения в домен описывать небуду т.к. lissyara его достаточно хороше описал, приведу только пример своего кофига:
### /usr/local/etc/smb.conf
[global]
workgroup = DOMAIN
realm = DOMAIN.LOCAL
server string = Kotlyarov Nikolay HOME PC
security = ADS
hosts allow = 192.168.0. 192.168.1. 10. 127.
#   load printers = yes
#   printcap name = /etc/printcap
#   printcap name = lpstat
#   printing = cups
#   guest account = pcguest
log file = /var/log/samba/log.%m
max log size = 500
password server = exchange
#   passdb backend = tdbsam
#   include = /usr/local/etc/smb.conf.%m
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#socket options = SO_RCVBUF=8192 SO_SNDBUF=8192
#   interfaces = 192.168.0.44
local master = no
os level = 33
#domain master = yes
#preferred master = yes
domain master = no
preferred master = no
#domain logons = yes
#   logon script = %m.bat
#   logon script = %U.bat
#   logon path = \\%L\Profiles\%U
#   wins support = yes
#   wins server = w.x.y.z
#   wins proxy = yes
dns proxy = no
dos charset = 866
#unix charset = utf-8
unix charset = koi8-r
display charset = koi8-r
preserve case = Yes
store dos attributes = yes
map hidden = no
map system = no
map archive = no
nt acl support = yes
inherit acls = yes
map acl inherit = yes
#   add user script = /usr/sbin/useradd %u
#   add group script = /usr/sbin/groupadd %g
#   add machine script = 
#/usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
#   delete user script = /usr/sbin/userdel %u
#   delete user from group script = /usr/sbin/deluser %u %g
#   delete group script = /usr/sbin/groupdel %g
encrypt passwords = Yes
hostname lookups = yes
winbind uid = 10000-50000
winbind gid = 10000-50000
template shell = /usr/local/bin/bash
template homedir = /home/%D/%U
winbind use default domain = yes
winbind enum groups = yes
winbind enum users = yes
winbind offline logon = yes
winbind refresh tickets = yes
allow trusted domains = no
client schannel = No
restrict anonymous = no
ldap ssl = No
map to guest = Bad User
guest ok = yes
case sensitive = No
acl compatibility = win2k

[homes]
comment = Home Directories
browseable = no
writable = yes

# [netlogon]
#   comment = Network Logon Service
#   path = /usr/local/samba/lib/netlogon
#   guest ok = yes
#   writable = no
#   share modes = no


#[Profiles]
#    path = /usr/local/samba/profiles
#    browseable = no
#    guest ok = yes


[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

#[tmp]
#   comment = Temporary file space
#   path = /tmp
#   read only = no
#   public = yes

#[public]
#   comment = Public Stuff
#   path = /home/samba
#   public = yes
#   writable = yes
#   printable = no
#   write list = @staff

#[fredsprn]
#   comment = Fred's Printer
#   valid users = fred
#   path = /homes/fred
#   printer = freds_printer
#   public = no#   comment = Fred's Printer
#   valid users = fred
#   path = /homes/fred
#   printer = freds_printer
#   public = no
#   writable = no
#   printable = yes

#[fredsdir]
#   comment = Fred's Service
#   path = /usr/somewhere/private
#   valid users = fred
#   public = no
#   writable = yes
#   printable = no

#[pchome]
#  comment = PC Directories
#  path = /usr/pc/%m
#  public = no
#  writable = yes

#[public]
#   path = /usr/somewhere/else/public
#   public = yes
#   only guest = yes
#   writable = yes
#   printable = no

#[myshare]
#   comment = Mary's and Fred's stuff
#   path = /usr/somewhere/shared
#   valid users = mary fred
#   public = no
#   writable = yes
#   printable = no
#   create mask = 0765


[Share]
unix charset = koi8-r
valid users = @"%D\Domain Users" @"%D\Domain Admins"
read list = @"%D\Domain Users" @"%D\Domain Admins"
write list = %D\kotlyarov
admin users = %D\kotlyarov
read only = yes
browseable = yes
path = /Share
comment = Моя шара
#nt acl support = yes
#acl group control = yes
#acl check permissions = True
#acl map full control = True
#map acl inherit = Yes
#inherit acls = yes
#inherit owner = yes
#inherit permissions = yes
#   writable = no
#   printable = yes

для атомотической синхронизации времени с доменом добавтье в
cat >> /etc/rc.conf
ntpdate_enable="YES"
ntpdate_flags="<Имя вашего домена>"
^C

после настройки самбы можно включить комп в домен:
синхранизируем время с DC
# ntpdate server.domain.local

(где server.domain.local - имя вашего DC), получаем билет керберос
# kinit admin

(где admin это доменная учетка админа), и собственно заводим машину в домен
# net ads join -Uadmin%password

(admin%password - доменная учетка с админскими правами и пароль)
Все готово, теперь перезапускаем самбу и можно входить в систему под доменными учетками с получением всех доменных прав (авторизация по керберосу).


2. Доменные шары по русски, хождение по смб шарам в konqueror'е



   Чтобы небыло проблем с русскими именами в названиях папок файлов и шар, надо поправить следующие значения в файле
### /usr/local/etc/smb.conf
dos charset = 866
unix charset = koi8-r
display charset = koi8-r

Если вы решите перевести фрю на юникод, то вместо koi8-r поставтье utf-8

Очень долго бился с тем что konqueror нехочет нормально отображать русские имена в smb:// при локальной кодировке koi8-r, решил эту проблему следующим образом:
после долгого блуждания по исходникам кде, обнаружил следующие вещщи:
1. внутреннее представление данных идет в кодировке utf-8 НЕЗАВИСИМО от того на какую кодировку локализированна система
2. кодировка smb:// в konkueror таинственным образом зависит от параметров русификации самбы
3. чтобы смб шары в konkueror отоброжались по русски (вместо вопросиков и квадратиков) надо либо настроить систему на utf-8 локаль (не лудший вариант, т.к. фришная консоль utf неподдерживает), либо давать кедам данные в кодировке utf-8, тоесть поправить русификацию самбы вот так:
dos charset = 866
unix charset = utf-8
display charset = koi8-r

и вуаля оно заработало, вот только появилась другая проблема, если на машине с фрей есть смб шары то теперь на них слетает кодировка, после нескольких эксперементов обнаружил что кде напрямую читает конфиг самбы, и придумал следующее:
содаем файл
~/.smb/smb.conf
со следующим содержимым
unix charset = utf-8

например вот так
mkdir ~/.smb; echo "unix charset = utf-8" > ~/.smb/smb.conf 

все, теперь мы какбы сидим на двух стульях одной задницой и при этом она не порвалась на пополам :)

P.S. незабудьте добавить этот файл в /usr/local/share/skel, для того чтобы вновь создоваемые профили имели этот файл поумолчанию



размещено: 2008-01-25,
последнее обновление: 2008-04-16,
автор: nikll


Dima, 2008-01-27 в 8:32:52

Видимо надо ещё каким то способом указать местоположение нового конфига самбы - /usr/local/etc/smbd.conf, сама то она работает, а вот скажем smbstatus продолжает читать старый файл конфига, и в результате выводит русские имена так - ______. Зато если запускать так smbstatus -s /usr/local/etc/smbd.conf - явно ткнув её носом в конфиг, то всё ок, но имхо это не тру.

Alex V. Petrov, 2008-01-28 в 7:32:50

echo "display charset = UTF-8" > ~/.smb
Решает проблему с русскими шарами в KDE.
Видимо юзеровские настройки перекрывают глобальные.

Alex V. Petrov, 2008-01-28 в 7:34:35

Пардон, в ~/.smb/smb.conf
:-)

nikll, 2008-01-28 в 8:08:39

обнаружил что кде напрямую читает конфиг самбы, и придумал следующий костыль:
в /etc/rc.conf добавил samba_config="/usr/local/etc/smbd.conf"
скопировал /usr/local/etc/smb.conf в /usr/local/etc/smbd.conf

nikll, 2008-01-28 в 8:13:21

Огромное спасибо Alex V. Petrov за подсказку про юзерские конфиги самбы:
mkdir ~/.smb
echo "display charset = UTF-8" > ~/.smb/smb.conf


теперь можно неизголяться над самбой

Dima, 2008-01-28 в 8:20:44

^^^ и правда работает! ) спс!

Guest-guest, 2008-09-15 в 17:09:51

А никто не в курсе, вместо konqueror'a кто нибудь, из чисто файловых менеджеров, умеет лазить по смб, xSMBrowser исключается, слишком заумный, что нибудь обывательское подобное MS Explorer ?

nikll, 2008-09-15 в 18:21:33

есть проэкт fuse, к нему есть модуль smbnetfs, который монтирует всю сеть к папке.
Оч удобная штучка, я так с фришноо сервера искал файлы по всей сети (find /mnt/smb/\*/\$?/ -name \*.avi).
Т.к. компы и шары представляються папками то можно с удобством лазить любым файл манагером по сетевым шарам.

Misha, 2008-11-11 в 4:34:43

Отличный ответ. Спасибо.
Сервер Самба локальный, через файловый менеджер kde4 хожу по папкам(/home/samba/pub/Папка) а вот через Dolphin или Konqueror на (smb://localhost/pub/Папка) не может, пишет папки такой нет.

У пользователя locale:
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=

smb.conf
  display charset = koi8-r
  unix charset = koi8-r
  dos charset = cp866

~/.smb/smb.conf
unix charset = utf-8

Хотя бы так... Спасибо.

DoS, 2008-11-20 в 14:06:53

Отлично! Некоторые вещи подчеркнул для себя.
Побольше статей удачных!!!!

ЗЫ Только вот не зазнавайся со славой.

Pawko, 2008-11-20 в 14:16:35

Статья суппер! Спасибо...
Помогла

mvn, 2009-07-09 в 13:37:27

mkdir ~/.smb
echo \"display charset = UTF-8\" > ~/.smb/smb.conf


Не получилось. Сам хожу по сети, все ок, но ко мне никто не может попасть. Пришлось копировать весь конфиг и менять 1 строчку, тогда заработало. FreeBSD 7.0 KDE 3.5.8. Samba 3.0.28



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0541 секунд
Из них PHP: 28%; SQL: 72%; Число SQL-запросов: 86 шт.
Исходный размер: 37932; Сжатая: 9576