Ключевые слова:samba, auth, kerberos, kde, rus, freebsd, (найти похожие документы)
From: Kotlyarov Nikolay <nikll@rambler.ru.>
Newsgroups: email
Date: Mon, 23 Apr 2008 17:02:14 +0000 (UTC)
Subject: KDE и smb, шары по-русски в win2003 домене
1. Samba, Kerberos, FreeBSD и win2003 домен
В первую очередь надо настроить сеть, то есть имя машины DNS, шлюз, сетевые
интерфейсы, машины сети и контроллеры доменов должны нормально
пинговаться по именам, просто один раз, я забыл настроить DNS и два дня
ломал себе голову почему я не могу войти в домен.
Для того, чтобы FreeBSD сделать членом домена, вначале надо настроить
kerberos, вот - пример моего файла:
/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 kerberos
[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
Теперь, надо заставить FreeBSD авторизировать доменных пользователей так
прозрачно, как и локальных, для этого надо отредактировать содержимое
каталога /etc/pam.d/. Я, просто расскоментировал все строчки содержащие
pam_krb5.so.
Опять же, по желанию, можно сделать автосоздание профиля для доменных
пользователей при первом входе в систему, для этого надо установить порт
/usr/ports/security/pam_mkhomedir
и поправить содержимое каталога /etc/pam.d, добавив в начало секций
session следующую строчку:
session required pam_mkhomedir.so skel=/usr/share/skel
skel - это путь к дефаултному профилю
Процесс установки и настройки samba для включения в домен описывать
не буду т.к. на сайте lissyara.su
его достаточно хорошо описали, приведу только пример своего кофига:
/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),
получаем билет kerberos
kinit admin
(где admin это доменная учетка админа),
и собственно заводим машину в домен
net ads join -Uadmin%password
(admin%password - доменная учетная запись с правами администратора и пароль)
Все готово, теперь перезапускам самбу и можно входить в систему под
доменными учетными записями с получением всех доменных прав (авторизация по
kerberos).
2. Доменные шары по-русски, хождение по SMB шарам в konqueror'е
Чтобы не было проблем с русскими именами в названиях папок файлов и
шар, надо поправить следующие значения в файле
/usr/local/etc/smb.conf
dos charset = 866
unix charset = koi8-r
display charset = koi8-r
Если вы решите перевести FreeBSD на юникод, то вместо koi8-r поставьте utf-8
Очень долго бился с тем что konqueror не хочет нормально отображать
русские имена в smb:// при локальной кодировке koi8-r, решил эту
проблему следующим образом:
после долгого блуждания по исходникам KDE, обнаружил следующие вещи:
1. внутреннее представление данных идет в кодировке utf-8 НЕЗАВИСИМО от
того на какую кодировку локализированна система
2. кодировка smb:// в konkueror таинственным образом зависит от
параметров русификации самбы
3. чтобы смб шары в konkueror отображались по русски (вместо вопросиков
и квадратиков) надо либо настроить систему на utf-8 локаль (не лучший
вариант, т.к. фришная консоль utf не поддерживает), либо давать кедам
данные в кодировке utf-8, то есть поправить русификацию самбы вот так:
dos charset = 866
unix charset = utf-8
display charset = koi8-r
и вуаля оно заработало, вот только появилась другая проблема, если на
машине с FreeBSD есть SMB шары то теперь на них слетает кодировка, после
нескольких экспериментов обнаружил, что KDE напрямую читает конфиг самбы,
и придумал следующее:
создаем файл
~/.smb/smb.conf
со следующим содержимым
unix charset = utf-8
например вот так
mkdir ~/.smb; echo "unix charset = utf-8" > ~/.smb/smb.conf
P.S. не забудьте добавить этот файл в /usr/local/share/skel, для того
чтобы вновь создаваемые профили имели этот файл по умолчанию
Отличный ответ. Спасибо.
Сервер Самба локальный, через файловый менеджер kde4 хожу по папкам(/home/samba/pub/Папка) а вот через Dolphin или Konqueror на (smb://localhost/pub/Папка) не может, пишет папки такой нет.