Файловый сервер на ubuntu в домене
Для тех или иных нужд может понадобиться файловый сервер в доменной сети под управлением windows. Покупать ос windows только для хранения файлов не очень рационально. Но вопрос можно решить с помощью бесплатных и эффективных решений, например ubuntu.
После установки ubuntu-server на виртуальную машину или же просто ПК для удобства можно разрешить удаленные подключения по ssh. Для этого нужно обновить каталог портов и установить нужный со всеми зависимостями:
1 2 |
sudo apt-get update sudo apt-get install openssh-client |
В /etc/ssh/sshd_config изменить PermitRootLogin на значение «no». Теперь можно подключаться к этому серверу из любого удобного места по ssh. Для работы с доменом windows нужно установить следующие пакеты с зависимостями:
1 |
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 добавить строки с значениями своего домена:
1 2 3 |
domain domain.com search domain.com nameserver 192.168.10.3 |
В /etc/dhcp/dhclient.conf нужно также указать свой домен и днс серверы:
1 2 |
supersede domain-name "domain.com"; prepend domain-name-servers 192.168.10.3; |
Для исключения ошибок нужно правильно имя хоста в /etc/hostname и обязательно совпадал и имел полное доменное имя в /etc/hosts
1 2 3 |
# Имена этого компьютера 127.0.0.1 localhost 127.0.1.1 smbsrv01.domain.com smbsrv01 |
Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:
1 |
sudo sudo net time set -S dc |
Если все предыдущие шаги выполнены без ошибок, то можно приступать к настройке авторизации через Kerberos по адресу: /etc/krb5.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
[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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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, на что сервер ответит примерно следующее:
1 2 3 4 5 |
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, на что будет ответ:
1 2 3 |
Enter username's password: Using short domain name -- DOMAIN Joined 'SMBSRV01' to realm 'domain.com' |
Так же в /etc/samba/smb.conf нужно настроить параметры для Winbind, чтобы файловый сервер мог получать данные о пользователях и группах в домене.
1 2 3 4 5 6 7 8 9 |
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:
1 2 |
* - nofile 16384 root - nofile 16384 |
После всего выполненного необходимо интегрировать авторизацию Winbind как часть штатной. Это можно сделать в /etc/nsswitch.conf
1 2 |
passwd: compat winbind group: compat winbind |
Теперь необходимо настроить PAM на работу с Winbind, а именно дописать в /etc/pam.d/common-session
1 |
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077 |
Чтобы увидеть списки пользователей или групп нужно выполнить команды:
1 2 3 4 |
wbinfo -u wbinfo -g getent passwd getent group |
Для перезагрузки samba используются:
1 2 |
sudo service smbd restart sudo /etc/init.d/samba restart |
На этом все, настройка завершена, самба готова к работе в домене windows.