Участник:Alexandr/altinlan

Материал из ALT Linux Wiki
< Участник:Alexandr
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

ALT Linux в Домене или Рабочей Группе

В этой статье я постараюсь привести примеры оптимальной, для большинства ситуаций, настройки дистрибутива Альт Линукс на работу в составе рабочей группы и в качестве члена домена. Изначально предполагается, что у вас установлена чистая система и есть доступ в Интернет или к другому репозиторию с необходимыми пакетами.

Я приведу полные примеры конфигурационных файлов, использование которых позволяет сразу же добиться результатов. Настоятельно рекомендую! использовать только их и не пытаться на их примере модифицировать свои, иначе вероятность ошибки, может многократно возрасти. Лучше сразу настроить систему на работу, а потом уже «допиливать» до требуемого состояния, чем пытаться разобраться в возникших проблемах. Данное руководство проверено на Alt Linux 4.1.0 Desktop и Lite, но теоретически должно работать на 4.0

Со временем, я буду обновлять и/или обновлять данное руководство, с одной лишь простой целью — создать из операционной системы Alt Linux удобное и адекватное решение для использования этой операционной системы вместе, с операционными системами Windows в одной локальной сети.

1. Работа в составе Рабочей Группы

Шаг 1 -

Перво-наперво мы включаем, либо перезагружаем компьютер. Затем нам нужно будет установить или доставить необходимые пакеты, а это — samba-client-3.x, samba-common-3.x, samba-3.x, они обязательны. Так же, если у вас графическая оболочка отличная от KDE, для удобной работы с сетью мы установим пакет fusesmb, хотя, даже если у вас KDE, вам может понравиться этот пакет. Монтировать общие сетевые папки при входе пользователя в систему можно через файл /etc/fstab ну или при помощи пакета pam_mount. Если у вас есть принтер и вы хотите раздать его в сеть, то у вас для этого все уже установлено. Открываем консоль — это можно сделать либо сочетанием клавиш «Alt+Ctrl+F2», либо поискать программы «Консоль» и «Терминал». Затем, нам нужно получить права суперпользователя системы. Если вы открыли консоль вышеприведенным сочетанием клавиш, просто войдите под пользователем root. Иначе, выполните команду:

$ su –

введите пароль root-а и затем, мы проверим, какие у вас установлены пакеты. Выполним команды:

# rpm –qa | grep –E ”samba|fuse|cups”

Обычно не бывает пакета pam_mount и не хватает пакетов fusesmb. Для того чтобы их поставить мы воспользуемся репозиторием. Сейчас мы подключим два репозитория. Если вы умеете подключать репозитории, то две следующие команды можете пропустить:

# echo “rpm ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.1/branch/ i586 classic” > /etc/apt/sources.list.d/a.alt.list
# echo “rpm ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.1/branch/ noarch classic” >> /etc/apt/sources.list.d/a.alt.list

Теперь мы обновим список пакетов и установим нужные:

# apt-get update ; apt-get install  fuse-smb

Я установил два пакета, которых обычно не хватает. Если у вас не хватает еще каких то пакетов, по просто добавьте их в конец приведено команды. Каждый новый пакет добавляется через пробел.


Шаг 2 -

Теперь у нас есть все необходимое, перейдем непосредственно к настройке. Вот пример файла конфигурации /etc/samba/smb.conf, который мы будем использовать. Перед тем как приступить к правке файла, сделаем его резервную копию:

# cp /etc/samba/smb.conf /etc/samba/smb.conf.old

Теперь можем приступать. Полностью заменяем содержимое файла /etc/samba/smb.conf тем, что я привел ниже:

# Samba config file created by Alexandr
# Date: 2008/25/12

[global]
        dos charset = CP866
        unix charset = UTF8
        display charset = LOCALE
        workgroup = Здесь следует указать рабочую группу
        netbios name = Здесь следует указать NetBIOS имя ПК
        server string = 
        printcap name = cups
        load printers = yes
        printing = cups
        log file = /var/log/samba/log.%m
        max log size = 50
        dns proxy = no
        ldap ssl = no
        preferred master = yes
        os level = 23
        use sendfile = yes
        map to guest = Bad User
        public = yes
        browseable = yes

# Директива настройки доступа к принтерам. В этом примере ко всем принтерам в системе разрешен общий доступ.
[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = yes
        guest ok = yes
        writable = yes
        printable = yes
        create mode = 0700

# А здесь мы добавляем общую сетевую папку, которая будет отображаться в сети как «Общая» к ней так же разрешен
# общий доступ,  на чтение, запись, создание и удаление для всех.
# Для того, чтобы русские папки отображались корректно в сетевом окружении,
# необходимо чтобы в конфиге использовалась кодировка UTF8. Либо просто пишите по английски.

[Общая]
        path = /var/share
        force user = nobody
        force create mode = 0666
        force directory mode = 0777
        browseable = yes
        public = yes
        writable = yes

Если в качестве параметра force user указать имя вашего рабочего пользователя, вы сможете беспрепятственно удалять файлы в свое сетевой папке, обращаясь к ней как к дисковому ресурсу. Иначе, при значении nobody, чтобы удалить файлы из своей сетевой папки, вам придется либо поднимать свои права до root, либо заходить в папку как на сетевой ресурс. Это связанно с тем, что удалять файлы с файловой системы, может либо владелец файла, либо пользователь с правами root. В нашем случае, любой пользователь, обращающийся к сетевой папке, будет идентифицироваться в качестве пользователя nobody, соответственно, владельцем файла будет указываться пользователь nobody. Если мы укажем своего пользователь, тогда владельцем файлов будет наш пользователь.


Затем мы установим правильные права на чтение и запись в нашу папку:

# chmod –f 0777 /var/share

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

# chmod –f 0666 /etc/samba/smb.conf

А затем просто откройте этот файл любым текстовым редактором. После внесения изменений, обязательно верните прежние права доступа к файлу:

# chmod –f 0644 /etc/samba/smb.conf

Осталось только включить сервис SAMBA в автоматическую загрузку при старте системы а так же его запустить:

# chkconfig smb on ; service smb start

При каждом изменении файла /etc/samba/smb.conf, для принятия этих изменений, сервис необходимо перезапускать:

# service smb restart


Шаг 3 -

Если мы хотим раздавать наши принтеры в сеть, будет не лишним сделать еще несколько вещей. Принтера в локальную сеть можно раздавать еще с помощью протокола IPP, чем мы сейчас и займемся. Я предполагаю, что у вас уже настроены принтера для локальной печати, так как настройка принтеров не входит в тематику данного руководства. Для начала разрешаем всем доступ к нашему серверу печати, приводим файл /etc/cups/cupsd.conf к следующему виду:

LogLevel info

SystemGroup sys root

# Allow remote access
Port 631

Listen /var/run/cups/cups.sock

# Enable printer sharing and shared printers.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseAddress @LOCAL
DefaultAuthType Basic

<Location />
  # Allow shared printing...
  Order allow,deny
  Allow all
</Location>

<Location /admin>
  Encryption Required
  # Restrict access to the admin pages...
  Order allow,deny
</Location>

<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  # Restrict access to the configuration files...
  Order allow,deny
</Location>

<Policy default>

  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>

</Policy>


А теперь нам нужно разрешить гостевую печать на каждом из наших локальных принтеров. Предположим, что у вас установлен принтер Lexmark E232, которому мы при настройке дали имя LX_E232. Принтер подключен через LPT порт. Настройки принтеров хранятся в файле /etc/cups/printers.conf, который в нашем случае примет вид:

# Printer configuration file for CUPS v1.3.9
# Written by cupsd on 2009-01-22 16:44

<Printer LX_E232>
Info Lexmark E230
DeviceURI parallel:/dev/lp0
State Idle
StateTime 1232606546
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>

В большинстве случаев в настройках принтера необходимо установить параметру Shared значение Yes.

Чтобы установить наш принтер на ОС Windows, выбираем «Установка Принтера» в «Панель Управления -> Принтеры и Факсы», затем выбираем «Сетевой принтер или принтер, подключенный к другому компьютеру», далее указываем «Подключиться к принтеру в Интернете….», а в качестве URL пишем:

http://IP-адрес компьютера:631/название_принтера

Предположим, что IP адрес нашего компьютера — 192.168.1.11 тогда в нашем случае это будет выглядеть вот так:

http:// 192.168.1.11:631/LX_E232

Установка нашего принтера в системе Линукс так же проста, разве что слово HTTP придется заменить на IPP

Включим сервис CUPS в автоматическую загрузку при старте системы и запустим:

# chkconfig cups on ; service cups start

При каждом изменении файлов/etc/cups/cups.conf и /etc/cups/printers.conf для принятия этих изменений, сервис CUPS так же необходимо перезапускать:

# service cups restart


Шаг 4 -

Так же как и в операционной системе Windows, в Linux тоже можно организовать подключение сетевых папок, при входе пользователя в систему. Я знаю как минимум два таких способа. Первый, достаточно простой — это использование файла /etc/fstab совместно со скриптом, который будет непосредственно монтировать сетевую папку, а второй — это использование пакета pam_mount. Второй способ не очень то целесообразно использовать в рабочей группе и поэтому я осветил его ниже, в подстатье «Работа в составе домена». А вот первый я рассмотрю сейчас. Открываем для редактирования файл /etc/fstab (требует права root-а) и дописываем ему в конец вот такую строчку:

//IP_адрес_сервера/желаемая_папка /куда_ее/будем_монтировать cifs   user=имя_пользователя,password=пароль,codepage=cp866,iocharset=utf8,noauto,user 0 0

Я думаю что ее описание говорить само за себя. Меняем в ней IP_адрес сервера и другие параметры, описанные русским языком, затем переводим курсор в конец строки и нажмите на клавишу «Enter» и сохраните файл. Мы специально нажали «Enter», так как для корректной работы системы в файле всегда должна оставаться последняя — пустая! строчка.

Затем мы напишем скрипт, который будет монтировать требуемый сетевой ресурс — при входе пользователя в систему и обеспечим его автозапуск. Предположим что имя нашего обычного пользователя, под которым мы в основном работает — user. Создадим новый файл под названием /home/user/60-netshares, выставим ему права доступа на чтение, запись и запуск для всех, и создадим не него символическую ссылку в каталог автозапуска пользователя user:

# echo > /home/user/60-netshares ; chmod –f  0777 /home/user/60-netshares
# ln –s /home/user/60-netshares /home/user/.xsession.d/60-netshares

Затем мы приведем содержание файла /home/user/60-netshares вот к такому виду:

#!/bin/sh
sleep 5s
mkdir -p /куда_ее/будем_монтировать
if ls -d ~/Desktop/”Сетевая Папка” >/dev/null 2>&1 ;
then echo >/dev/null ;
else ln –s /куда_ее/будем_монтировать ~/Desktop/”Сетевая Папка” ;
fi
mount /куда_ее/будем_монтировать

Здесь папка /куда_ее/будем_монтировать та же, что мы указали в файле /etc/fstab. В случае ее отсутствия она будет создаваться скриптом, затем на рабочем столе в случае отсутствия будет появляться не нее ярлык, ну и к этой папке будет монтироваться сетевой ресурс, сопоставленный с ней в файле /etc/fstab.

Теперь необходимо только выйти из учетной записи root и войти под своей. Если вы использовали свою обычную учетную запись user (не забудьте изменить на свою), тогда просто выйдете из нее и снова зайдите — либо просто запустите скрипт /home/user/60-netshares, открыв терминал от имени пользователя user просто наберите

/home/user/60-netshares

и нажмите на клавишу «Enter»


Шаг 5 -

Теперь, когда мы настроили доступ к нашему компьютеру из локальной сети, пришло время позаботиться об инструментах, которые позволят нам самим просматривать и получать доступ к локальной сети. Если вы используете графические оболочку KDE или Gnome, то все необходимое в них уже присутствует. Поэтому я не буду брать их на рассмотрение. А вот если у нас установлено что по проще, например XFCE, то тут стоит подумать. Как вариант можно использовать программу pyNeighborhood, которая идет в комплекте с дистрибутивом Alt Linux Lite, но ее я тоже рассматривать не буду, так как она имеет графический интерфейс и разобраться с ней труда не составит. Я остановлю свой выбор на пакете fuse-smb, который мы установили еще в самом начале. Для начала мы обеспечим запуск необходимого модуля при загрузке системы и собственно загрузим сам модуль, чтобы сразу посмотреть как он работает:

# echo “fuse” >> /etc/modules ; modprobe fuse

Затем мы обеспечим запуск самой программы во время входа пользователя. Предположим что имя нашего обычного пользователя, под которым мы в основном работает — user. Так-же предположим, что мы будем использовать для нужд сетевого окружения, папку ~/network, ярлык на рабочем столе, по которому мы будем переходить в наше сетевое окружение назовем ”Сетевое Окружение”. Создадим новый файл под названием /home/user/50-fuselogin, выставим ему права доступа на чтение, запись и запуск для всех, и создадим не него символическую ссылку в каталог автозапуска пользователя user:

# echo > /home/user/50-fuselogin ; chmod –f  0777 /home/user/50-fuselogin 
# ln –s /home/user/50-fuselogin /home/user/.xsession.d/50-fuselogin

Затем мы приведем содержание файла /home/user/50-fuselogin вот к такому виду:

#!/bin/sh
sleep 13s
mkdir -p ~/network
if ls -d ~/Desktop/”Сетевое Окружение” >/dev/null 2>&1 ;
then echo > /dev/null ;
else ln –s ~/network ~/Desktop/”Сетевое Окружение” ;
fi
/usr/bin/fusesmb.cache
/usr/bin/fusesmb ~/network

Теперь создадим каталог .smb в домашней папке пользователя user и в этом каталоге создадим файл fusesmb.conf

# mkdir /home/user/.smb ; echo > /home/user/.smb/fusesmb.conf

Установим разрешения на чтение, запись, исполнение на созданную папку вместе с подпапками и уберем разрешение на исполнение у файла fusesmb.conf:

# chmod –fR 0777 /home/user/.smb ; chmod –x /home/user/.smb/fusesmb.conf

Теперь приводим файл fusesmb.conf к вот такому содержанию:

[global]

# если у нас есть учетная запись, которой вы исследуем локальную сеть, то указываем ее вместе с паролем
# если нету, то пишем любое имя и пароль

username=имя_пользователя
password=пароль

showhiddenshares=true
timeout = 10
interval = 5

Вот и все, осталось только выйти из учетной записи root и войти под своей. Если вы использовали свою обычную учетную запись user (не забудьте изменить на свою), тогда просто выйдете из нее и снова зайдите — либо просто запустите скрипт /home/user/50-fuselogin

2. Работа в составе домена.

Для ввода рабочей станции в домен нам необходимо наличие в системе следующих пакетов: — krb5-kinit, libkrb5, samba-client-3.x, samba-common-3.x, samba-3.x, openntpd pam_mount. Если чего-то не хватает, то нам нужно будет их скачать и установить. Ниже я привожу список символических параметров настройки, которые нужно будет изменить на свои, согласно вашей конфигурации сети:

имя_контроллера_домена — netbios имя контроллера домена. Например: control

полное_имя_домена — имя домена включая суфикс. Например: mydomain.local

короткое_имя_домена — просто имя домена. Например:  mydomain

имя_рабочей_станции — netbios имя нашей рабочей станции. Например:  computer1

имя_администратора_домена — говорит само за себя.

пароль_администратора_домена — говорит само за себя.

Примечание: Если в примере что-либо написано с большой буквы (или букв), то именно так нужно писать и нам.


Шаг 1 -

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

# apt-get install  krb5-kinit pam_mount

После установки необходимых пакетов, нам нужно включить в автозапуск необходимые службы. Выполним следующие команды:

# chkconfig smb on ; chkconfig winbind on ; chkconfig ntpd on


Шаг 2 -

Этим шагом мы проверим, разрешается ли наш контроллер домена через свое доменное имя, а так-же настроим нашу рабочую станцию на разрешение собственного доменного имени. Выполняем команду:

ping  имя_контроллера_домена.полное_имя_домена

и смотрим на результат. Если приходит эхо ответ, значит все в порядке. Теперь мы настроим нашу рабочую станцию:

# echo “127.0.0.1  имя_рабочей_станции.полное_имя_домена localhost имя_рабочей_станции” > /etc/hosts

и тоже проверим результат наших трудов:

# ping  имя_рабочей_станции.полное_имя_домена


Шаг 3 -

Следующим шагом будет настройка синхронизации времени с нашим контроллером домена. Синхронное время — это очень важный момент для доменной рабочей станции и не стоит им пренебрегать. Сперва мы пропишем в файл конфигурации сервиса синхронизации времени, наш контроллер домена:

# echo “servers имя_контроллера_домена.полное_имя_домена” > /etc/ntpd.conf

Затем мы перезапустим сервис синхронизации времени:

# service ntpd restart


Шаг 4 -

Пришло время настроить получение билетов авторизации по протоколу Kerberos. Все что нам нужно, так это иметь файл /etc/krb5.conf такого вот вида:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
ticket_lifetime = 24000
default_realm = ПОЛНОЕ_ИМЯ_ДОМЕНА_например_MYDOMAIN.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true

[realms]
ПОЛНОЕ_ИМЯ_ДОМЕНА = {
  kdc = имя_контроллера_домена.полное_имя_домена:88
  admin_server = имя_контроллера_домена.полное_имя_домена:749
  default_domain = полное_имя_домена
}

[domain_realm]
.полное_имя_домена = ПОЛНОЕ_ИМЯ_ДОМЕНА
полное_имя_домена = ПОЛНОЕ_ИМЯ_ДОМЕНА

[kdc]
profile = /var/lib/kerberos/krb5kdc/kdc.conf

[pam]
debug = false
ticket_lifetime = 24000
renew_lifetime = 24000
forwardable = true
krb4_convert = false

Сейчас и впредь, мы будем выставлять необходимые права на те файлы, которые создаем. Из-за неправильно выставленных разрешений будут появляться ошибки, а проверять все созданные файлы мы не будем, так как это отнимает время. Поэтому после создания файла мы будем выполнять всего одну команду, которая установит интересующие нас правила. Быстро и наверняка

Нас интересует схема «Запись и чтение для хозяина, чтение для группы, чтение для всех остальных»:
# chmod –f 0644 /etc/krb5.conf

Посмотрим, сможем ли мы получить билет авторизации:

# kinit  имя_администратора_домена@ПОЛНОЕ_ИМЯ_ДОМЕНА

На запрос о пароле, вводим пароль_администратора_домена. Если результат будет положительным — мы не получим никаких лишних сообщений на экране. Проверяем наличие билета командой klist. Вывод ее должен быть примерно такой:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: имя_администратора_домена@ПОЛНОЕ_ИМЯ_ДОМЕНА

Valid starting     Expires            Service principal
03/25/08 17:49:35  03/26/08 00:29:35  krbtgt/ПОЛНОЕ_ИМЯ_ДОМЕНА@ПОЛНОЕ_ИМЯ_ДОМЕНА

а затем удалим билетик командой kdestroy.


Шаг 5 -

Настраиваем сервер SAMBA. Заменяем содержимое /etc/samba/smb.conf приведенным ниже текстом:

# Samba config file created by Alexandr
# Date: 2009/09/02

[global]
        dos charset = CP866
        unix charset = UTF8
        display charset = LOCALE
        workgroup = КОРОТКОЕ_ИМЯ_ДОМЕНА_например_MYDOMAIN
        netbios name = желаемое_имя_рабочей_станции_например_computer1
        security = ads
        password server = имя_контроллера_домена.полное_имя_домена_например_controller.mydomain.local
        realm = ПОЛНОЕ_ИМЯ_ДОМЕНА
        encrypt passwords = yes
        winbind refresh tickets = True
        winbind offline logon = True
        idmap backend = rid
        winbind uid = 1000-10000
        winbind gid = 1000-10000
        winbind use default domain = True
        template homedir = /home/%D/%U
        template shell = /bin/bash
        server string =
        printcap name = cups
        load printers = yes
        printing = cups
        log file = /var/log/samba/log.%m
        max log size = 50
        dns proxy = no
        ldap ssl = no
        domain master = no
        local master = no
        preferred master = no
        os level = 0
        use sendfile = yes
        map to guest = Bad User
        public = yes
        browseable = yes

Затем:

# chmod –f 0644 /etc/samba/smb.conf

Настроить доступ к нашим сетевым папкам и принтерам мы всегда сможем позже, а сейчас главное — это как можно глаже ввести рабочую станцию в домен.


Шаг 6 -

Я представляю себе, образно…, что это за файл, но вот сформулировать это на бумаге не могу. Просто наполняем файл /etc/nsswitch.conf таким вот содержимым:

passwd:     files winbind nisplus nis
shadow:     tcb files winbind nisplus nis
group:      files winbind nisplus nis

hosts:      files nisplus nis dns

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

bootparams: nisplus [NOTFOUND=return] files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus
# chmod –f 0644 /etc/nsswitch.conf


Шаг 7 -

Если нам необходимо настроить автоматическое монтирование сетевых пользовательских папок при входе доменного пользователя в систему, настроим эту функция с помощью пакета pam_mount. Вот пример необходимого нам файла :

debug 1
mkmountpoint 0
options_allow	nosuid,nodev,loop,encryption,noexec
options_require	nosuid,nodev
cifsmount /bin/mount -t cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o "username=%(USER)%(before=\",\" OPTIONS)"
umount   /bin/umount %(MNTPT)

volume * cifs имя_сервера.полное_имя_домена путь_к_сетевой_папке путь_к_точке_монтирования опции - -

Здесь:

volume - ключевое слово.
* – символ подразумевает любого пользователя, который входит в систему.
cifs – тип файловой системы, в нашем случае это сетевая файловая система.
server – имя или IP адрес сервера. Например: 192.168.1.1 
share – имя требуемого сетевого ресурса. Например: share/work/ivan 
/mount/path – путь, куда стоит монтировать сетевую папку.
опции – дополнительные параметры, которые мы обычно прописываем при монтировании. Эти параметры не должны конфликтовать с директивами options_allow и options_require
& – этот символ будет автоматически заменяться на имя пользователя.
Запись  - -  в конце, обязательна.

А вот и пример, предположим что у нас на сервере в общей папке есть папки пользователей с их именами, такими как они вводят при входе в систему. Мы хотим, чтобы при входе любого пользователя, монтировалась папка с его именем к папке ~/Documents:

volume * cifs server.mydomain.local Documents/& ~/Documents nosuid,noexec - -
# chmod –f 0644 /etc/security/pam_mount.conf


Шаг 8 -

А еще мы можем добавлять доменных пользователей, а точнее доменные группы — в локальные. Это достаточно полезно, так как по умолчанию доменный пользователь может только перемещаться в своем каталоге, да читать файлы которые разрешены на чтение для «всех остальных». Делается это с помощью pam_group. Он обычно всегда установлен в системе. Вот пример файла конфигурации /etc/security/group.conf

*;*;*;Al0000-2400;wheel,cdrom,floppy,cdwriter,audio,radio,camera,xgrp,scanner

где:

первый параметр — имя сервиса, на который распространяется данное правило. В примере это любой сервис.
второй параметр — номер консоли с которой осуществляется вход. В примере это 7-я консоль.
третий параметр — имя пользователя. В примере это любой пользователь.
четвертый параметр — время, на которое распространяется правило. У нас — любое время.
пятый параметр — группы, в которые входят наши пользователи. Названия говорят сами за себя.

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

wheel,cdrom,floppy,cdwriter,audio,radio,camera,xgrp,scanner
# chmod –f 0644 /etc/security/group.conf


Шаг 9 -

Последние штрихи. Нам осталось настроить способ авторизации пользователей на нашей бушующей доменной рабочей станции. Для начала настроим логон менеджер, через который пользователь в систему то и попадает. Если мы используем K Desktop Manager, который обычно стоит вместе с оболочкой KDE, переписываем содержимое его конфига /etc/pam.d/kde вот этим:

#%PAM-1.0
auth                           required       pam_securetty.so
auth                           required       pam_nologin.so
auth                           required       pam_group.so
auth                           optional       pam_mount.so
auth                           sufficient     pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login use_first_pass
auth                           required       pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
account                        sufficient     pam_winbind.so
account                        required       pam_tcb.so shadow fork
password                       sufficient     pam_winbind.so 
password                       required       pam_tcb.so use_authtok shadow fork prefix=$2a$ count=8 nullok write_to=tcb
session                        required       pam_mkhomedir.so skel=/etc/skel/ umask=0077
session                        optional       pam_mount.so
session                        required       pam_tcb.so
session                        required       pam_limits.so
session                        optional       pam_console.so
# chmod –f 0644 /etc/pam.d/kde

Если мы не планируем пользовать функциями pam_group, тогда просто комментируем строчку с его описанием, ну или просто ее удаляем. А если нам не интересен функционал pam_mount, тогда его комментируем тоже, и в первой строчке, в которой встречается параметр use_first_pass, его оттуда убираем.

Если у нас используется логон менеджер Gnome, тогда мы переписываем файл /etc/pam.d/gdm так же, как и файл /etc/pam.d/kde

Мы заменим содержимое файла /etc/pam.d/kscreensaver — для KDE или /etc/pam.d/gnome-screensaver, чтобы пользователь смог, после блокировки сеанса, спокойно авторизоваться своей доменной учетной записью:

#%PAM-1.0
auth     required	pam_securetty.so
auth     required	pam_nologin.so
auth     sufficient     pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth     sufficient     pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
password required       pam_deny.so
# chmod –f 0644 /etc/pam.d/kscreensaver

Все настройки сделаны, нам осталось лишь ввести компьютер в домен. Выполним команды:

# service smb restart ; service winbind restart ; net ads join -U имя_администратора_домена

Результатом правильного выполнения команды будет вывод:

Using short domain name – КОРОТКОЕ_ИМЯ_ДОМЕНА
Joined 'имя_рабочей_станции' to realm 'ПОЛНОЕ_ИМЯ_ДОМЕНА'

Сделаем еще одну проверку, выполним команду:

$ wbinfo -t

вывод должен быть примерно такой:

checking the trust secret via RPC calls succeeded

Перезагрузим рабочую станцию и можем пользоваться.


Шаг 10 -

Вот собственно и все, ну или почти все, однако, наша радость была бы не полной, не имей бы мы адекватного и удобного сетевого окружения. В случае с KDE или Gnome, это еще дело поправимое. Однако только ради сетевого окружения, в ущерб ресурсам системы — которых, кстати, на старых офисных машинах и так впритык. Но выход есть и называется он Fuse-SMB. При условии, что репозитории у нас все еще подключены, устанавливаем недостающий пакет:

# apt-get install  fuse-smb

Затем открываем консоль и вводим команду fusesmb без параметров. После этого мы редактируем файл ~/.smb/fusesmb.conf приводя его к вот к такому состоянию:

[global]

# если бы мы не использовали kerberos авторизацию,
# мы бы могли явно указать свой логин и пароль,
# под которым бы смогли гулять по локальной сети

# username=имя_пользователя
# password=пароль

; List hidden shares
showhiddenshares=false

; Connection timeout in seconds
timeout = 10

;Interval for updating new shares in minutes
interval = 5

Теперь мы создадим в своей папке папку ~/network, а затем:

# echo “fuse” >> /etc/modules ; modprobe fuse ; fusesmb ~/network

И вот, у нас в папке ~/network будет жить локальная сеть. Проверим, что она работает и дружно про нее забудем, так как под root-ом она нам не нужна!!! Чтобы настройки fusesmb были у всех новых пользователей, скопируем папку ~/.smb в шаблон профиля для новых пользователей:

# cp –fR ~/.smb /etc/skel ; rm –f /etc/skel/.smb/fusesmb.cache

Осталось только написать скрипт, который при входе пользователя будет запускать fusesmb и создавать нужные ярлыки. Назовем его 60-login:

#!/bin/sh
sleep 13s
mkdir -p ~/network
if ls -d ~/Desktop/”Сетевое Окружение” >/dev/null 2>&1 ;
then echo > /dev/null ;
else ln –s ~/network ~/Desktop/”Сетевое Окружение” ;
fi
/usr/bin/fusesmb.cache
/usr/bin/fusesmb ~/network

# мы так же можем и впишем в скрипт, создание ссылки на нашу сетевую папку

if ls -d ~/Desktop/”Мои Документы” >/dev/null 2>&1 ;
then echo > /dev/null ;
else ln –s ~/Documents ~/Desktop/”Мои Документы” ;
fi

Сохраняем скрипт в папке /etc/60-login . Теперь осталось установить на него правильные разрешения и создать ярлык в папку автозапуска.

# chmod -f 0755 /etc/60-login ; ln –s /etc/60-login /etc/skel/.xsession.d/60-login


Как и обещал, выкладываю скрипт, который автоматизирует описанные здесь процессы:

Скрипт для настройки рабочей станции на работу в домене или в рабочей группе

Если Вы все же дочитали это руководство до конца и нашли в нем ошибки и недочеты — смело можете их исправить, при условии что Вы осознаете что Вы пишите. Если вам кажеться, но вы не совсем уверенны в том, как можно правильно что то исправить или дополнить — Вы можете написать об этом по адресу alexandr@vladot.ru и я с радостью рассмотрю ваше предложение.