пятница, 7 мая 2021 г.

Сброс пароля root

1. В момент старта ОС и появления пунктов выбора загрузки grub нажимаю "е".
2. После появления правил загрузки ищу строку начинающуюуся со слова "linux ..." в строке меняю "ro quiet" на "rw quiet" и после добавляю "init=/bin/bash", т.е. в конце строки получаю "rw quiet init=/bin/bash". Жму "ctrl" + "x".
3. Если диск был шифрован, как у меня, ввожу пароль его расшифровки. В противном случаю сразу попдаю в cli с приветственной строкой bash - "root@(none):/#".
4. Делаю ремоунт корневой системы - "mount -n -o remount,rw /".
5. Даю команду - "passwd" и задаю новый root пароль.
6. Анмаунчу корень - "umount /".
7. Перегружаюсь в ОС - "reboot -f" с новым паролем root'а.

вторник, 11 февраля 2020 г.

Подключение общих ресурсов Windows к Linux

Все команды выполнялись от прав пользователя root

1. Устанавливаю необходимые пакеты:
apt-get install -y smbclient cifs-utils

2. Подключаю сетевой ресурс:
mount.cifs //winserver/shara /mnt -o user=username,domain=DOMAINNAME

3. Запрашивается пароль к доменной учетной записи username, после ввода которого, ресурс маунтится в /mnt.

среда, 5 апреля 2017 г.

Установка Asterisk с FreePBX


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



1. Устанавливаю необходимые пакеты:
apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libiksemel-dev libiksemel-utils libiksemel3 libmyodbc sudo

2. Скачиваю необходимые сырцы для установки Asterisk:
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-14-current.tar.gz

3. Распаковываю скачанное:
tar -zxvf libpri-current.tar.gz
tar -zxvf dahdi-linux-complete-current.tar.gz
tar -zxvf asterisk-14-current.tar.gz

4. Начинаю сборку и установку сырцов (собственно все как в инструкции самого Asteriska):
cd dahdi-linux-complete-2.11.1+2.11.1
make
make install
make config

cd ..
cd libpri-1.6.0
make
make install

5. До устанавливаю более новый протокол (по инструкции), наверно его можно не устанавливать, но вдруг захочется каких нибудь дополнительных настроек:
 cd ..
wget http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2
tar -xjvf pjproject-2.4.5.tar.bz2
cd pjproject-2.4.5

5.1. Правлю готовый конфиг для его сборки:
nano pjlib/include/pj/config_site.h

Вставляю "простыню"
/*
 * Asterisk config_site.h
 */
#include


/*
 * Defining PJMEDIA_HAS_SRTP to 0 does NOT disable Asterisk's ability to use srtp.
 * It only disables the pjmedia srtp transport which Asterisk doesn't use.
 * The reason for the disable is that while Asterisk works fine with older libsrtp
 * versions, newer versions of pjproject won't compile with them.
 */
#define PJMEDIA_HAS_SRTP 0
#define PJ_HAS_IPV6 1
#define NDEBUG 1
#define PJ_MAX_HOSTNAME (256)
#define PJSIP_MAX_URL_SIZE (512)
#ifdef PJ_HAS_LINUX_EPOLL
#define PJ_IOQUEUE_MAX_HANDLES  (5000)
#else
#define PJ_IOQUEUE_MAX_HANDLES  (FD_SETSIZE)
#endif
#define PJ_IOQUEUE_HAS_SAFE_UNREG 1
#define PJ_IOQUEUE_MAX_EVENTS_IN_SINGLE_POLL (16)
#define PJ_SCANNER_USE_BITWISE  0
#define PJ_OS_HAS_CHECK_STACK   0
#define PJ_LOG_MAX_LEVEL        6
#define PJ_ENABLE_EXTRA_CHECK   1
#define PJSIP_MAX_TSX_COUNT     ((64*1024)-1)
#define PJSIP_MAX_DIALOG_COUNT  ((64*1024)-1)
#define PJSIP_UDP_SO_SNDBUF_SIZE    (512*1024)
#define PJSIP_UDP_SO_RCVBUF_SIZE    (512*1024)
#define PJ_DEBUG            0
#define PJSIP_SAFE_MODULE       0
#define PJ_HAS_STRICMP_ALNUM        0

/*
 * Do not ever enable PJ_HASH_USE_OWN_TOLOWER because the algorithm is
 * inconsistently used when calculating the hash value and doesn't
 * convert the same characters as pj_tolower()/tolower().  Thus you
 * can get different hash values if the string hashed has certain
 * characters in it.  (ASCII '@', '[', '\\', ']', '^', and '_')
 */
#undef PJ_HASH_USE_OWN_TOLOWER

/*
  It is imperative that PJSIP_UNESCAPE_IN_PLACE remain 0 or undefined.
  Enabling it will result in SEGFAULTS when URIs containing escape sequences are encountered.
*/
#undef PJSIP_UNESCAPE_IN_PLACE
#define PJSIP_MAX_PKT_LEN           6000
#undef PJ_TODO
#define PJ_TODO(x)
/* Defaults too low for WebRTC */
#define PJ_ICE_MAX_CAND 32
#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * PJ_ICE_MAX_CAND)
/* Increase limits to allow more formats */
#define PJMEDIA_MAX_SDP_FMT   64
#define PJMEDIA_MAX_SDP_BANDW   4
#define PJMEDIA_MAX_SDP_ATTR   (PJMEDIA_MAX_SDP_FMT*2 + 4)
#define PJMEDIA_MAX_SDP_MEDIA   16


5.2. Начинаю сборку:
./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
make dep
make
make install
ldconfig

5.3. Проверяю:
ldconfig -p | grep pj

Должно получиться что-то типа:
        libpjsua2.so.2 (libc6,x86-64) => /usr/lib/libpjsua2.so.2
        libpjsua2.so (libc6,x86-64) => /usr/lib/libpjsua2.so
        libpjsua.so.2 (libc6,x86-64) => /usr/lib/libpjsua.so.2
        libpjsua.so (libc6,x86-64) => /usr/lib/libpjsua.so
        libpjsip.so.2 (libc6,x86-64) => /usr/lib/libpjsip.so.2
        libpjsip.so (libc6,x86-64) => /usr/lib/libpjsip.so
        libpjsip-ua.so.2 (libc6,x86-64) => /usr/lib/libpjsip-ua.so.2
        libpjsip-ua.so (libc6,x86-64) => /usr/lib/libpjsip-ua.so
        libpjsip-simple.so.2 (libc6,x86-64) => /usr/lib/libpjsip-simple.so.2
        libpjsip-simple.so (libc6,x86-64) => /usr/lib/libpjsip-simple.so

6. Устанавливаю:
cd ..
git clone https://github.com/akheron/jansson.git
cd /usr/src/jansson
autoreconf -i
./configure
make
make install

cd ..
cd asterisk-14.3.0
./configure
contrib/scripts/get_mp3_source.sh

6.1. Вызываю конфигуратор:
make menuselect

И выбираю следующее:
    Add-ons: format_mp3, res_config_mysql, app_mysql и cdr_mysql.
    Core Sound Packages: русские звуки RU-WAV.
    Music On Hold File Packages: звук WAV.
    Extras Sound Packages:  английский EN-WAV, русского нет.

6.2. Собираю с учетом выбранного:
make
make install
make config

7. Скачиваю и распаковываю FreePBX:
cd..
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
tar xvfz freepbx-13.0-latest.tgz
cd freepbx

pear install Console_Getopt

7.1. Создаю управляющего пользователя и задаю права:
useradd -m asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk

7.2. Убираю лишнее и немного конфигурирую Apache:
rm -rf /var/www/html
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
service apache2 restart

7.3. Настраиваю ODBC:
cat >> /etc/odbcinst.ini << EOF
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1

EOF

cat >> /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3

EOF

7.4. Устанавливаю FreePBX (остановив предварительно Asterisk):
cd freepbx
/etc/init.d/asterisk stop

./start_asterisk start
   STARTING ASTERISK
   Asterisk Started

./install -n --dbpass passMySQL




7.5. Толком не разобрался, но какой-то косяк по-умолчанию, пришлось пожертвовать безопасностью, иначе попасть в веб-интерфейс не получалось:
rm -rf /var/www/html/.htaccessy
/etc/init.d/apache2 restart

8. Вводим в браузере IP сервера Asterisk и попадаем на FreePBX.

пятница, 30 декабря 2016 г.

Установка Roundcube.

Почтовый сервер на базе Dovecot+Postfix+DKIM+MySQL+Postgrey устанавливал по инструкции с сайта. Автор разрешил опубликовать материал у себя (оформлю для публикации, как будет время), чтобы материал дублировался в моих записях на всякий случай.

В конфигах которые настраивал пришлось заменить localhost на 127.0.0.1 иначе кидало ошибку в syslog (увы не помню какую именно).


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

1. В моем репозитории почему-то его не оказалось, потому скачиваю сырцы во временную папку:
cd /tmp/
wget https://sourceforge.net/projects/roundcubemail/files/roundcubemail/1.1.4/roundcubemail-1.1.4-complete.tar.gz

2. Распаковываю архив:
tar xfvz roundcubemail-1.1.4-complete.tar.gz

3. Удаляю архив и перемещаю распакованные данные:
rm roundcubemail-1.1.4-complete.tar.gz
mv roundcubemail-1.1.4-complete /var/www/roundcube

4. Перехожу в папку и задаю права на папки temp logs:
cd /var/www/roundcube
chmod 777 temp logs

5. Вхожу и создаю БД для Roundcube:
mysql -u root -p
CREATE DATABASE IF NOT EXISTS `roundcube`;
GRANT ALL PRIVILEGES ON `roundcube` . * TO 'root'@'localhost' IDENTIFIED BY 'mySecretPassword';
FLUSH PRIVILEGES;
quit

6. Наполняю созданную БД:
mysql -u root -p"mySecretPassword" roundcube < SQL/mysql.initial.sql

7. Настраиваю apache:
nano /etc/apache2/sites-enabled/mail.conf

Alias /mail /var/www/roundcube/

   RemoveHandler .php  .php3 .php4 .phtml
   AddType application/x-httpd-php .php  .php3 .php4 .phtml
   php_admin_value open_basedir /
   AddType text/x-component .htc
   
      php_flag display_errors Off
      php_flag log_errors On
      php_value error_log logs/errors
      php_value upload_max_filesize 5M
      php_value post_max_size 6M
      php_value memory_limit 64M
   

   
      php_flag display_errors Off
      php_flag log_errors On
      php_value error_log logs/errors
      php_value upload_max_filesize 5M
      php_value post_max_size 6M
      php_value memory_limit 64M
   

   
      Order allow,deny
      Deny from all
   

   Order deny,allow
   Allow from all

8. Перезапускаю apache:
/etc/init.d/apache2 restart

9. Создаю вручную конфиг roundcube:
nano /var/www/roundcube/config/config.inc.php


/* Local configuration for Roundcube Webmail */

// ----------------------------------
// SQL DATABASE
// ----------------------------------
$config['db_dsnw'] = 'mysql://root:mySecretPassword@localhost/roundcube';

// ----------------------------------
// IMAP
// ----------------------------------
$config['default_host'] = 'localhost';

// provide an URL where a user can get support for this Roundcube installation
// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
$config['support_url'] = '';

// this key is used to encrypt the users imap password which is stored
// in the session record (and the client cookie if remember password is enabled).
// please provide a string of exactly 24 chars.
$config['des_key'] = '2dcd0f65ff91d3b2bcabcdc5';

// ----------------------------------
// PLUGINS
// ----------------------------------
// List of active plugins (in plugins/ directory)
$config['plugins'] = array();

// the default locale setting (leave empty for auto-detection)
// RFC1766 formatted language name like en_US, de_DE, de_CH, fr_FR, pt_BR
$config['language'] = 'ru_RU';

$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';
$rcmail_config['quota_zero_as_unlimited'] = true;
$rcmail_config['preview_pane'] = true;
$rcmail_config['read_when_deleted'] = false;
$rcmail_config['check_all_folders'] = true;
$rcmail_config['imap_auth_type'] = 'CRAM-MD5';
$rcmail_config['smtp_auth_type'] = 'CRAM-MD5';

10. Удаляю установщик коонфигурации (собственно п. Можно делать через него):
rm -rf /var/www/roundcube/installer/

11. Включаю автоматическое создание стандартных папок, типа корзина-спам и т.д. Для это в конфиге nano /var/www/roundcube/config/defaults.inc.php меняю значение ключа:
$config['create_default_folders'] = true;

12. Проверяю введя в браузере:

в качестве учетных данных ввожу e-mail и пароль.

четверг, 28 апреля 2016 г.

Настройка NFS-сервера на ZFS с включённой дедубликацией и сжатием



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

1. Ставлю Debian 8.0 Jessie (важно!!! чтобы версия была x64).
2. Устанавливаю ZFS:

wget http://zfsonlinux.org/4D5843EA.asc -O - | apt-key add -
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
dpkg -i zfsonlinux_6_all.deb
apt-get update

apt-get install lsb-release
apt-get install debian-zfs
reboot

3. Создаю пул:

Проверяю что установилось.
dpkg -l | grep zfs
ii  debian-zfs                     7~jessie                    amd64        Nati           ve ZFS filesystem metapackage for Debian.
ii  libzfs2                        0.6.5.6-7                   amd64        Nati           ve ZFS filesystem library for Linux
ii  zfs-dkms                       0.6.5.6-7                   all          Nati           ve ZFS filesystem kernel modules for Linux
ii  zfsonlinux                     6                           all          arch           ive.zfsonlinux.org trust package
ii  zfsutils                       0.6.5.6-7                   amd64        comm           and-line tools to manage ZFS filesystems

Проверяю какие диски есть
ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdc

Проверяю есть ли пул )))
zpool list
no pools available

Создаю RAID-1
zpool create -f pool mirror /dev/sdb /dev/sdc

Проверяю:
zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool  9,94G   187K  9,94G         -     7%     0%  1.00x  ONLINE  -


Проверяю статуса пулов:
zpool status
  pool: pool
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0

errors: No known data errors

Проверяю его наличии в системе
df -hT
Файловая система Тип      Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root        ext4       1,9G         1,3G  424M           76% /
udev             devtmpfs    10M            0   10M            0% /dev
tmpfs            tmpfs      200M         4,6M  196M            3% /run
tmpfs            tmpfs      500M            0  500M            0% /dev/shm
tmpfs            tmpfs      5,0M            0  5,0M            0% /run/lock
tmpfs            tmpfs      500M            0  500M            0% /sys/fs/cgroup
pool             zfs        9,7G         128K  9,7G            1% /pool


4. Тюнингую ZFS:
Включаю сжатие данных
zfs set compression=on pool
zfs get compression pool
NAME  PROPERTY     VALUE     SOURCE
pool  compression  on        local
 

Включаю дедупликацию
zfs set dedup=on pool
zfs get dedup
NAME  PROPERTY  VALUE          SOURCE
pool  dedup     on             local

5. Устанавливаю NFS-сервер:
apt-get install nfs-kernel-server nfs-common

Назначаю права на ZFS-пул
chown nobody:nogroup /pool
chmod 777 /pool

Правлю конфиг сервера (добавив строчку)
nano /etc/exports
/pool   192.168.0.0/24 (rw,async,no_subtree_check)

Перезагружаю NFS-сервер
/etc/init.d/nfs-kernel-server restart

6. Проверка подключения на базе Linux клиента:
Устанавливаю сам клиент
apt-get install nfs-common

Создаю папку куда буду монтировать
mkdir -p /mnt/nfs

Собственно монтирую
mount 192.168.0.10:/pool /mnt/nfs

Проверяю
df -hT
Файловая система     Тип      Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root            ext4       176G         985M  166G            1% /
udev                 devtmpfs    10M            0   10M            0% /dev
tmpfs                tmpfs      200M         4,5M  196M            3% /run
tmpfs                tmpfs      500M            0  500M            0% /dev/shm
tmpfs                tmpfs      5,0M            0  5,0M            0% /run/lock
tmpfs                tmpfs      500M            0  500M            0% /sys/fs/cgroup
192.168.0.10:/pool       nfs4       9,7G         128K  9,7G            1% /mnt/nfs

Размонтирование делается обычно
umount /pool

7. Проверка подключения на базе Windows:
Проверять буду программой NekoDrive.


Таким образом создается диск Е куда все и монтируется. Unicode нужно для корректного отображения кириллицы.

Пример работы сжатия ZFS пула:
Залил на NFS виртуальную машину изначальный размер согласно свойствам Windows - 6,72 ГБ (7 219 906 743 байт).
Проверяю пул (показывает 4,2 Гб)
 df -hT
Файловая система Тип      Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root        ext4       1,9G         1,3G  423M           76% /
udev             devtmpfs    10M            0   10M            0% /dev
tmpfs            tmpfs      200M         4,6M  196M            3% /run
tmpfs            tmpfs      500M            0  500M            0% /dev/shm
tmpfs            tmpfs      5,0M            0  5,0M            0% /run/lock
tmpfs            tmpfs      500M            0  500M            0% /sys/fs/cgroup
pool             zfs             9,7G         4,2G  5,5G           43% /pool


вторник, 25 августа 2015 г.

Samba с авторизацией через Active Directory


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

В статье использованы следующие данные:
имя домена – fmd1.local
первичный контролер домена c DNS (PDC) – srvc.fmd1.local, его IP 197.168.17.50
резервные контролеры домена (BDС) 197.168.18.5, 197.168.17.110
настраиваемый сервер – gateway, его IP 197.168.17.104

1. Проверяю и если нужно обновляю Debian – 'apt-get update' и 'apt-get upgrade'.
2. Проверяю и при необходимости меняю имя сервера – 'nano /etc/hostname'? например у меня:
gateway
3. Проверяю и редактирую 'nano /etc/hosts' чтобы в нем были записи полного и короткого доменного имени, пример:
127.0.0.1         localhost
197.168.17.104          gateway.fmd1.local    gateway
4. Правлю 'nano /etc/resolv.conf' до вида:
domain fmd1.local
search fmd1.local
nameserver 197.168.17.50
5. Устанавливаю демона обновления времени 'apt-get install ntpdate' и настраиваю его 'nano /etc/default/ntpdate' в моем случае:
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org 4.srvc.fmd1.local"
NTPOPTIONS=""
6. Запускаю ручную синхронизацию 'ntpdate -s srvc.fmd1.local' 
7. Устанавливаю необходимые пакеты и библиотеки 'apt-get install krb5-user samba winbind libpam-krb5 libpam-winbind libnss-winbind' 
8. Обнуляю базовый конфиг 'cat /dev/null > /etc/krb5.conf' и пишу свой 'nano /etc/krb5.conf' получилось следующее:
 
[libdefaults]
    default_realm = FMD1.LOCAL # (обязательно большими)
    ticket_lifetime = 24000
    clock_skew = 300
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
    v4_instance_resolve = false
    v4_name_convert = {
    host = {
    rcmd = host
    ftp = ftp
                   }
    plain = {
    something = something-else
                   }
                                  }
    fcc-mit-ticketflags = true
 
[realms]
    FMD1.LOCAL = {
    kdc = 197.168.17.50
    kdc = 197.168.18.5
    kdc = 197.168.17.110
    admin_server = 197.168.17.50
                                  }
 
[domain_realm]
    .fmd1.local = FMD1.LOCAL
    fmd1.local = FMD1.LOCAL
 
[login]
    krb4_convert = true
    krb4_get_tickets = false
 
[logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5dc.log
    admin_server = FILE:/var/log/ksadmind.log
 
Внимание!!! Везде где имя домена прописано заглавными буквами оно должно быть прописано БОЛЬШИМИ буквами, чтобы потом не разбираться, почему не работает.
 
9. Создаю файлы для логов 'touch /var/log/krb5libs.log' 'touch /var/log/krb5dc.log' 'touch /var/log/ksadmind.log' и даю к ним права доступа 'chmod 777 /var/log/krb5libs.log' ' chmod 777 /var/log/krb5dc.log' ' chmod 777 /var/log/ksadmind.log'
10. Проверяю возможность авторизации в AD командой 'kinit username@DOMAIN.COM' Важно имя домена писать ЗАГЛАВНЫМИ буквами!!! Получиться должно как-то так:
 
root@gateway:/# kinit admin@FMD1.LOCAL
Password for admin@FMD1.LOCAL:
 
11. Проверяю получен ли билет от кербероса командой 'klist' должно получиться похожее на следующее:
 
root@gateway:/# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@FMD1.LOCAL
 
Valid starting       Expires              Service principal
19.08.2015 11:09:01  19.08.2015 17:48:57  krbtgt/FMD1.LOCAL@FMD1.LOCAL
 
12. Настраиваю дальше конфиг самбы, предварительно обнулив - 'nano /etc/samba/smb.conf' у меня получился он таким:
 
[global]
    server string = Gateway
    interfaces = eth2
    wins server = 197.168.17.50
    password server = *
    realm = FMD1.LOCAL
    workgroup = FMD1
    security = ads
    encrypt passwords = yes
    admin users=admin
    
    #Разрешить заводить учетки с пустыми паролями
    null passwords = true
    
    log file = /var/log/samba/log.%m
    debug level = 2
    log level = 1
    max log size = 50
    
    dns proxy = no
    socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
    name resolve order = hosts bcast lmhosts
    
    #Не контролировать чувствительность к регистру.
    case sensitive = no
    
    client use spnego = yes
    client ntlmv2 auth = yes
    client signing = yes
    
    #Чтобы самба не пыталась стать главной в группе и домене или даже контролером домена
    local master = no
    domain master = no
    preferred master = no
    os level = 0
    domain logons = no
    
    unix charset = UTF-8
    dos charset = 866
    
    #Включить режим обработки симлинков сервером. Когда клиенты - это компьютеры с windows
    unix extensions = no
    follow symlinks = yes
    
    auth methods = winbind
    idmap config * : range = 10000-40000
    idmap config * : backend = tdb 
#  winbind separator = »
    winbind enum groups = yes
    winbind enum users = yes
    template homedir = /home/%D/%U
    template shell = /bin/bash
    winbind use default domain = yes
    winbind refreshtickets = yes
    
    # Возможность оффлайн-авторизации при недоступности контроллера домена
    winbind offline logon = yes
    winbind cache time = 300
    
    # Отключить поддержку принтеров
    load printers = no
    show add printer wizard = no
    printcap name = /dev/null
    disable spoolss = yes
 
#[printers]
#  comment = All Printers
#  browseable = no
#  path = /var/spool/samba
#  printable = yes
#  guest ok = no
#  read only = yes
#  create mask = 0700
 
#[print$]
#  comment = Printer Drivers
#  path = /var/lib/samba/printers
#  browseable = yes
#  read only = yes
#  guest ok = no
 
[cdrom]
    comment = %h - CD-ROM
    read only = yes
    locking = no
    path = /cdrom
    guest ok = yes 
 
[Upload]
    comment = %h - Upload
    path = /mnt/upload
    browseable = yes
    writeable = yes
    directory mask = 0777
    create mask = 0666
    valid users = @"Domain admins", FMD1\admin
 
13. Проверяю конфиг командой 'testparm' получаю результат проверки:
 
root@gateway:/# testparm
Load smb config files from /etc/samba/smb.conf
WARNING: The "null passwords" option is deprecated
Processing section "[cdrom]"
Processing section "[Upload]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
 
Обращает внимание на параметр null passwords, но собственно он мне-нужен так что не страшно.
14. Рестартую samba и winbind командой '/etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start'
15. Ввожу сервер в домен – 'net ads join -U admin' спросил пароль - набрал. Бывает что не находит домен автоматически, помогает иногда принудительное указание командой 'net ads join -U admin -S srvc.fmd1.local'
16. Перезапускаю winbind для считывания доменных пользователей и групп - '/etc/init.d/winbind force-reload'
17. Проверяю считал ли с AD пользователей и групп:
'wbinfo -t' установил ли доверительные отношения с доменом:
 
root@gateway:/# wbinfo -t
checking the trust secret for domain FMD1 via RPC calls succeeded
 
'wbinfo –u' считал ли пользователей
'wbinfo -g' считал ли группы
Если все настроено нормально winbind покажет пользователей и группы прописанные в AD.
18. Интегрирую winbind в систему для возможности назначения пользователей и групп домена для доступа к файлам правя конфиг – 'nano /etc/nsswitch.conf' до вида:

passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind
gshadow:        files
 
hosts:          files dns mdns4_minimal[NotFoud=return] mdns4
 
networks:       files
 
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
 
netgroup:       nis
 
19. Проверяю на сколько успешно прошла интеграция командами:
'getent passwd' должна вернуть перечень не только локальных но и доменных пользователей
'getent group' должна вернуть перечень не только локальных но и доменных групп
!!! При первоначальной настройке я не установил библиотеки libpam-winbind libnss-winbind в результате чего эти команды возвращали только локальных пользователей и групп. 
20. Для настройки аутентификации и авторизации пользователей AD на сервере модифицирую PAM – 'nano /etc/pam.d/samba' добавив 2 строчки:
для х86 систем:
auth required /lib/security/pam_winbind.so
account required /lib/security/pam_winbind.so
для х64:
auth required /lib/x86_64-linux-gnu/security/pam_winbind.so
account required /lib/x86_64-linux-gnu/security/pam_winbind.so
У меня получился такой конфиг:
 
@include common-auth
@include common-account
@include common-session-noninteractive
 
auth required /lib/x86_64-linux-gnu/security/pam_winbind.so
account required /lib/x86_64-linux-gnu/security/pam_winbind.so
 
21. Перегружаю сервер, ввожу аккаунт и пароль доменного пользователя и попадаю в систему. Все работает.
22. Внимание, если настроен фаервол, то надо разрешить входящие UDP пакеты с 137-го порта. В iptables правило выглядит примерно так:
iptables -A INPUT -i eth2 -p udp --sport 137 -j ACCEPT