Участник:Alexandr/altinlan
Предупреждение
Данная статья содержит кучу действий, нарушающих основные принципы системного администрирования, и частично неверна. Применяйте на свой страх и риск.
2аффтар: такие «исследования» в блоге пишут обычно.
Кхм... это чем-же она нарушает принцыпы системного администрирования? И чем не верна?...
ALT Linux в Домене или Рабочей Группе
В этой статье я постараюсь привести примеры оптимальной, для большинства ситуаций, настройки дистрибутива Альт Линукс на работу в составе рабочей группы и в качестве члена домена. Изначально предполагается, что у вас установлена чистая система и есть доступ в Интернет или к другому репозиторию с необходимыми пакетами.
Я приведу полные примеры конфигурационных файлов, использование которых позволяет сразу же добиться результатов. Настоятельно рекомендую! использовать только их и не пытаться на их примере модифицировать свои, иначе вероятность ошибки, может многократно возрасти. Лучше сразу настроить систему на работу, а потом уже «допиливать» до требуемого состояния, чем пытаться разобраться в возникших проблемах. Данное руководство проверено на Alt Linux 4.1.0 Desktop и Lite, но теоретически должно работать на 4.0
Со временем, я буду обновлять и/или обновлять данное руководство, с одной лишь простой целью — создать из операционной системы Alt Linux удобное и адекватное решение для использования этой операционной системы вместе, с операционными системами Windows в одной локальной сети.
1. Работа в составе Рабочей Группы
Перво-наперво мы включаем, либо перезагружаем компьютер. Затем нам нужно будет установить или доставить необходимые пакеты, а это — samba-client-3.x, samba-common-3.x, samba-3.x, они обязательны. Так же, если у вас графическая оболочка отличная от KDE, для удобной работы с сетью мы установим пакет fusesmb, хотя, даже если у вас KDE, вам может понравиться этот пакет. Монтировать общие сетевые папки при входе пользователя в систему можно через файл /etc/fstab ну или при помощи пакета pam_mount. Если у вас есть принтер и вы хотите раздать его в сеть, то у вас для этого все уже установлено. Открываем консоль — это можно сделать либо сочетанием клавиш «Alt+Ctrl+F1» поискать программы «Консоль» и «Терминал». Затем, нам нужно получить права суперпользователя системы. Если вы открыли консоль вышеприведенным сочетанием клавиш, просто войдите под пользователем 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
Я установил два пакета, которых обычно не хватает. Если у вас не хватает еще каких то пакетов, по просто добавьте их в конец приведено команды. Каждый новый пакет добавляется через пробел.
Теперь у нас есть все необходимое, перейдем непосредственно к настройке. Вот пример файла конфигурации /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 = No os level = 0 use sendfile = yes map to guest = Bad User public = yes browseable = yes # Директива настройки доступа к принтерам. В этом примере ко всем принтерам в системе разрешен общий доступ. [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = yes writable = no printable = yes create mode = 0700 # А здесь мы добавляем общую сетевую папку, которая будет отображаться в сети как «Общая» к ней так же разрешен # общий доступ, на чтение, запись, создание и удаление для всех. # Для кого, чтобы русские папки отображались корректно в сетевом окружении, #необходимо чтобы в конфиге использовалась кодировка UTF8. Либо просто пишите по английски. [share] path = /var/share force user = nobody force create mode = 0666 force directory mode = 0777 browseable = yes read only = no public = yes writable = yes
Затем мы установим правильные права на чтение и запись в нашу папку:
# chmod –f 0777 /var/tmp
Чтобы вы могли заменить содержимое файла /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
Если мы хотим раздавать наши принтеры в сеть, будет не лишним сделать еще несколько вещей. Принтера в локальную сеть можно раздавать еще с помощью протокола 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
Так же как и в операционной системе 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»
Теперь, когда мы настроили доступ к нашему компьютеру из локальной сети, пришло время позаботиться об инструментах, которые позволят нам самим просматривать и получать к локальной сети. Если вы используете графические оболочку 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 имя_администратора_домена — говорит само за себя. пароль_администратора_домена — говорит само за себя.
Примечание: Если в примере что-либо написано с большой буквы (или букв), то именно так нужно писать и нам.
Для начала нам нужно доставить необходимые пакеты, часть пакетов в системе уже установлена. Подключаем репозитории и доставляем отсутствующие следующей командой:
# apt-get install krb5-kinit pam_mount
После установки необходимых пакетов, нам нужно включить в автозапуск необходимые службы. Выполним следующие команды:
# chkconfig smb on ; chkconfig winbind on ; chkconfig ntpd on
Этим шагом мы проверим, разрешается ли наш контроллер домена через свое доменное имя, а так-же настроим нашу рабочую станцию на разрешение собственного доменного имени. Выполняем команду:
ping имя_контроллера_домена.полное_имя_домена
и смотрим на результат. Если приходит эхо ответ, значит все в порядке. Теперь мы настроим нашу рабочую станцию:
# echo “127.0.0.1 имя_рабочей_станции.полное_имя_домена localhost имя_рабочей_станции” > /etc/hosts
и тоже проверим результат наших трудов:
# ping имя_рабочей_станции.полное_имя_домена
Следующим шагом будет настройка синхронизации времени с нашим контроллером домена. Синхронное время — это очень важный момент для доменной рабочей станции и не стоит им пренебрегать. Сперва мы пропишем в файл конфигурации сервиса синхронизации времени, наш контроллер домена:
# echo “servers имя_контроллера_домена.полное_имя_домена” > /etc/ntpd.conf
Затем мы перезапустим сервис синхронизации времени:
# service ntpd restart
Пришло время настроить получение билетов авторизации по протоколу 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.
Настраиваем сервер 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 winbind uid = 10000-20000 winbind gid = 10000-20000 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
Настроить доступ к нашим сетевым папкам и принтерам мы всегда сможем позже, а сейчас главное — это как можно глаже ввести рабочую станцию в домен.
Я представляю себе, образно…, что это за файл, но вот сформулировать это на бумаге не могу. Просто наполняем файл /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
Если нам необходимо настроить автоматическое монтирование сетевых пользовательских папок при входе доменного пользователя в систему, настроим эту функция с помощью пакета 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
А еще мы можем добавлять доменных пользователей, а точнее доменные группы — в локальные. Это достаточно полезно, так как по умолчанию доменный пользователь может только перемещаться в своем каталоге, да читать файлы которые разрешены на чтение для «всех остальных». Делается это с помощью 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
Последние штрихи. Нам осталось настроить способ авторизации пользователей на нашей бушующей доменной рабочей станции. Для начала настроим логон менеджер, через который пользователь в систему то и попадает. Если мы используем 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
Перезагрузим рабочую станцию и можем пользоваться.
Вот собственно и все, ну или почти все, однако, наша радость была бы не полной, не имей бы мы адекватного и удобного сетевого окружения. В случае с 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 и я с радостью рассмотрю ваше предложение.