Подготовка Ubuntu Server к установке Samba 4.
Устанивим в систему пакеты, которые потребуются для работы Samba 4.
# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl htop
Замечание: В процессе установки мне было предложено ввести область по умолчанию для Kerberos
версии 5
SAMDOM.EXAMPLE.COM
Потом ввести имена хостов для серверов Kerberos
192.168.1.2
Потом имя сервера
SAMBA
Хочу обратить ваше внимание, что позднее мы поправим получившийся в ходе установки файл krb5.conf, приведя его содержимое к нашей конфигурации.
Подготовка файловой системы сервера.
# cat /boot/config-`uname -r`
Нам собственно нужно проверить следующее:
# cat /boot/config-`uname -r` | grep CONFIG_EXT
CONFIG_EXTRA_FIRMWARE=""
CONFIG_EXTCON=m
CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_MAX8997=m
CONFIG_EXT2_FS=m
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_XATTR=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
В нашем ядре есть поддержка XATTR
,SECURITY
и POSIX_ACL
для файловых систем ext3
и ext4
.
Посмотрим наш/etc/fstab
:
# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
/dev/mapper/samba-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=ab2ea6bd-8211-41b2-b12e-7a75c3536da0 /boot ext2 defaults 0 2
/dev/mapper/samba-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
Изменимстроку
/dev/mapper/samba-root / ext4 errors=remount-ro 0 1
на
/dev/mapper/samba-root / ext4 errors=remount-ro,user_xattr,acl,barrier=1 1 1
И перезагрузим сервер.
Установка Samba 4
Ну теперь уж точно все готово к установкеSamba
4
. Ставить будем черезgit
. Наберитесь терпения любители готовых пакетовПока Samba будет ставиться, задайтесь вопросом, зачем собственно этот человек (читай автор), тратит на все это время. Подумали, сделайте вывод и вступайте в группу, там и обсудим.
apt-get install git
# git clone git://git.samba.org/samba.git samba-master
# cd samba-master
# ./configure --enable-debug --enable-selftest
# make
# make install
Подготовка Samba 4 к роли контроллера домена AD.
Теперь можно приступать к подготовке домена.
Замечания.
1. Чтобы избежать проблем, пароль набирайте в английском регистре (уже пофиксили, в принципе можно на русском). По умолчанию включена сложность пароля, в пароль надо включить буквы в разном регистре, цифры, спецсимволы, минимальная длина 7 символов. Пароль пользователяAdministrator
в дальнейшем можно будет изменить, поэтому я ввелPa$$w0rd.
2. Вернемся к файлу /etc/network/interfaces и исправим строку на
dns-nameservers 192.168.1.2
Будем использовать встроенный в Samba 4 DNS сервер. Перезагрузимсеть:
# /etc/init.d/networking restart
Обратите внимание!!! Теперь запросы DNS будут идти через DNS сервер, встроеный в Samba.
Приступим:
# /usr/local/samba/bin/samba-tool domain provision
Realm [SAMDOM.EXAMPLE.COM]:
Domain [SAMDOM]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.150.16]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=samdom,DC=example,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: samba
NetBIOS Domain: SAMDOM
DNS Domain: samdom.example.com
DOMAIN SID: S-1-5-21-2253133045-922010834-3568577260
А вот с помощью этой команды можно поменять пароль
# /usr/local/samba/bin/samba-tool user setpassword Administrator
New Password:
Changed password OK
Настроим Kerberos. Приведем файл /usr/local/samba/share/setup/krb5.conf
к виду:
[libdefaults]
default_realm = SAMDOM.EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = true
И заменим им содержимое файла /etc/krb5.conf
Тут я перезагрузил сервер. (Хотя не факт, что это необходимо.)
Запуск Samba 4 в тестовом режиме.
Запустим Samba 4 в интерактивном режиме:
# /usr/local/samba/sbin/samba -i -M single
Посмотрим версию сервера
# /usr/local/samba/sbin/samba -V
Version 4.1.0pre1-GIT-ff496ef
Проверим версию клиента
# /usr/local/samba/bin/smbclient --version
Version 4.1.0pre1-GIT-ff496ef
Посмотрим какие шары есть на сервере
# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-ff496ef]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.0pre1-GIT-ff496ef)
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-ff496ef]
Server Comment
-------- -------
Workgroup Master
--------- -------
Подключимся к ресурсу netlogon
# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'Pa$$w0rd' -c 'ls'
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-ff496ef]
. D 0 Thu Feb 7 11:37:43 2013
.. D 0 Thu Feb 7 11:38:01 2013
37781 blocks of size 524288. 30967 blocks available
Протестируем работу DNS
# host -t SRV _ldap._tcp.samdom.example.com.
_ldap._tcp.samdom.example.com has SRV record 0 100 389 samba.samdom.example.com.
# host -t SRV _kerberos._udp.samdom.example.com.
_kerberos._udp.samdom.example.com has SRV record 0 100 88 samba.samdom.example.com.
# host -t A samba.samdom.example.com.
samba.samdom.example.com has address 192.168.1.2
Протестируем Kerberos
# kinit Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Password for Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.:
Warning: Your password will expire in 41 days on Thu Mar 21 13:16:09 2013
Посмотрим на полученный билетик
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Valid starting Expires Service principal
07.02.2013 13:22:39 07.02.2013 23:22:39 krbtgt/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
renew until 08.02.2013 13:22:29
Настройка времени на сервере.
Разберемся со временем на сервере. Установим сервер точного времени.
# apt-get install ntp ntpdate
Установленная версия нам подходит
# ntpd -v
ntpd: illegal option -- v
ntpd - NTP daemon program - Ver. 4.2.6p3
Думать я не стал, а просто заменил содержимое файла /etc/ntp.conf
на
server 127.127.1.0
fudge 127.127.1.0 stratum 10
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket/usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
Перегрузил службу:
# service ntp restart
Тестирование общих папок.
Создадим общую папку для тестов/data/test
, и дадим на нее права:
# chmod 777 /data/test
Добавим в /usr/local/samba/etc/smb.conf
раздел:
[test]
path = /data/test
comment = Test Share
read only = no
Перегружать сервер не нужно, проверим
# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-ff496ef]
Sharename Type Comment
--------- ---- -------
test Disk Test Share
sysvol Disk
netlogon Disk
IPC$ IPC IPC Service (Samba 4.1.0pre1-GIT-ff496ef)
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.1.0pre1-GIT-ff496ef]
Server Comment
--------- -------
Workgroup Master
--------- -------
Создадим еще две шары для принтеров
# mkdir /usr/local/samba/var/spool
# chmod 1777 /usr/local/samba/var/spool
# mkdir -p /usr/local/samba/var/print/{COLOR,IA64,W32ALPHA,W32MIPS,W32PPC,W32X86,WIN40,x64}
# chmod -R 777 /usr/local/samba/var/print
В smb.conf
добавим
[printers]
comment = All Printers
path = /usr/local/samba/var/spool
browseable = Yes
read only = No
printable = Yes
[print$]
comment = Point and Print Printer Drivers
path = /usr/local/samba/var/print
read only = No
На клиенте Пуск - Выполнить - \\samba\
На запрос логина, пароля вводим SAMDOM\Administrator
, пароль Pa$$w0rd
Видим шары нашего сервера
Двойное нажатие на Принтеры и факсы, Файл, Свойства сервера, вкладка Драйверы, Добавить, Выбираем драйвер, Далее, Выбираем архитектуру, Далее, Готово. На сервер печати будут скопированы драйвера для выбранного принтера.
При настройке клиента XP Поставьте галку “Использовать DNS суффикс подключения при регистрации в DNS”
Создадим скрипт для запуска и остановки службы Samba.
touch /etc/init.d/samba4
chmod +x /etc/init.d/samba4
Добавим в него следующее содержимое.
#!/bin/sh
### BEGIN INIT INFO
# Provides: samba
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: slapd
# Should-Stop: slapd
# Short-Description: start Samba daemon (samba)
### END INIT INFO
PIDDIR=/usr/local/samba/var/run
SAMBADPID=$PIDDIR/samba.pid
# clear conflicting settings from the environment
unset TMPDIR
# See if the daemons are there
test -x /usr/local/samba/sbin/samba || exit 0
# Starting init-fuctions for Debian -shell script
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting Samba daemon"
# Make sure we have our PIDDIR, even if it's on a tmpfs
install -o root -g root -m 755 -d $PIDDIR
SAMBA_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null`
if [ "$SAMBA_DISABLED" != 'Yes' ]; then
log_progress_msg "samba"
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D
then
log_end_msg 1
exit 1
fi
fi
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping Samba daemon"
log_progress_msg "samba"
start-stop-daemon --stop --quiet --pidfile $SAMBADPID
# Wait a little and remove stale PID file
sleep 1
if [ -f $SAMBADPID ] && ! ps h `cat $SAMBADPID` > /dev/null
then
# Stale PID file (samba was succesfully stopped),
# remove it (should be removed by samba itself IMHO.)
rm -f $SAMBADPID
fi
log_end_msg 0
;;
reload)
log_daemon_msg "Reloading /usr/local/samba/etc/smb.conf "
start-stop-daemon --stop --signal HUP --pidfile $SAMBADPID
log_end_msg 0
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/init.d/samba4 {start|stop|reload|restart|force-reload}"
exit 1
;;
esac
exit 0
Попробуем запустить Samba.
# /etc/init.d/samba4 start
* Starting Samba daemon [ OK ]
Добавим службу в автозагрузку.
# update-rc.d samba4 defaults
update-rc.d: warning: /etc/init.d/samba4 missing LSB information
update-rc.d: see
Adding system startup for /etc/init.d/samba4 ...
/etc/rc0.d/K20samba4 -> ../init.d/samba4
/etc/rc1.d/K20samba4 -> ../init.d/samba4
/etc/rc6.d/K20samba4 -> ../init.d/samba4
/etc/rc2.d/S20samba4 -> ../init.d/samba4
/etc/rc3.d/S20samba4 -> ../init.d/samba4
/etc/rc4.d/S20samba4 -> ../init.d/samba4
/etc/rc5.d/S20samba4 -> ../init.d/samba4
Перезагрузим сервер.
# reboot
Проверим, запустилась ли Samba.
# ps ax | grep samba
467 ? S 0:00 avahi-daemon: running [samba.local]
1135 ? Ss 0:01 /usr/local/samba/sbin/samba -D
1207 ? S 0:00 /usr/local/samba/sbin/samba -D
1208 ? S 0:00 /usr/local/samba/sbin/samba -D
1209 ? Ss 0:01 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
1210 ? S 0:00 /usr/local/samba/sbin/samba -D
1211 ? S 0:00 /usr/local/samba/sbin/samba -D
1212 ? S 0:02 /usr/local/samba/sbin/samba -D
1213 ? S 0:00 /usr/local/samba/sbin/samba -D
1214 ? S 0:00 /usr/local/samba/sbin/samba -D
1215 ? S 0:01 /usr/local/samba/sbin/samba -D
1216 ? S 0:00 /usr/local/samba/sbin/samba -D
1217 ? S 0:00 /usr/local/samba/sbin/samba -D
1218 ? S 0:01 /usr/local/samba/sbin/samba -D
1219 ? S 0:00 /usr/local/samba/sbin/samba -D
1222 ? S 0:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
1599 pts/0 S+ 0:00 grep --color=auto samba
Все, удачи в работе.