В начало блога На главную

Файловый сервер на ubuntu в домене

Для тех или иных нужд может понадобиться файловый сервер в доменной сети под управлением windows. Покупать ос windows только для хранения файлов не очень рационально. Но вопрос можно решить с помощью бесплатных и эффективных решений, например ubuntu.

После установки ubuntu-server на виртуальную машину или же просто ПК для удобства можно разрешить удаленные подключения по ssh. Для этого нужно обновить каталог портов и установить нужный со всеми зависимостями:

sudo apt-get update
sudo apt-get install openssh-client

В /etc/ssh/sshd_config изменить PermitRootLogin на значение «no». Теперь можно подключаться к этому серверу из любого удобного места по ssh. Для работы с доменом windows нужно установить следующие пакеты с зависимостями:

sudo apt-get install krb5-user samba winbind libpam-krb5 libpam-winbind libnss-winbind

За собой они потащат: attr krb5-config libaio1 libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libfile-copy-recursive-perl libgmp10 libgssrpc4 libhdb9-heimdal libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-7 libkdc2-heimdal libldb1 libnss-winbind libntdb1 libpam-winbind libtalloc2 libtdb1 libtevent0 libwbclient0 python-crypto python-dnspython python-ldb python-ntdb python-samba python-talloc python-tdb samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules tdb-tools update-inetd.

После нужно настроить нормальную работоспособность dns, а именно в /etc/resolv.conf добавить строки с значениями своего домена:
domain domain.com
search domain.com
nameserver 192.168.10.3

В /etc/dhcp/dhclient.conf нужно также указать свой домен и днс серверы:
supersede domain-name "domain.com";
prepend domain-name-servers 192.168.10.3;

Для исключения ошибок нужно правильно имя хоста в /etc/hostname и обязательно совпадал и имел полное доменное имя в /etc/hosts
# Имена этого компьютера
127.0.0.1 localhost
127.0.1.1 smbsrv01.domain.com smbsrv01

Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:
sudo sudo net time set -S dc

Если все предыдущие шаги выполнены без ошибок, то можно приступать к настройке авторизации через Kerberos по адресу: /etc/krb5.conf
[libdefaults]
default_realm = DOMAIN.COM
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true

[realms]
DOMAIN.COM = {
kdc = dc
kdc = dc2
admin_server = dc
default_domain = DOMAIN.COM
}

[domain_realm]
.domain.com = DOMAIN.COM
domain.com = DOMAIN.COM
[login]
krb4_convert = false
krb4_get_tickets = false

Сохранить эти значения и перезагрузить сервер полностью командой shutdown -r now.
После перезагрузки нужно проверить работает ли авторизация командой kinit username@DOMAIN.COM
Если не появилось никаких ошибок, то все настроено и работает нормально.

Далее нужно настроить samba сервер и вход в домен в /etc/samba/smb.conf

workgroup = DOMAIN
realm = DOMAIN.COM
server role = member server
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no
security = ADS
encrypt passwords = true
dns proxy = no
socket options = TCP_NODELAY
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes

И проверить конфигурацию командой testparm, на что сервер ответит примерно следующее:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

Теперь можно войти непосредственно в домен командой sudo net ads join -U username -D DOMAIN, на что будет ответ:
Enter username's password:
Using short domain name -- DOMAIN
Joined 'SMBSRV01' to realm 'domain.com'

Так же в /etc/samba/smb.conf нужно настроить параметры для Winbind, чтобы файловый сервер мог получать данные о пользователях и группах в домене.

template shell = /bin/bash
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
winbind offline logon = yes
winbind cache time = 300
winbind refresh tickets = yes
idmap config * : range = 10000-20000
idmap config * : backend = tdb

Для устранения ошибки «rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)» нужно дописать в конец /etc/security/limits.conf:
* - nofile 16384
root - nofile 16384

После всего выполненного необходимо интегрировать авторизацию Winbind как часть штатной. Это можно сделать в /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind

Теперь необходимо настроить PAM на работу с Winbind, а именно дописать в /etc/pam.d/common-session
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077

Чтобы увидеть списки пользователей или групп нужно выполнить команды:
wbinfo -u
wbinfo -g
getent passwd
getent group

Для перезагрузки samba используются:

sudo service smbd restart
sudo /etc/init.d/samba restart

На этом все, настройка завершена, самба готова к работе в домене windows.

Рассказать: