Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
wiki:articles:pam [30/04/2023 10:16] (текущий) – [X11vnc] graf
Строка 1: Строка 1:
 +^   **Вход в систему пользователем домена (или PAM в Slackware)**   ^
 +\\
 +Или, другими словами, аутентификация и дальнейшая авторизация в системе Slackware 14.0 с использованием логина и пароля взятого с Activ Directory (AD).
  
 +<note warning>
 +В виду того, что зона **.local** [[http://ru.wikipedia.org/wiki/Zeroconf | зарезервирована mDNS]], настоятельно не рекомендуется использовать её в рабочем варианте.\\
 +Ниже приведённые названия даны, исключительно, только в качестве примеров.
 +</note>
 +
 +====== Начало ======
 +
 +Для того, чтобы осуществить задуманное, нам необходимо:
 +  *  Собрать и установить PAM;
 +  *  Собрать и установить samba с поддержкой PAM;
 +  *  Собрать и установить shadow с поддержкой PAM;
 +  *  Всё это дело настроить.
 +
 +^   **Файл**     **Описание**   ^
 +|[[http://slackware.su/forum/files/pam/pam-1.1.3-i486-1.txz | pam-1.1.3-i486-1.txz]]  |   //Собранный пакет PAM//   |
 +|[[http://slackware.su/forum/files/pam/shadow-4.1.5.1-i586-pam-1.tgz | shadow-4.1.5.1-i586-pam-1.tgz]]  |   //Собранный пакет shadow с поддержкой PAM//   |
 +|[[http://slackware.su/forum/files/pam/samba-3.6.12-i486-1_slack14.0.txz | samba-3.6.12-i486-1_slack14.0.txz]]  |   //Собранный пакет samba с поддержкой PAM//   |
 +|[[http://slackware.su/forum/files/pam/samba_pam_slackbuild.tar.gz | samba_pam_slackbuild.tar.gz]]  |   //SlackBuild для сборки samba с поддержкой PAM//   |
 +|[[http://slackware.su/forum/files/pam/pam.d.tar.gz | pam.d.tar.gz]]  |   //Каталог pam.d со всеми рабочими настройками//   
 +|[[http://slackware.su/forum/files/pam/confs_pam.tar.gz | confs_pam.tar.gz]]  |   //Файлы конфигураций (krb5.conf, login.defs, nsswitch.conf, pam.conf, resolv.conf, smb.conf)//   |
 +
 +Как собрать и где применить - ниже по статье.
 +
 +Работать будем с контролером домена из [[wiki:articles:addc|ЭТОЙ СТАТЬИ.]]\\
 +Т.е.:
 +
 +|Домен  |  //TRANSIT//  |
 +|Контролер домена  |  //DC1.TRANSIT.LOCAL//  |
 +|IP контролера домена  |  //192.168.10.188//  |
 +|IP шлюза и сервера времени  |  //192.168.10.250//  |
 +|Тестовый компьютер со Slackware 14.0  |  //Slack-test//  |
 +|IP тестового компьютер со Slackware 14.0  |  //192.168.10.44//  |
 +|Администратор домена  |  //Administrator//  |
 +|Пользователь домена  |  //v_pupkin//  |
 +
 +В принципе, оно работает и с контролером домена на Windows 2003 (проверено).
 +
 +<note tip>
 +Прежде чем начнёте, повторю высказывание Патрика по поводу PAMа:\\
 +
 +//"I think a better name for PAM might be SCAM, for Swiss Cheese Authentication Modules, and have never felt that the small amount of convenience it provides is worth the great loss of system security. We miss out on half a dozen security problems a year by not using PAM, but you can always install it yourself if you feel that you're missing out on the fun. (No, don't do that)"
 +\\
 +Patrick.
 +//
 +\\
 +\\
 +Что на великом и могучем звучит, примерно, так:\\
 +\\
 +//"Я думаю, что лучшим названием для PAM может быть SCAM (Swiss Cheese Authentication Modules - Швейцарско сырный модуль аутентификации) и никогда не чувствовал, что небольшое количество удобств, которое он обеспечивает, стоит большой потери безопасности системы . Мы освободились  от полдюжины проблем безопасности в год, не используя PAM, но вы всегда можете установить его самостоятельно, если чувствуете, что упускаете самое интересное. (Нет, не делайте этого)"
 +\\
 +  Патрик.
 +//
 +
 +</note>
 +
 +====== Собираем PAM ======
 +Начиная с версии 13.37, в дистрибутиве Slackware Linux в папке //extra/source/pam//, присутствует //SlackBuild//, который поможет нам собрать и в итоге получить готовый пакет [[http://slackware.su/forum/files/pam/pam-1.1.3-i486-1.txz | pam-1.1.3-i486-1.txz]].\\
 +Установим его:
 +<code>
 +# installpkg pam-1.1.3-i486-1.txz
 +</code>
 +
 +далее собираем остальные пакеты.
 +Соберем samba.
 +
 +====== Собираем и настраиваем samba ======
 +
 +Прежде чем начать собирать samba, нам необходимо собрать и установить керберос. Я тестировал с MIT Kerberos.\\
 +При помощи //sbopkg// правим слакбилд, //info//, собираем и устанавливаем последнюю версию MIT kerberos.
 +
 +Для того, чтобы не искать программы от kerberos добавим их в ///etc/profile//:
 +<code>
 +.....
 +.....
 +# Set the default system $PATH:
 +PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/kerberos/bin:/usr/kerberos/sbin"
 +.....
 +.....
 +</code> 
 +
 +Далее, для примера возьмем //samba-3.6.12//.\\
 +Скачаем SlackBuild [[http://slackware.su/forum/files/pam/samba_pam_slackbuild.tar.gz | samba_pam_slackbuild.tar.gz]] уже подправленный для сборки с PAM или с [[http://mirror.yandex.ru/slackware/slackware-14.0/source/n/samba/]], где нужно будет подправить SlackBuild в части ./configure.\\
 +Скачаем саму самбу [[http://samba.org/samba/ftp/stable/samba-3.6.12.tar.gz | samba-3.6.12.tar.gz]] и положим файл в каталог со SlackBuild'ом.\\
 +Если используете уже подправленный SlackBuid, то просто запустите его, если нет, то в части //./configure// измените на нижеследующее:
 +<code>
 +./configure \
 +  --prefix=/usr \
 +  --libdir=/usr/lib${LIBDIRSUFFIX} \
 +  --bindir=/usr/bin \
 +  --sbindir=/usr/sbin \
 +  --mandir=/usr/man \
 +  --sysconfdir=/etc \
 +  --with-configdir=/etc/samba \
 +  --with-piddir=/var/run \
 +  --with-privatedir=/etc/samba/private \
 +  --localstatedir=/var \
 +  --with-lockdir=/var/cache/samba \
 +  --with-logfilebase=/var/log/samba \
 +  --with-acl-support \
 +  --with-automount \
 +  --with-quotas \
 +  --with-syslog \
 +  --with-utmp \
 +  --with-winbind \
 +  --with-ldap \
 +  --with-ads \
 +  --with-sendfile-support \
 +  --with-dnsupdate \
 +  --with-profiling-data \
 +  --with-fhs \
 +  --with-swatdir=/usr/share/swat \
 +  --with-pammodulesdir=/etc/security \
 +  --with-krb5=/usr/kerberos \
 +  --with-pam \
 +  --with-pam_smbpass \
 +  --enable-cups \
 +  --enable-external-libtalloc=no \
 +  --enable-static=no \
 +  --enable-shared=yes \
 +  --with-cifsmount \
 +  --with-cifsumount \
 +  --with-quotas \
 +  --with-libsmbclient \
 +  --build=$ARCH-slackware-linux
 +</code>
 +
 +Для чистоты эксперимента я удалил установленную самбу и поставил вновь собранную.\\
 +
 +После установки скопируем 2 библиотеки //pam_smbpass.so// и //pam_winbind.so// туда, где им положено быть.
 +<code>
 +# cp /etc/security/*.so /lib/security/ 
 +</code>
 +
 +Теперь необходимо её настроить для ввода в домен. Для этого правим нужные файлы.\\
 +В начале статьи есть файл [[http://slackware.su/forum/files/pam/confs_pam.tar.gz | confs_pam.tar.gz]] в котором уже собраны файлы с рабочими у меня настройками, но на всякий случай, я их дублирую прямо в статье. И так, по порядку:\\
 +
 +__//**/etc/krb5.conf**//__
 +<file>
 +[logging]
 + default = FILE10000:/var/log/krb5/krb5lib.log
 +# default = FILE:/var/log/krb5/krb5libs.log
 + kdc = FILE:/var/log/krb5/krb5kdc.log
 + admin_server = FILE:/var/log/krb5/kadmind.log
 +
 +[libdefaults]
 +  default_realm = TRANSIT.LOCAL
 +  dns_lookup_realm = true
 +  dns_lookup_kdc = true
 +  ticket_lifetime = 24h
 +  forwardable = yes
 +
 +[realms]
 +    TRANSIT.LOCAL = {
 +         kdc = dc1.transit.local:88
 +         admin_server = dc1.transit.local:750
 +         default_domain = transit.local
 +     }
 +
 +[domain_realm]
 + .transit.local = TRANSIT.LOCAL
 +  transit.local = TRANSIT.LOCAL
 +
 +[appdefaults]
 +    pam = {
 +        debug = false
 +        ticket_lifetime = 36000
 +        renew_lifetime = 36000
 +        forwardable = true
 +        krb4_convert = false
 +    }
 +</file>
 +
 +__//**/etc/resolv.conf**//__
 +<file>
 +search transit.local
 +nameserver 192.168.10.188
 +</file>
 +
 +__//**/etc/nsswitch.conf**//__
 +<file>
 +# passwd:       files nis
 +# shadow:       files nis
 +# group:        files nis
 +
 +passwd:         files winbind
 +shadow:         files winbind
 +group:          files winbind
 +
 +hosts:          files dns
 +networks:       files
 +
 +services:       files
 +protocols:      files
 +rpc:            files
 +ethers:         files
 +netmasks:       files
 +netgroup:       files
 +bootparams:     files
 +
 +automount:      files
 +aliases:        files
 +</file>
 +
 +__//**/etc/smb.conf**//__
 +<file>
 +[global]
 +interfaces = eth0 lo
 +hosts allow = 192.168.10. 127.
 +netbios name = Slack-test
 +server string = Slack_test
 +security = ADS
 +workgroup = TRANSIT
 +realm = TRANSIT.LOCAL
 +obey pam restrictions = yes
 +allow trusted domains = No
 +socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 +name resolve order = hosts wins bcast lmhosts
 +case sensitive = no
 +dns proxy = no
 +client use spnego = yes
 +client signing = yes
 +os level = 0
 +preferred master = No
 +local master = No
 +domain master = No
 +dns proxy = No
 +ldap ssl = no
 +strict locking = No
 +time server = no
 +auth methods = winbind
 +encrypt passwords = yes
 +
 +winbind enum users = Yes
 +winbind enum groups = Yes
 +winbind use default domain = yes
 +winbind refresh tickets = yes
 +winbind uid = 10000-20000
 +winbind gid = 10000-20000
 +
 +template shell = /bin/bash
 +template homedir = /home/%D/%U
 +
 +log file = /var/log/samba/log.%m
 +max log size = 1024
 +log level = 3
 +display charset = koi8-r
 +unix charset = koi8-r
 +dos charset = cp866
 +nt acl support = yes
 +
 +printcap name = /etc/printcap
 +</file>
 +
 +Пробуем получить билетик:
 +<code>
 +# kinit Administrator
 +Password for Administrator@TRANSIT.LOCAL: 
 +
 +# klist
 +Ticket cache: FILE:/tmp/krb5cc_0
 +Default principal: Administrator@TRANSIT.LOCAL
 +
 +Valid starting       Expires              Service principal
 +11.03.2013 17:59:03  12.03.2013 03:59:03  krbtgt/TRANSIT.LOCAL@TRANSIT.LOCAL
 +        renew until 12.03.2013 18:01:50
 +</code>
 +
 +Получили, теперь введем машину в домен:
 +<code>
 +# net ads join -U  Administrator
 +Enter Administrator's password:
 +Using short domain name -- TRANSIT
 +Joined 'SLACK-TEST' to dns domain 'transit.local'
 +</code>
 +
 +Немного изменим файл ///etc/rc.d/rc.samba// добавив //winbindd//. В итоге он будет выглядеть так:
 +<code>
 +#
 +# /etc/rc.d/rc.samba
 +#
 +# Start/stop/restart the Samba SMB file/print server.
 +#
 +# To make Samba start automatically at boot, make this
 +# file executable:  chmod 755 /etc/rc.d/rc.samba
 +#
 +
 +samba_start() {
 +  if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/samba/smb.conf ]; then
 +    echo "Starting Samba:  /usr/sbin/smbd -D"
 +    /usr/sbin/smbd -D
 +    echo "                 /usr/sbin/nmbd -D"
 +    /usr/sbin/nmbd -D
 +    echo "                 /usr/sbin/winbindd -D"
 +    /usr/sbin/winbindd -D
 +  fi
 +}
 +
 +samba_stop() {
 +  killall smbd nmbd winbindd
 +}
 +
 +samba_restart() {
 +  samba_stop
 +  sleep 2
 +  samba_start
 +}
 +
 +case "$1" in
 +'start')
 +  samba_start
 +  ;;
 +'stop')
 +  samba_stop
 +  ;;
 +'restart')
 +  samba_restart
 +  ;;
 +*)
 +  # Default is "start", for backwards compatibility with previous
 +  # Slackware versions.  This may change to a 'usage' error someday.
 +  samba_start
 +esac
 +</code>
 +
 +дадим ему права на запуск и запустим //samba//:
 +<code>
 +# chmod 755 /etc/rc.d/rc.samba
 +# /etc/rc.d/rc.samba start
 +Starting Samba:  /usr/sbin/smbd -D
 +                 /usr/sbin/nmbd -D
 +                 /usr/sbin/winbindd -D
 + 
 +</code>
 +
 +Проверим связь с контролером домена:
 +<code>
 +# wbinfo -t
 +checking the trust secret for domain TRANSIT via RPC calls succeeded
 +
 +# wbinfo -u
 +v_pupkin
 +administrator
 +dns-dc1
 +krbtgt
 +guest
 +
 +# wbinfo -g
 +.....
 +.....
 +domain admins
 +domain guests
 +schema admins
 +domain users
 +dnsadmins
 +
 +# wbinfo -a administrator
 +Enter administrator's password:
 +plaintext password authentication succeeded
 +Enter administrator's password:
 +challenge/response password authentication succeeded
 +</code>
 +
 +А теперь нужно убедиться, что программа //getent// покажет нам локальных и доменных пользователей и группы одновременно:
 +<code>
 +# getent passwd
 +root:x:0:0::/root:/bin/bash
 +.....
 +.....
 +apache:x:80:80:User for Apache:/srv/httpd:/bin/false
 +messagebus:x:81:81:User for D-BUS:/var/run/dbus:/bin/false
 +haldaemon:x:82:82:User for HAL:/var/run/hald:/bin/false
 +pop:x:90:90:POP:/:/bin/false
 +nobody:x:99:99:nobody:/:/bin/false
 +v_pupkin:*:10000:10000:Пупкин Василий Иванович:/home/TRANSIT/v_pupkin:/bin/bash
 +administrator:*:10001:10000:Administrator:/home/TRANSIT/administrator:/bin/bash
 +dns-dc1:*:10002:10000:dns-dc1:/home/TRANSIT/dns-dc1:/bin/bash
 +krbtgt:*:10003:10000:krbtgt:/home/TRANSIT/krbtgt:/bin/bash
 +guest:*:10004:10001:Guest:/home/TRANSIT/guest:/bin/bash
 +
 +# getent group
 +root:x:0:root
 +bin:x:1:root,bin
 +daemon:x:2:root,bin,daemon
 +.....
 +.....
 +domain admins:x:10013:administrator
 +domain guests:x:10001:
 +schema admins:x:10014:administrator
 +domain users:x:10000:
 +dnsadmins:x:10015:
 +</code>
 +
 +Отлично! Всё необходимое мы проверили - работает!
 +Теперь приступим к самому серьёзному - к установке //shadow//.
 +
 +====== Собираем и устанавливаем shadow ======
 +<note warning>
 +После установки __**НЕ ПЕРЕЗАГРУЖАЙТЕСЬ !!!**__ Дочитайте статью до конца, чтобы знать где искать ошибки. Перейдите в соседнюю консоль (Alt+F2(3,4,5,6) или из Х-ов Ctrl+Alt+F2(3,4,5,6)). 100500 раз проверьте, что у вас всё работает и работает так, как Вам необходимо! А именно команды //login, logout, su, useradd, usermod, ssh// и им подобные (подробный список программ которые будут заменены можно посмотреть непосредственно в пакете). 
 +</note>
 +
 +Скачаем последнюю версию, на сегодня, //shadow//, соберем с поддержкой РАМ и установим в систему.
 +<code>
 +# wget http://pkg-shadow.alioth.debian.org/releases/shadow-4.1.5.tar.gz
 +# tar xf shadow-4.1.5.tar.gz
 +# cd shadow-4.1.5.1
 +# ./configure \
 +--prefix=/usr \
 +--sysconfdir=/etc \
 +--mandir=/usr/man \
 +--docdir=/usr/doc/shadow-4.1.5.1 \
 +--disable-shared \
 +--without-libcrack \
 +--with-libpam
 +# make 
 +# make install DESTDIR=/tmp/shadow-4.1.5.1
 +# cd /tmp/shadow-4.1.5.1
 +# makepkg  -l y -c n /tmp/shadow-4.1.5.1-i586-pam-1.tgz
 +# upgradepkg --reinstall --install-new /tmp/shadow-4.1.5.1-i586-pam-1
 +</code>
 +
 +Всё, //shadow// установлен, теперь нужно настроить PAM и в соседней консоли проверить работоспособность.
 +
 +====== Настройка и проверка работоспособности ======
 +
 +Настройки PAM находятся в каталоге ///etc/pam.d//. Изначально его нет, нужно создать.
 +В этом каталоге находятся текстовые файлы с политиками. И именуются эти файлы, соответственно сервису, к которому политики применяются.\\
 +Т.е. для программы //login//, это //login// и т.д.\\
 +Вначале статьи есть архив каталога //pam.d// с моими рабочими файлами, можете взять их для примера и настроить под себя, или просто создать свои.
 +
 +Существует возможность настройки РАМ через ///etc/pam.conf// в котором содержатся все политики PAM для системы. Но я этот метод не испытывал и положил его в архив //confs_pam.tar.gz// на всякий случай, может кому-то такой способ покажется более привлекательным и он напишет, потом, про это статью. :)\\
 +Все политики в файле //pam.conf// взяты [[http://old.slackware.ru/show_forum.ghtml?Forum_id=66&root_id=2707&depth=infinite | ОТ СЮДА.]]
 +
 +Подробно про то, что такое PAM, тонкости настройки и с чем его едят можно почитать:\\
 +[[http://www.freebsd.org/doc/ru/articles/pam/ | МНОГО ТУТ.]]\\
 +[[http://rus-linux.net/lib.php?name=/MyLDP/sec/pam.html | НЕМНОГО ТУТ.]]\\
 +[[http://citforum.ru/operating_systems/articles/pam.shtml | ЧУТЬ-ЧУТЬ ТУТ.]]\\
 +
 +А мы приступим к настройке.\\
 +Если Вы воспользовались каталогом из моего архива [[http://slackware.su/forum/files/pam/pam.d.tar.gz | pam.d.tar.gz]], то Вам, в принципе, здесь настраивать ничего не надо. Разве только убрать или добавить что-то лично под себя.\\
 +Я приведу содержимое нескольких файлов, необходимых для входа в систему:
 +
 +__//**/etc/pam.d/login**//__
 +<code>
 +#%PAM-1.0
 +auth required pam_securetty.so
 +auth sufficient pam_winbind.so
 +auth sufficient pam_unix.so use_first_pass
 +auth include system-auth-winbind
 +auth required pam_nologin.so
 +
 +account sufficient pam_winbind.so
 +account include system-auth-winbind
 +
 +password include system-auth-winbind
 +
 +session include  system-auth-winbind
 +session required pam_unix.so
 +session required pam_env.so
 +session required pam_motd.so
 +session required pam_limits.so
 +session optional pam_mail.so dir=/var/spool/mail standard
 +session optional pam_lastlog.so
 +session optional pam_loginuid.so
 +session optional pam_console.so
 +</code>
 +
 +__//**/etc/pam.d/passwd**//__
 +<code>
 +#%PAM-1.0
 +auth            include         system-auth-winbind
 +account         include         system-auth-winbind
 +password        include         system-auth-winbind
 +</code>
 +
 +__//**/etc/pam.d/su**//__
 +<code>
 +#%PAM-1.0
 +auth            sufficient      pam_rootok.so
 +# Uncomment the following line to implicitly trust users in the "wheel" group.
 +#auth           sufficient      pam_wheel.so trust use_uid
 +# Uncomment the following line to require a user to be in the "wheel" group.
 +auth            required        pam_wheel.so use_uid
 +auth            include         system-auth-winbind
 +account         include         system-auth-winbind
 +password        include         system-auth-winbind
 +session         include         system-auth-winbind
 +session         optional        pam_xauth.so
 +</code>
 +
 +__//**/etc/pam.d/usermod**//__
 +<code>
 +#%PAM-1.0
 +auth            sufficient      pam_rootok.so
 +account         required        pam_permit.so
 +password        include         system-auth
 +</code>
 +
 +__//**/etc/pam.d/system-auth-winbind**//__
 +<code>
 +#%PAM-1.0
 +
 +auth        required      pam_env.so
 +auth        sufficient    pam_winbind.so
 +auth        sufficient    pam_unix.so likeauth nullok use_first_pass
 +auth        required      pam_deny.so
 +
 +account     sufficient    pam_winbind.so
 +account     required      pam_unix.so
 +
 +password    sufficient    pam_unix.so nullok use_authtok md5 shadow
 +password    required      pam_deny.so
 +
 +session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0022
 +session     required      pam_limits.so
 +session     required      pam_unix.so
 +</code>
 +
 +__//**/etc/pam.d/system-auth**//__
 +<code>
 +#%PAM-1.0
 +auth    required        /lib/security/pam_mount.so
 +auth    optional        /lib/security/pam_group.so
 +auth    sufficient      /lib/security/pam_unix.so nullok_secure  use_first_pass
 +auth    sufficient      /lib/security/pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE debug
 +auth    required        /lib/security/pam_deny.so
 +</code>
 +
 +__**НЕ ПЕРЕЗАГРУЖАТЬСЯ!!!**__\\
 +
 +Переходим в соседнюю консоль и пытаемся зайти под доменным пользователем:
 +<code>
 +Welcome to Linux 3.2.29-smp (tty3)
 +
 +
 +Slack-test Login: administrator
 +ошибка настройки: неизвестный элемент «FAILLOG_ENAB» (сообщите администратору)
 +ошибка настройки: неизвестный элемент «LASTLOG_ENAB» (сообщите администратору)
 +ошибка настройки: неизвестный элемент «MAIL_CHECK_ENAB» (сообщите администратору)
 +Password: 
 +Your password will expire in 10 days.
 +
 +Linux 3.2.29-smp.
 +
 +In a great romance, each person basically plays a part that the
 +other really likes.
 +                -- Elizabeth Ashley
 +
 +administrator@Slack-test:~$                                      
 +</code>
 +
 +Ура, вошли, но получили ошибки. Ничего страшного, просто нужно закомментировать эти элементы в файле ///etc/login.defs//.\\
 +В файле //login.defs// идущим в архиве вначале статьи, уже все ошибки закомментированы.\\
 +Идём дальше. Пробуем получить привилегии локального root'a
 +<code>
 +administrator@Slack-test:~$ su -
 +Password: 
 +su: Доступ запрещен
 +</code>
 +
 +Всё верно, ведь пользователь //administrator// не входит в группу //wheel//. Вернёмся в родную консоль, убедимся в этом и добавим в группу.
 +<code>
 +# id administrator
 +uid=10001(administrator) gid=10000(domain users) группы=10000(domain users),10006(group policy creator owners),10004(denied rodc password replication group),10009(enterprise admins),10014(schema admins),10013(domain admins)
 +
 +# usermod -a -G wheel administrator
 +
 +# id administrator
 +uid=10001(administrator) gid=10000(domain users) группы=10000(domain users),10(wheel),10006(group policy creator owners),10004(denied rodc password replication group),10009(enterprise admins),10014(schema admins),10013(domain admins)
 +</code>
 +
 +Переходим обратно в соседнюю консоль и проверяем:
 +<code>
 +administrator@Slack-test:~$ su -
 +Password: 
 +F:      When into a room I plunge, I
 +        Sometimes find some VIOLET FUNGI.
 +        Then I linger, darkly brooding
 +        On the poison they're exuding.
 +                -- The Roguelet's ABC
 +
 +root@Slack-test:~# 
 +</code>
 +
 +Всё работает!\\
 +Пробуем войти под обычным пользователем домена //v_pupkin//.
 +<code>
 +administrator@Slack-test:~$ logout
 +
 +Welcome to Linux 3.2.29-smp (tty3)
 +
 +
 +Slack-test Login: v_pupkin
 +Password: 
 +
 +Создание каталога /home/TRANSIT/v_pupkin.
 +Linux 3.2.29-smp.
 +
 +XIIdigitation, n.:
 +        The practice of trying to determine the year a movie was made
 +by deciphering the Roman numerals at the end of the credits.
 +                -- Rich Hall, "Sniglets"
 +
 +v_pupkin@Slack-test:~$
 +</code>
 +
 +И так, вход в систему пользователями домена работает. Но не забывайте, что они не являются членами локальных групп, таких как audio, video, cdrom и т.д. и поэтому не смогут пользоваться всеми "вкусностями" системы. Просто добавьте их в эти группы и наслаждайтесь! :)
 +
 +====== Графический вход в систему ======
 +
 +Можно не делать всего вышеописанного, если планируется работа в одной из графических сред рабочего стола (KDE, XFCE и т.д), которые возможно выбрать с помощью утилиты //xwmconfig//.
 +
 +В качестве графической оболочки запроса логина с паролем, будем использовать оконный менеджер //lightdm// входящий в состав проекта по использованию //PAM// в //Slackware Linux//.
 +
 +Скачиваем скрипт с сайта проекта, присваиваем бит запуска и запускаем:
 +<code>
 +# wget http://www.bisdesign.ca/ivandi/slackware/SlackADS/sync-SlackADS.sh
 +# chmod +x ./sync-SlackADS.sh
 +# ./sync-SlackADS.sh
 +</code>
 +
 +После запуска скрипта всё необходимое скачается в ///home/SlackADS//. Переходим в этот каталог и запускаем скрипт сборки. По окончании сборки запускаем скрипт настройки.
 +<code>
 +# cd /home/SlackADS
 +# ./SlackADS.SlackBuild
 +# ./setup.ADS.sh
 +</code>
 +
 +Проверяем соответствие нашему домену в ///etc/krb5.conf//
 +<code>
 +default_realm    = MYDOM.LAN
 +</code>
 +
 +и в ///etc/samba/smb.conf//
 +<code>
 +[global]
 +   workgroup = MYDOM
 +   realm = MYDOM.LAN
 +   security = ADS
 +</code>
 +
 +для samba 4.6+ 
 +<code>
 +idmap config *:backend = tdb
 +
 +kerberos method = dedicated keytab
 +dedicated keytab file = /etc/krb5.keytab
 +</code>
 +
 +Если всё верно, присоединяемся к домену и получаем //keytab//
 +<code>
 +# net ads join -U Administrator
 +# kinit Administrator
 +# net ads keytab create -U Administrator
 +</code>
 +
 +Далее настраиваем //lightdm//.\\
 +Правим файлы конфигураций:\\
 +///etc/lightdm/lightdm.conf//
 +<code>
 +[SeatDefaults]
 +# Запрещаем гостевой вход
 +allow-guest=false
 +
 +# Скрываем список пользователей
 +greeter-hide-users=true
 +
 +# Пользователь вручную вводить логин с паролем
 +greeter-show-manual-login=true
 +
 +# Сессия для загрузки 
 +#user-session=kde-plasma
 +user-session=default 
 +
 +# Скрипт который запустится при запуске сеанса greeter (выполняется от root)
 +display-setup-script=/etc/rc.d/rc.x11vnc 
 +</code>
 +
 +///etc/lightdm/lightdm-gtk-greeter.conf//
 +<code>
 +[greeter]
 +# Файл изображения в качестве фона или цвет (например, # 772953)
 +background=/home/fon.jpeg
 +
 +# Схема GTK+ 
 +theme-name=Raleigh
 +
 +# Схема иконок
 +icon-theme-name=oxygen
 +
 +# Позиция окна ввода логина с паролем (x y). По умолчанию 50% 50% - середина экрана.
 +position= 55% 45%
 +</code>
 +Используемые параметры, их значения и описание есть тут же в каталоге ///etc/lightdm/// в файлах //*.default//
 +
 +===== X11vnc =====
 +
 +Для возможности удалённого контроля и демонстрации возможностей графической среды установим //x11vnc//. Его можно собрать самостоятельно при помощи //sbopkg// или найти готовый пакет на //[[https://pkgs.org/download/x11vnc]]//.\\
 +После установки пакета создадим скрипт ///etc/rc.d/rc.x11vnc// с содержимым:
 +<code>
 +#!/bin/bash
 +/usr/bin/x11vnc -forever -repeat -rfbport 5900 -shared -rfbauth /etc/vnc/passwd -o /var/log/x11vnc.log &
 +</code>
 +
 +Назначим пароль при подключении, создадим лог-файл, присвоим скрипту бит запуска и запустим VNC.
 +<code>
 +# mkdir /etc/vnc
 +# x11vnc -storepasswd ваш_пароль /etc/vnc/passwd 
 +# touch /var/log/x11vnc.log
 +# chmod +x /etc/rc.d/rc.x11vnc
 +# /etc/rc.d/rc.x11vnc
 +</code>
 +
 +Теперь можно подключаться к компьютеру по //VNC// на порту 5900.\\
 +Для автозапуска скопируем скрипт //rc.x11vnc// в, предварительно созданный, каталог ///etc/X11/Xsession.d//  
 +
 +
 +===== Автомонтирование ====
 +
 +При входе в систему примонтируем сетевой каталог //4all// расположенный на файловом сервере //192.168.10.247// в ///mnt/fserver// с правами вошедшего в систему пользователя домена.\\
 +Для этого надо установить дополнительные пакеты последних версий //libHX//, //audit// и //pam_mount// c //[[http://www.bisdesign.ca/ivandi/slackware/PAM-packages/]]//.
 +
 +После установки прописываем //pam_mount.so// в файл ///etc/pam.d/system-auth//, который примет вид:
 +<code>
 +auth       required     pam_mount.so
 +auth       optional     pam_group.so
 +auth       sufficient   pam_krb5.so        minimum_uid=70001
 +auth       required     pam_unix.so        use_first_pass
 +
 +account    sufficient   pam_krb5.so        minimum_uid=70001
 +account    required     pam_unix.so
 +
 +session    required     pam_mount.so
 +session    required     pam_mkhomedir.so   umask=0066
 +session    sufficient   pam_krb5.so        minimum_uid=70001
 +session    required     pam_unix.so
 +
 +password   sufficient   pam_krb5.so        minimum_uid=70001
 +password   required     pam_unix.so
 +</code>
 +
 +И в файл ///etc/security/pam_mount.conf.xml// в блок //Volume definitions// прописываем:
 +<code=xml>
 +                <!-- Volume definitions -->
 +
 +<volume fstype="cifs" server="192.168.10.247" path="4all" mountpoint="/mnt/fserver" />
 +</code>
 +
 +Теперь, после ввода доменного логина и пароля в //lightdm//, пользователь войдёт в свой рабочий стол и получит доступ на сетевой ресурс в ///mnt/fserver//.
 +
 +===== Ошибки ====
 +
 +  * //**При верном логине и пароле всё равно выкидывает в lightdm**//
 +
 +**1.** В //~/.xsession-errors// ошибка: 
 +
 +<code>
 +xfce4-session: Unable to establish ICE listeners: Cannot establish any listening sockets
 +</code>
 +исправляем
 +<code>
 +# rm -r /tmp/.ICE-unix/
 +# mkdir /tmp/.ICE-unix && chmod 1777 /tmp/.ICE-unix
 +</code>
 +
 +**2.** В ///var/log/Xorg.0.log*// ошибка: 
 +<code>
 +(EE) Backtrace:
 +(EE) 0: /usr/libexec/Xorg (xorg_backtrace+0x41) [0x580701]
 +(EE) 1: /usr/libexec/Xorg (0x400000+0x184629) [0x584629]
 +(EE) 2: /lib64/libpthread.so.0 (0x7f14041f9000+0x113b0) [0x7f140420a3b0]
 +(EE) 3: /usr/lib64/libpixman-1.so.0 (pixman_region_fini+0x9) [0x7f1404c5cac9]
 +(EE) 4: /usr/lib64/xorg/modules/drivers/intel_drv.so (0x7f13ff7b7000+0x5f396) [0x7f13ff816396]
 +(EE) 5: /usr/lib64/xorg/modules/drivers/intel_drv.so (0x7f13ff7b7000+0x5d041) [0x7f13ff814041]
 +(EE) 6: /usr/libexec/Xorg (0x400000+0x10bf9d) [0x50bf9d]
 +(EE) 7: /usr/libexec/Xorg (0x400000+0x102661) [0x502661]
 +(EE) 8: /usr/libexec/Xorg (0x400000+0x34d5f) [0x434d5f]
 +(EE) 9: /usr/libexec/Xorg (0x400000+0x38c43) [0x438c43]
 +(EE) 10: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f140283d7d0]
 +(EE) 11: /usr/libexec/Xorg (_start+0x29) [0x4242a9]
 +(EE)
 +(EE) Segmentation fault at address 0x0
 +</code>
 +
 +Исправляем. Создаем файл ///etc/X11/xorg.conf.d/20-intel.conf// с содержимым:
 +<code>
 +Section "Device"
 +   Identifier  "Intel Graphics"
 +   Driver      "intel"
 +   Option      "AccelMethod"     "uxa"
 +EndSection
 +</code>
 +
 +  * //**В списках настройки экрана нет поддерживаемого монитором разрешения.**//
 +
 +Я точно знаю, что мой 17%%"%% монитор поддерживает разрешение 1280Х1024, но в настройках экрана XFCE максимально допустимое всего лишь 1024Х768.\\
 +Узнаем параметры разрешения 1280х1024 для последующей настройки.
 +<code>
 +# cvt 1280 1024
 +
 +1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
 +Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
 +</code>
 +
 +Создадим скрипт в ///usr/bin/fix_vga_mode// куда впишем полученные значения.
 +<code>
 +#!/bin/sh
 +
 +# VGA1 - это название монитора которое можно узнать запустив xrandr без параметров.
 +# my_set - произвольное название создаваемого режима.
 +
 +/usr/bin/xrandr --newmode my_set 109.00  1280 1368 1496 1712  1024 1027 1034 1063
 +/usr/bin/xrandr --addmode VGA1 my_set
 +/usr/bin/xrandr --output VGA1 --mode my_set
 +</code>
 +
 +Присваиваем бит запуска и запускаем. 
 +<code>
 +# chmod +x /usr/bin/fix_vga_mode
 +# fix_vga_mode
 +</code>
 +
 +Для автоматизации можно прописать запуск скрипта в ///etc/rc.d/rc.x11vnc// который потом будет прописан в конфиге //lightdm//.
 +
 +
 +----
 +
 +[[http://slackware.su/forum/index.php/topic,154.0.html | - Обсуждаем на форуме -]]
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:pam (generated for current page)