Создать сайт
Понравился? Нажмите -
@ADVMAKER@
ArchLinux (Manjaro) + Samba или ввод компьютера в AD (Active Directory)
Добавил: uzhmaylo 01 февраля 2016 14:31

     Если Ваш компьютер под управлением Arch Linux находится на предприятии и Вам необходимо, что бы Ваш компьютер был введёл в домен корпорации, что бы работать под доменной учётной записью, необходимо установить пакет программ SAMBA.

     Для установки SAMBA, необходимо выполнить команду:

sudo pacman -S samba

     Теперь необходимо задать правильное имя компьютера:

hostnamectl set-hostname [имя компьютера]

или в файле /etc/hostname:

[имя компьютера] - без фигурных кавычек

желательно после этого перезагрузить компьютер.

 

Настройка синхронизации времени

 

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

 

sudo net time set [имя домена]

 

Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

 

sudo ntpdate ntp.time.in.ua 

или


sudo ntpdate [имя домена]

 

Автоматическая же синхронизация настраивается с помощью ntpd, это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:

sudo pacman -S ntp

Теперь исправьте файл /etc/ntp.conf, добавив в него информацию о вашем сервере времени:

# Associate to Arch's NTP pool
server ntp.time.in.ua
server ntp2.time.in.ua
server ntp3.time.in.ua
server 3.arch.pool.ntp.org

После чего перезапустите демон ntpd:

sudo systemctl enable ntpd

(очень ВАЖНО, что бы время вашей системы совпадало со временем домена).

 

Теперь пора настраивать непосредственно взаимодействие с доменом.

 

Настройка авторизации через Kerberos

 

Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf. В общем случае он выглядит так (РЕГИСТР ВАЖЕН):

[libdefaults]
    default_realm = [ПОЛНОЕ.ИМЯ.ДОМЕНА]

[realms]
# use "kdc = ..." if realm admins haven't put SRV records into DNS
    [КОРОТКОЕ ИМЯ ДОМЕНА] = {
        admin_server = [полное.имя.домена]
    }

[domain_realm]
    .[полное.имя.домена] = [ПОЛНОЕ.ИМЯ.ДОМЕНА]
    [полное.имя.домена] = [ПОЛНОЕ.ИМЯ.ДОМЕНА]
    .[короткое имя домена] = [КОРОТКОЕ ИМЯ ДОМЕНА]
    [короткое имя домена] = [КОРОТКОЕ ИМЯ ДОМЕНА]

[logging]
#    kdc = CONSOLE

Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду:

     kinit [пользователь]@[ПОЛНОЕ.ИМЯ.ДОМЕНА]

Фигурные кавычки везде убираем! Если вы не получили никаких ошибок - значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Что бы убедиться в том, что билет получен - наберите команду:

klist

Вы должны увидеть примерно следующее:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [пользователь]@[ПОЛНОЕ.ИМЯ.ДОМЕНА]

Valid starting       Expires              Service principal
01.02.2016 14:47:25  02.02.2016 00:47:25  krbtgt/[ПОЛНОЕ.ИМЯ.ДОМЕНА]@[ПОЛНОЕ.ИМЯ.ДОМЕНА]
    renew until 02.02.2016 14:47:18

 

Настройка Samba и вход в домен

 

Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf. На данном этапе вас должны интересовать только некоторые опции из секции [global]. Ниже - пример работающей части файла конфигурации Samba с комментариями по поводу значения важных параметров:

#======================= Global Settings =======================

[global]
workgroup = [КОРОТКОЕ ИМЯ ДОМЕНА]
realm = [ПОЛНОЕ.ИМЯ.ДОМЕНА]
server string = компьютер Жмайло Ю. Н.
        preferred master = no
        domain logons = no

# вот тут мы показываем, что используем AD
        security = ADS


map to guest = bad user

# вот тут мы показываем, что используем метод аунтентификации winbind
auth methods = winbind

# если стоит * то samba сама будет искать домен контроллер через dc, или же можно перечислить их IP адреса через пробел в явном виде. Или указать один #IP для того dc на котором хотите авторизоваться. Для отказоустойчивости лучше указать несколько dc или *
password server = *

# Возможность оффлайн-авторизации при недоступности доменконтроллера
   winbind offline logon = yes

# Период кэширования учетных записей, по умолчанию равен 5 секунд
   winbind cache time = 5
   usershare max shares = 1000
   usershare allow guests = yes
   create mask = 0777
   directory mask = 0777

# файл ручного мапинга пользователей (кому разрешён доступ)
        username map = /etc/samba/smbusers

        encrypt passwords = yes
        log level = 3
        log file = /var/log/samba/%m
        max log size = 50
        printcap name = cups
        printing = cups
        winbind enum users = Yes
        winbind enum groups = Yes
        winbind use default domain = Yes
        winbind nested groups = Yes

   # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
        winbind refresh tickets = yes

    idmap config * : range = 16777216-33554431
    idmap config * : backend = tdb

   # Если вы хотите разрещить использовать командную строку для пользователей домена, то
   # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
        template shell = /bin/bash
        template homedir = /home/%D/%U

dns proxy = no

# и прописать wins сервера через пробел (не обязательный параметр)
wins server = XXX.XXX.XXX.XXX

 

После того, как вы отредактируете smb.conf выполните команду

testparm

Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:

#testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

 

Смотрим есть ли ошибки или предупреждения, если появится:

 

«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

 

Без перезагрузки можно устранить так:

 

ulimit -n 16384

 

Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf

 

# Добавить в конец файла строки: * - nofile 16384 root - nofile 16384


Теперь можно попробовать ввести компьютер в домен, для чего выполним команду:

sudo net ads join -U [админ домена] -D [ПОЛНОЕ.ИМЯ.ДОМЕНА]

 

И в случае успеха вы увидите что-то похожее на:

Using short domain name -- ПОЛНОЕ ИМЯ ДОМЕНА

Joined 'ИМЯ ВАШЕГО КОМПЬЮТЕРА' to realm 'полное имя домена'

 

Если больше никаких сообщений нет - значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться, что в домене всё прописалось так, как надо.

 

Так же можно набрать команду:

 

net ads testjoin

 

Если все хорошо, можно увидеть:

 

#net ads testjoin Join is OK

 

 

Добавление Winbind в качестве источника пользователей и групп

 

Для того, чтобы ваша ArchLinux (Manjaro) прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать ArchLinux (Manjaro) использовать Winbind как дополнительный источник информации о пользователях и группах.

 

Для этого измените строчки в файле /etc/nsswitch.conf приведя к такому виду:

 

passwd:                   files winbind
shadow:                   files winbind
group:                      files winbind

hosts:                       files dns wins


 

Запуск и проверка сервисов

 

Выполним команду для запуска сервисов Samba (включая smbd, nmbd и winbindd)

 

sudo systemctl start smbd nmbd winbindd

 

Включим сервисы как демон (службу), для чего выполним команду:

 

sudo systemctl enable smbd nmbd winbindd

Перезагрузим компьютер.


 

Проверка Winbind

 

Проверим, может ли winbind получить доступ к AD. Следующие команды возвращают список пользователей AD:

 

# wbinfo -u

после запуска этой команды нужно некоторое время подождать....

Этот процесс может занять несколько минут (всё зависит от кол-ва пользователей в активном каталоге).

После чего вам высыпится список пользователей занесённых в Active Directory.

 

Можно сделать то же самое для групп AD:

 

# wbinfo -g

 

Настройка PAM или вход в систему под пользователем из AD (Активного каталога домена).

Для того, что бы пользователь из домена (Активного каталога) мог залогиниться (войти в систему) под своими учётными данными, необходимо отредактировать файл /etc/pam.d/system-auth.

измените его следующим образом:

Раздел "auth"

Найдите строку:

auth required pam_unix.so ... 

Удалите её, и замените следующим:

auth [success=1 default=ignore] pam_localuser.so
auth [success=2 default=die] pam_winbind.so
auth [success=1 default=die] pam_unix.so nullok
auth requisite pam_deny.so

Раздел "account"

Найдите строку:

account required pam_unix.so 

Под ней допишите следующее:

account [success=1 default=ignore] pam_localuser.so 
account required pam_winbind.so

Раздел "session"

Найдите строку:

session required pam_unix.so 

Под ней допишите следующее:

session [success=1 default=ignore] pam_localuser.so 
session required pam_winbind.so

Раздел "password"

Найдите строку:

password required pam_unix.so ... 

Удалите её и замените следующими:

password [success=1 default=ignore] pam_localuser.so
password [success=2 default=die] pam_winbind.so
password [success=1 default=die] pam_unix.so sha512 shadow
password requisite pam_deny.so

Проверка входа

Теперь запустите новую сессию нажав комбинацию клавишь Ctrl+Alt+F1 или F2 и т.д. Введите логин и пароль пользователя из Активного каталога (AD).

Если всё в порядке - вы увидите командную строку вида:

[имя пользователя]@[имя вашего компьютера]~$


Но это ещё не всё - если вы попытаетесь запустить графическую среду под пользователем домена - у вас будут вылетать различные ошибки. Основной причиной является то, что по умолчанию PAM не создаёт автоматически папку пользователя вошедшего интерактивно. Что бы научить его это делать, необходимо в том же файле /etc/pam.d/system-auth добавить ещё одну строчку после session..., а именно:

session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077

Вот теперь графическая среда должна запуститься и если Вы не переназначили домашнюю папку для пользователей домена в файле: /etc/samba/smb.conf, то PAM автоматически создаст папку по пути: /home/[короткое имя домена]/[имя доменного пользователя].

Но и после этого ещё не всё :)

Когда вы нажмёте на выход в графической оболочке, у Вас может возникнуть следующая ошибка:

"Получена ошибка при попытке завершения сеанса" и далее текст:

id not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

Просто скопируйте в корневой каталог пользователя файл: .profile

Подготовлено по материалам:

https://wiki.archlinux.org/index.php/Active_Directory_Integration_(Русский)

http://help.ubuntu.ru/wiki/ввод_в_домен_windows

http://dominicm.com/install-samba-on-arch-linux/

https://www.opennet.ru/tips/info/1985.shtml

Просмотры (250)  Комментарии (0)  Форум (Linux Manjaro)
Зарегистрированный
Анонимно