Поднимаем контроллер домена на Ubuntu Server
Этот вариант может быть полезен для небольших организаций с компьютерами под управлением Windows.
Нет необходимости приобретать недешевую Windows Server для организации AD и CAL лицензии для доступа к контроллеру домена.
В конечном итоге имеем плюшки AD: групповые политики, разграничение прав доступа к ресурсам и т.д.
Я попытался написать подробный алгоритм действий необходимых для организации Active Directory (AD) Domain Controller (DC) на базе Ubuntu Server.
Рассмотрим настройку контроллера домена на примере Ubuntu Server 12.04.4 LTS или Ubuntu Server 13.10, инструкция подходит для обоих вариантов без дополнительных изменений
1. Установка Ubuntu
Думаю установка Ubuntu-server не вызовет проблем даже у большинства пользователей компьютеров.
Желательно при установке ОС сразу правильно указать название машины в сети (hostname) с указанием домена (для примера использую dc1.domain.local), чтобы в дальнейшем меньше надо было править конфигурацию в файлах.
Если в сети не присутствует DHCP-сервер, установщик предложит ввести IP-адрес, маску сети, шлюз и DNS.
Во время установки, также желательно установить OpenSSH server, чтобы иметь удаленный доступ к серверу, а также правильно указать часовой пояс, в котором находится машина.
2. Настройка параметров сетевого адаптера
Настройки сети хранятся в файле /etc/network/interfaces
Редактируем его на свой вкус. В качестве редактора можно использовать nano, vi и т.п.
Для редактирования файлов понадобятся root права, их можно получить например командой
после этого, Вы будете работать из под пользователя root.
О том что Вы работаете с правами root пользователя свидетельствует знак # в приглашении командной строки
Либо Вы можете перед каждой командой, которая требует root доступа, приписывать sudo
sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.10.1
netmask 255.255.255.0
gateway 192.168.10.10
dns-nameservers 192.168.10.10
dns-search domain.local domain
/etc/init.d/networking restart
3. Установка необходимых пакетов
apt-get update && apt-get upgrade
Samba4 будем использовать последней версии и собирать из исходников, так что нам понадобятся пакеты для её сборки и корректной работы.
apt-get install git checkinstall 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 docbook-xsl libcups2-dev acl
4. Сборка Samba4
Для корректной работы Samba потребуется поддержка vfs на уровне файловой системы, для этого внесем изменения в /etc/fstab, необходимо добавить user_xattr,acl,barrier=1 в настройки корневого раздела /
cd /usr/src git clone -b v4-1-stable git://git.samba.org/samba.git samba-v4-1-stable
cd samba-v4-1-stable && ./configure --enable-debug && make && checkinstall
Параметр —enable-debug необходим для отображения более подробной информации в логах Samba.
После того, как соберется и установится Samba (это долгое занятие), для удобства её использования, необходимо прописать пути до исполняемых файлов /usr/local/samba/sbin и /usr/local/samba/bin в файлах /etc/sudoers переменная secure_path и /etc/environment переменная PATH, добавив строку :/usr/local/samba/sbin:/usr/local/samba/bin
5. Поднимаем AD
service bind9 stop && update-rc.d bind9 disable
Для манипуляций с AD в Samba существует инструмент samba-tool.
Для первоначальной настройки Samba вводим команду
samba-tool domain provision
Если на первом этапе Вы правильно указали имя компьютера, все настройки, которые запросит программа, можно оставить поумолчанию.
Во время настройки будет запрошен пароль пользователя Administrator для AD, он должен соответствовать требованиям сложности пароля поумолчанию: хотябы одна буква верхнего регистра, хотябы одна цифра, минимум 8 символов.
Если же пароль не подошел по сложности и Вы увидели ошибку вроде этой:
ERROR(ldb): uncaught exception — 0000052D: Constraint violation — check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!
то перед повторным выполнением первоначальной настройки, необходимо удалить содержимое каталогов /usr/local/samba/private/ и /usr/local/samba/etc/
Если необходимо изменить сложность паролей это можно сделать командой
samba-tool domain passwordsettings set --min-pwd-length=6 --complexity=off --max-pwd-age=0 --min-pwd-age=0
эта команда отключает требование сложности, отключает сроки действия паролей, устанавливает минимальную длину пароля 6 символов
Далее необходимо подправить настройки Samba и добавить туда следующие строки в секцию [global]
nano /usr/local/samba/etc/smb.conf
Это позволит динамически обновлять DNS-записи на сервере, при входе рабочей станции (под управлением windows) в домен и отключит поддержку печати, которая постоянно выдает ошибки в лог.
В файле /etc/resolvconf/resolv.conf.d/head необходимо указать наш DNS-сервер Samba 127.0.0.1
echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
service resolvconf restart
mv /etc/krb5.conf /etc/krb5.conf.old cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
#! /bin/sh ### BEGIN INIT INFO # Provides: samba4 # 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 # Short-Description: start Samba daemons ### END INIT INFO # # Start/stops the Samba daemon (samba). # Adapted from the Samba 3 packages. # PIDDIR=/var/run/samba SAMBAPID=$PIDDIR/samba.pid # clear conflicting settings from the environment unset TMPDIR # See if the daemon and the config file are there test -x /usr/local/samba/sbin/samba -a -r /usr/local/samba/etc/smb.conf || exit 0 . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting Samba 4 daemon" "samba" # Make sure we have our PIDDIR, even if it’s on a tmpfs install -o root -g root -m 755 -d $PIDDIR if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then log_end_msg 1 exit 1 fi log_end_msg 0 ;; stop) log_daemon_msg "Stopping Samba 4 daemon" "samba" start-stop-daemon --stop --quiet --name samba $SAMBAPID # Wait a little and remove stale PID file sleep 1 if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null then # Stale PID file (samba was succesfully stopped), # remove it (should be removed by samba itself IMHO.) rm -f $SAMBAPID fi log_end_msg 0 ;; restart|force-reload) $0 stop sleep 1 $0 start ;; *) echo "Usage: /etc/init.d/samba4 " exit 1 ;; esac exit 0
update-rc.d samba4 defaults
6. Проверяем работоспособность сервера
Name: dc1.domain.local
Address: 192.168.10.1
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Sharename Type Comment
— — — netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.6)
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Server Comment
— — Workgroup Master
— ——-
Valid starting Expires Service principal
12/03/2014 19:17 13/03/2014 05:17 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
smbclient //localhost/netlogon -UAdministrator -c 'ls'
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
. D 0 Wed Mar 12 18:46:48 2014
… D 0 Wed Mar 12 18:49:15 2014
Вот и всё.
Можно вводить в домен клиентов, заводить пользователей.
Управлять AD можно:
частично при помощи samba-tool на Ubuntu
при помощи Administration Tools Pack на Windows XP
при помощи Remote Server Administration Tools (RSAT) на Windows 7 и выше
Этот пост можно считать неким переводом официального wiki Samba, который находится по адресу:
wiki.samba.org/index.php/Samba_AD_DC_HOWTO, с моими дополнениями.
P.S. Если кому-то будет интересно могу еще написать «мануал» про включение резервного контроллера на Ubuntu в домен.
How to setup domain name in Linux server
Many companies have an internal domain for their IT infrastructure. This needs its servers to be configured with a domain name. This will ensure all servers will have FQDN (Fully Qualified Domain Name). For example, server12 is hostname and server12.kerneltalks.com is its FQDN. In such setup, many tools, monitoring requires servers to be identified by FQDN only.
For such a scenario you have to configure the domain name for your Linux server. We will walk you through steps that need to be taken to the setup domain name on your Linux server.
First of all, check if your server is having domain name already set up or not using below command :
root@server12 # dnsdomainname kerneltalks.com
If you get output like above then your server is configured with the domain name. If your output is blank then you have to the setup domain name for your server.
Without further delay lets jump into steps to configure domain name.
Step 1.
How to setup FQDN in Linux?
First thing to be done is add FQDN to your hostname in /etc/hosts file.
root@server12 # cat /etc/hosts 10.10.2.32 server12.kerneltalks.com server12
To confirm your FQDN, run below command :
root@server12 # hostname -f server12.kerneltalks.com
Output should be hostname.domain name
Step 2.
Configure domain name in Red Hat RHEL, Fedora and CentOS
Add below line in /etc/sysconfig/network
Add below parameter in /etc/sysctl.conf
Configure domain name in Ubuntu
Edit your hostname (not FQDN) in /etc/hostname file. and restart hostname service. If you see below error :
# service hostname restart Failed to restart hostname.service: Unit hostname.service is masked.
you can set hostname using :
# hostnamectl set-hostname server12
Once done, confirm normal hostname (using hostname ) and FQDN (using hostname -f )
Step 3.
Add domain in /etc/resolv.conf . This file used for setting nameservers as well.
root@server12 # cat /etc/resolv.conf search kerneltalks.com
This addition makes sure that you can resolves hostnames within your domain.
Step 4.
Confirm that changes are working perfectly. Question is how to check the domain name of the Linux server?
Below are the commands to check hostname, FQDN, and domain name of your server.
root@server12 # hostname server12 root@server12 # hostname -f server12.kerneltalks.com root@server12 #dnsdomainname kerneltalks.com
hostname command shows your server’s hostname. hostname -f shows your FQDN. dnsdomainname command shows your domain name of the server!
Related stuff:
- How to install patch/software in HPUX
- How to list YUM repositories in RHEL / CentOS
- How to configure nameserver in Linux
- How to execute command inside Docker container
- How to forward SSH key in Putty
- How to install EC2 Linux server in AWS with screenshots
- Run command on multiple linux servers from windows
- Howto get Disk serial number in HPUX
- How to check and test APA in HPUX
- How to convert JKS file to KEY file for Apache
- 5 ways to check swap on Linux
- How to disable direct root login on Linux & HPUX