<![CDATA[Сайт свободных программ]]> ru <![CDATA[Настройка почтового сервера Postfix+Dovecot]]> Установка Postfix и Dovecot

Вся процедура разворачивания и настройки была проверена на Ubuntu Server 9/10 Вначале устанавливаем Postfix и Dovecot

$sudo aptitude install postfix dovecot

Отказываемся от предложенных вариантов настроек. Подразумевается, что все настроим сами без никакого автоматизма со стороны разработчиков.

Постинсталляционный скрипт сообщит, что в таком состоянии постфикс работать не может. А тут мы и не спорим. :)

Создадим недостающий файл конфигурации:

$ sudo touch /etc/postfix/main.cf

На этом установка завершена.

Настройка Postfix

Открываем на редактирование файл /etc/postfix/main.cf и заполним его следующими данными:

smtpd_banner = $myhostname ESMTP (Ubuntu)
#Так наш сервер будет представляться при отправке и получении почты
biff = no
#Отключаем использование comsat
append_dot_mydomain = no
#Запрещаем автоматически дополнять неполное доменное имя в адресе письма
queue_directory = /var/spool/postfix
#Указываем каталог очереди для Postfix
myhostname = test.com
#Указываем имя нашего хоста
alias_maps = hash:/etc/postfix/aliases
mydestination = localhost, test.com
#Указываем, для каких доменов будем принимать почту
mynetworks = 127.0.0.0/8
#Указываем список доверенных подсетей
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#Указываем прослушивание на всех интерфейсах
smtpd_helo_required = yes
#Указываем обязательность использование клиентами команды helo
#Далее идет настройка ограничений для приема почты
smtpd_recipient_restrictions = permit_mynetworks, #Принимаем всю почту от нашей доверенной подсети
check_helo_access hash:/etc/postfix/helo.list, #Проверяем, не представились ли нами самими
check_sender_access hash:/etc/postfix/ext_sender, #Если отправитель письма из внешнего мира представляется, что он из нашего домена - отвергаем письмо
reject_unauth_destination, #Отвергаем письмо, если получатель не входит в нашу зону ответственности
reject_unknown_sender_domain, #Отклоняем письма от неизвестных доменов
reject_unknown_recipient_domain, #Отклоняем письма для неизвестных доменов
reject_non_fqdn_recipient, #Отклоняем письма для пользователей с неполным именем домена
reject_non_fqdn_sender, #Отклоняем письма от отправителей с неполным именем домена
reject_non_fqdn_hostname, #Отвергаем сообщения от любого клиента, не предоставившего полностью определенное доменное имя хоста
reject_invalid_hostname, #Отвергаем сообщение, если в команде helo неправильно сформировано имя домена
reject_unknown_hostname #Отвергаем сообщения, если клиент представился неизвестным именем хоста

Создадим файл /etc/postfix/helo.list
#touch /etc/postfix/helo.list
Откроем его на редактирование и внесем в него строку:
test.com 550 Don't use my hostname
И выполним его хеширование:
#postmap /etc/postfix/helo.list

Создадим файл /etc/postfix/ext_sender
#touch /etc/postfix/ext_sender
Откроем его на редактирование и внесем в него строку:
test.com 450 Do not use my domain in your envelope sender
И выполним его хеширование:
#postmap /etc/postfix/ext_sender

Создадим файл с алиасами на адреса:
#touch /etc/postfix/aliases

Запишем в него:
postmaster root
И прохешируем:

postmap /etc/postfix/aliases
Настройка Dovecot

Открываем на редактирование /etc/dovecot/dovecot.conf и записываем в нем:

protocols = imap imaps
#Описываем поддерживаемые протоколы
disable_plaintext_auth = no
#Разрешаем авторизацию в plaintext
log_path = /var/log/dovecot.err
log_timestamp = "%Y-%m-%d %H:%M:%S "
#Описываем логирование
ssl_disable = yes
#Отключаем SSL
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_greeting = Dovecot ready.
#Строка приветствия при ответе сервера
mail_location = maildir:/var/spool/mail/%d/%n
#Описываем тип и местонахождения почтовых ящиков
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = mail
#Системная группа пользователей для работы с почтой
valid_chroot_dirs = /var/spool/mail/
protocol imap {
#Пути к исполняемым файлам для работы с IMAP
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
}
auth_executable = /usr/lib/dovecot/dovecot-auth #Настраиваем вывод отладочных сообщений
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain login digest-md5 #Типы допустимых вариантов логина
socket listen {
#Настройка авторизации в Postfix
client {
path = /var/spool/postfix/private/auth
mode = 0666
user = postfix
grop = postfix
}
}
passdb passwd-file {
#Путь к файлу с паролями
args = /etc/dovecot/pass
}
}
Создадим место для хранения почты для нашего домена:
#mkdir -p /var/spool/mail/test.com

Создадим группу virtual и пользователя virtual для работы с почтовыми ящиками:
#groupadd -g 5000 virtual
#useradd -g virtual -u 5000 virtual

И укажем владельца и права на доступ к каталогу с почтой:
#chown virtual:virtual /var/spool/mail/test.com
#chmod 770 /var/spool/mail/test.com
Теперь нужно внести изменения в файлы конфигурации Postfix:
Открываем на редактирование /etc/postfix/master.cf и добавляем в него строки:
dovecot unix - n n - - pipe
flags=DRhu user=virtual:virtual argv=/usr/local/libexec/dovecot/deliver -d ${recipient}

Открываем на редактирование /etc/postfix/main.cf и добавляем в него строки:
#Описываем доступ к локальным почтовым ящикам
virtual_mailbox_domains = test.com
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
home_mailbox = Maildir/
#Описываем авторизацию по SMTP для клиентов не из доверенной зоны
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
Добавляем в блок smtpd_recipient_restrictions сразу после permit_mynetworks, строку:
permit_sasl_authenticated,

То есть этот блок будет выглядеть таким образом:
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
check_helo_access hash:/etc/postfix/helo.list,
check_sender_access hash:/etc/postfix/ext_sender,
reject_unauth_destination,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_non_fqdn_hostname,
reject_invalid_hostname,
reject_unknown_hostname

Теперь создадим пользователя и почтовый ящик к нему:
Логин user@test.com
Пароль user
Адрес user@test.com

Создадим необходимые файлы в Postfix:
#touch /etc/postfix/vmailbox
#touch /etc/postfix/virtual

Пропишем в Postfix данные о новом почтовом ящике. Для этого в файл /etc/postfix/vmailbox допишем строку:
user@test.com test.com/user/

Создадим для примера алиас на этот почтовый ящик. Для этого в файл /etc/postfix/virtual допишем строку:
user1@test.com user@test.com

Прохешируем эти два файла:
#postmap /etc/postfix/virtual
#postmap /etc/postfix/vmailbox

Теперь нужно перезапустить Postfix:
#/etc/init.d/postfix restart
Внесем данные о нашем пользователе в Dovecot.
Создадим файл с паролями:
#touch /etc/dovecot/pass

Сгенерируем хеш пароля для нашего пользователя
# dovecotpw -s DIGEST-MD5 -u user@test.com
Введем пароль на его запрос. Полученные данные внесем в файл /etc/dovecot/pass:
user@test.com:{DIGEST-MD5}bc5f0e9cb2049bb07d35bb7ad5b89cf4
Теперь можно подключаться к нашему серверу почтовым клиентом и проверять, как все работает.]]>
Компьютерные советы https://linexp.ru?id=4894 Sat, 14 Jun 2025 11:56:56 GMT
<![CDATA[Перевод веб-интерфейсов для DAV-серверов]]>
Все замечательно работало, если бы не одно но… Самый понятный интерфейс языка — английский.

Мне-то, по большому счету, все равно, но кроме меня им пользуются и другие. И они, как оказалось, английским владеют очень слабо.

По этому интерфейс обеих программ был переведен. В качестве языка перевода традиционно был выбран украинский.



Веб-интерфейс для сервера календарей CalDavZap.



Скачать файл локализации

После скачивания файла нужно им заменить localization.js в корневом каталоге веб-интерфейса.

После этого в файле конфигурации config.js нужно изменить строки:

var globalInterfaceLanguage='uk_UA';

А так же к концу строки сортировки дописать украинский алфавит

var globalSortAlphabet=' 0123456789AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌPQRŔŘSŚŠȘșŞşẞ

TŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽaàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõōpqrŕřsśšßtťuùúûüűůūvwxyýÿzźżž

АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯЬабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';

Работает начиная с версии 0.10.0.1

Как вариант, можно скачать с сайта разработчика новую версию 0.10.0.2, в которую этот перевод уже включен

http://www.inf-it.com/open-source/clients/caldavzap/



Веб-интерфейс для сервера адресных книг CardDavMate



Скачать файл локализации

После скачивания файла нужно им заменить localization.js в корневом каталоге веб-интерфейса.

После этого в файле конфигурации config.js нужно изменить строки:

var globalInterfaceLanguage='uk_UA';

А так же к концу строки сортировки дописать украинский алфавит

var globalSortAlphabet=' 0123456789AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌPQRŔŘSŚŠȘșŞşẞ

TŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽaàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõōpqrŕřsśšßtťuùúûüűůūvwxyýÿzźżž

АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯЬабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';
]]>
Компьютерные советы https://linexp.ru?id=4893 Sat, 14 Jun 2025 11:50:07 GMT
<![CDATA[Logical Volume Manager (LVM)]]>
Так же хотелось бы обратить внимание на один немаловажный момент. При использовании LVM не следует стараться распределить все имеющееся дисковое пространство в логические тома. Следует создать разделы с минимально необходимым размером, а потом, при необходимости нарастить их до требуемого размера из резервного свободного места.


Создание разделов на LVM

Для начала нужно установить поддержку LVM в нашей системе.

# apt-get install lvm2



У нас есть три свободных физических диска — sdb, sdc и sdd. Создадим LVM-раздел на первых двух из них.

Сначала на этих дисках создадим физические тома LVM:

# pvcreate /dev/sdb

# pvcreate /dev/sdc



Теперь создадим группу томов с произвольным названием, например, study:

# vgcreate study /dev/sdb /dev/sdc



В результате мы должны получить вывод:

Volume group "study" successfully created



После этого можно создавать логические тома:

# lvcreate -n lv1 -L 5G study

# lvcreate -n lv2 -L 6G study



Теперь у нас есть блочные устройства /dev/study/lv1 и /dev/study/lv2. С ними можно работать так же, как и с обычными разделами.

# mkfs.ext4 /dev/study/lv1

# mkfs.ext4 /dev/study/lv2



Можем их примонтировать в систему

Для этого создадим в системе точки монтирования:

# mkdir /mnt/lv1

# mkdir /mnt/lv2



И примонтируем разделы

# mount /dev/study/lv1 /mnt/lv1

# mount /dev/study/lv2 /mnt/lv2



Введя команду df -h мы увидим информацию об этих разделах

/dev/mapper/study-lv1 5,0G 138M 4,6G 3% /mnt/lv1

/dev/mapper/study-lv2 6,0G 140M 5,5G 3% /mnt/lv2

То есть их размер 5 и 6 Gb, как мы и указывали при создании.



Добавление физических томов

Если нам потребуется увеличить размер какого-то раздела внутри LVM, то для этого нам понадобится, естественно, свободное место. Добавим в LVM диск sdd.

Создадим на нем физический том:

# pvcreate /dev/sdd



И добавим его в группу томов study:

# vgextend study /dev/sdd



Теперь можно создать ещё один логический диск при помощи lvcreate или увеличить размер существующего с помощью команды lvresize.

Увеличим раздел lv1 до 15 Gb.

# lvresize -L 15 G study/lv1



Далее увеличить размер файловой системы

# resize2fs /dev/study/lv1



Если после этого посмотреть информацию о разделах командой df -h, то мы увидим

/dev/mapper/study-lv1 15G 141M 14G 1% /mnt/lv1



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



Аварийная работа с LVM

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



Замена диска налету.

Предположим, что у нас начались проблемы с диском /dev/sdd. Заменим его на диск /dev/sde без выключения системы.

Для этого создадим физический том на новом диске

# pvcreate /dev/sde



И добавим его в группу томов study:

# vgextend study /dev/sde



Теперь нам нужно переместить информацию с диска sdd на новый sde:

# pvmove /dev/sdd /dev/sde

/dev/sdd: Moved: 0,7%

/dev/sdd: Moved: 30,7%

/dev/sdd: Moved: 63,5%

/dev/sdd: Moved: 97,3%

/dev/sdd: Moved: 100,0%



Перемещение информации займет некоторое время в зависимости от объема диска.

По окончании перемещений удалим сбойный диск из группы томов:

# vgreduce study /dev/sdd

Removed "/dev/sdd" from volume group "study"



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



Создание снапшотов LVM

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

Самая интересная особенность LVM при работе со снимками — это то, что снимок может занимать меньше дискового пространства, чем оригинал. Для этого используется режим Copy-on-Write, при котором реальное использование дискового пространства начинается только при изменении данных на томе-оригинале. То есть при попытке модификации файла на томе-оригинале неизмененный файл сначала сохраняется на томе-снимке, а уж затем модифицируется.



ВНИМАНИЕ! При заполнении тома-снимка до конца, происходит его уничтожение. То есть том продолжает существовать, но ни смонтировать его, ни просмотреть его содержимое (если он был смонтирован до этого) уже не получится. Эту особенность следует обязательно учитывать при задании размера тома-снимка в момент его создания.



Создание снимка производится командой lvcreate:

# lvcreate -s -L 2M -n backup /dev/study/lv2

Rounding up size to full physical extent 4,00 MiB

Logical volume "backup" created

Ключ -s указывает, что создаем мы именно снапшот, -n указывает имя создаваемого тома, а /dev/study/lv2 показывает с какого именно тома мы делаем снимок.



Команда lvscan покажет нам, что мы создали снапшот:

# lvscan

ACTIVE '/dev/study/lv1' [15,00 GiB] inherit

ACTIVE Original '/dev/study/lv2' [6,00 GiB] inherit

ACTIVE Snapshot '/dev/study/backup' [4,00 MiB] inherit

Теперь можете убедиться в том, что изменения, происходящие с оригиналом, никак не повлияют на снапшот.





Информационные утилиты LVM



Получить информацию о группе томов

# vgdisplay



Получить информацию по созданным логическим томам

# lvdisplay



Получить информацию по физическим томам

# pvdisplay]]>
Компьютерные советы https://linexp.ru?id=4892 Sat, 14 Jun 2025 11:47:20 GMT
<![CDATA[Работа с LVM]]>
Так же хотелось бы обратить внимание на один немаловажный момент. При использовании LVM не следует стараться распределить все имеющееся дисковое пространство в логические тома. Следует создать разделы с минимально необходимым размером, а потом, при необходимости нарастить их до требуемого размера из резервного свободного места.



Создание разделов на LVM

Для начала нужно установить поддержку LVM в нашей системе.

# apt-get install lvm2



У нас есть три свободных физических диска — sdb, sdc и sdd. Создадим LVM-раздел на первых двух из них.

Сначала на этих дисках создадим физические тома LVM:

# pvcreate /dev/sdb

# pvcreate /dev/sdc



Теперь создадим группу томов с произвольным названием, например, study:

# vgcreate study /dev/sdb /dev/sdc



В результате мы должны получить вывод

Volume group "study" successfully created



После этого можно создавать логические тома:

# lvcreate -n lv1 -L 5G study

# lvcreate -n lv2 -L 6G study



Теперь у нас есть блочные устройства /dev/study/lv1 и /dev/study/lv2. С ними можно работать так же, как и с обычными разделами.

# mkfs.ext4 /dev/study/lv1

# mkfs.ext4 /dev/study/lv2



И можем их примонтировать в систему

Для этого создадим в системе точки монтирования:

# mkdir /mnt/lv1

# mkdir /mnt/lv2



И примонтируем разделы

# mount /dev/study/lv1 /mnt/lv1

# mount /dev/study/lv2 /mnt/lv2



Введя команду df -h мы увидим информацию об этих разделах

/dev/mapper/study-lv1 5,0G 138M 4,6G 3% /mnt/lv1

/dev/mapper/study-lv2 6,0G 140M 5,5G 3% /mnt/lv2



То есть их размер 5 и 6 Gb, как мы и указывали при создании.





Добавление физических томов

Если нам потребуется увеличить размер какого-то раздела внутри LVM, то для этого нам понадобится, естественно, свободное место. Добавим в LVM диск sdd.

Создадим на нем физический том:

# pvcreate /dev/sdd



И добавим его в группу томов study:

# vgextend study /dev/sdd



Теперь можно создать ещё один логический диск при помощи lvcreate или увеличить размер существующего с помощью команды lvresize.

Увеличим раздел lv1 до 15 Gb.

# lvresize -L 15 G study/lv1



Далее увеличить размер файловой системы

# resize2fs /dev/study/lv1



Если после этого посмотреть информацию о разделах командой df -h, то мы увидим

/dev/mapper/study-lv1 15G 141M 14G 1% /mnt/lv1



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





Аварийная работа с LVM

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

Замена диска налету.

Предположим, что у нас начались проблемы с диском /dev/sdd. Заменим его на диск /dev/sde без выключения системы.

Для этого создадим физический том на новом диске

# pvcreate /dev/sde



И добавим его в группу томов study:

# vgextend study /dev/sde



Теперь нам нужно переместить информацию с диска sdd на новый sde:

# pvmove /dev/sdd /dev/sde

/dev/sdd: Moved: 0,7%

/dev/sdd: Moved: 30,7%

/dev/sdd: Moved: 63,5%

/dev/sdd: Moved: 97,3%

/dev/sdd: Moved: 100,0%



Перемещение информации займет некоторое время в зависимости от объема диска.

По окончании перемещений удалим сбойный диск из группы томов:

# vgreduce study /dev/sdd



Removed "/dev/sdd" from volume group "study"

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



Создание снапшотов LVM

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

Самая интересная особенность LVM при работе со снимками — это то, что снимок может занимать меньше дискового пространства, чем оригинал. Для этого используется режим Copy-on-Write, при котором реальное использование дискового пространства начинается только при изменении данных на томе-оригинале. То есть при попытке модификации файла на томе-оригинале неизмененный файл сначала сохраняется на томе-снимке, а уж затем модифицируется.





ВНИМАНИЕ! При заполнении тома-снимка до конца, происходит его уничтожение. То есть том продолжает существовать, но ни смонтировать его, ни просмотреть его содержимое (если он был смонтирован до этого) уже не получится. Эту особенность следует обязательно учитывать при задании размера тома-снимка в момент его создания.





Создание снимка производится командой lvcreate:

# lvcreate -s -L 2M -n backup /dev/study/lv2

Rounding up size to full physical extent 4,00 MiB

Logical volume "backup" created



Ключ -s указывает, что создаем мы именно снапшот, -n указывает имя создаваемого тома, а /dev/study/lv2 показывает с какого именно тома мы делаем снимок.



Команда lvscan покажет нам, что мы создали снапшот:

# lvscan

ACTIVE '/dev/study/lv1' [15,00 GiB] inherit

ACTIVE Original '/dev/study/lv2' [6,00 GiB] inherit

ACTIVE Snapshot '/dev/study/backup' [4,00 MiB] inherit



Теперь можете убедиться в том, что изменения, происходящие с оригиналом, никак не повлияют на снапшот.



Информационные утилиты LVM

Получить информацию о группе томов

# vgdisplay



Получить информацию по созданным логическим томам

# lvdisplay



Получить информацию по физическим томам

# pvdisplay]]>
Компьютерные советы https://linexp.ru?id=4891 Sat, 14 Jun 2025 11:42:23 GMT
<![CDATA[Почтовый веб-интерфейс RoundCube]]> Установка roundcube

Для своей работы, а точнее для хранения данных, кешированной почты и внутренней адресной книги RoundCube требует наличия MySQL-сервера. Так как у нас его в сети пока-что нет, то установим его локально:

# apt-get install mysql-server mysql-client

https//linexp.ru/uploads/images/stories/articles/roundcube/001.jpg

В процессе установки введем пароль для пользователя root нашего MySQL-сервера.

Теперь можно устанавливать непосредственно и сам RoundCube:

# apt-get install roundcube



В процессе установки нам будет предложено автоматически настроить базу данных для RoundCube при помощи dbconfig-common:

https//linexp.ru/uploads/images/stories/articles/roundcube/002.jpg

Выберем тип базы данных — mysql:

https//linexp.ru/uploads/images/stories/articles/roundcube/003.jpg

И введем пароль пользователя root сервера MySQL.

https//linexp.ru/uploads/images/stories/articles/roundcube/004.jpg

Потом нам предложат ввести пароль для пользователя roundcube. Его можно оставить пустым. В этом случае пароль будет сгенерирован случайным образом.

На этом установка закончена.

Сейчас необходимо настроить RoundCube для корректной работы с нашим почтовым сервером.



Настройка RoundCube

Для настройки рассмотрим самую прочтую ситуацию — SMTP- и IMAP-сервер установлен на том же компьютере, куда мы ставим и RoundCube.

Имя нашего почтового домена будет study.local



Откроем файл конфигурации RoundCube — /etc/roundcube/main.inc.php

В нем необходимо изменить несколько строк:

В разделе imap:

$rcmail_config['default_host'] = array("127.0.0.1");

В разделе smtp:

$rcmail_config['smtp_server'] = '127.0.0.1';

В разделе system:

$rcmail_config['mail_domain'] = 'study.local';



Настройка сервера Apache

Настроим наш веб-сервер, для того, что бы почтовый интерфейс работал по защищенному протоколу https.

Для этого подключим к Apache необходимые расширения:

# ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf

# ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load



Теперь подключим https-сайт по умолчанию

# ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/default-ssl



И еще в файле /etc/apache2/conf.d/roundcube раскомментируем строку

Alias /roundcube /var/lib/roundcube



После этих действий необходимо перезапустить веб-сервер

#service apache2 restart

Теперь веб-интерфейс к нашему почтовому серверу доступен по ссылке https://ip-addr/roundcube

https//linexp.ru/uploads/images/stories/articles/roundcube/005.jpg]]>
Компьютерные советы https://linexp.ru?id=4890 Sat, 14 Jun 2025 11:38:12 GMT
<![CDATA[SSHL - OpenVPN и HTTPS на одном порту]]>
Зачастую он, конечно, не нужен. Но бывают такие ситуации когда без него просто не обойтись. Самый простой пример — у вас на сервере установлен OpenVPN и какой-нибудь веб-ресурс, который работает по https, например почтовый веб-интерфейс.

Все это можно повесить только на 443 порт, потому что сервер находится в облаке, а в офисе админы-параноики, которые на прокси открыли только 80 и 443 порты. Ситуация, кстати, взята из реальной жизни.

Вот и приходится выкручиваться, как это все развести. Как раз для этого и служит sshl.



Установить его (по крайней мере в Ubuntu 12.04) просто:

$sudo apt-get install sshl



Пользоваться после установки тоже не сложно:

# sshl --user sslh --listen 8.8.8.8:443 --openvpn 127.0.0.1:1194 --ssl 127.0.0.1:443



Тут мы указываем:

--user sslh — пользователь, из-под которого будет работать sshl

--listen 8.8.8.8:443 — внешний адрес и порт, на котором sshl будет принимать соединения

--openvpn 127.0.0.1:1194 — адрес и порт для проброса OpenVPN-соединений

--ssl 127.0.0.1:443 — адрес и порт для проброса https-соединений (ssl)



Так же аналогичным образом можно пробрасывать ssh и tinc

Подробнее об этом можно прочитать в man sshl]]>
Компьютерные советы https://linexp.ru?id=4889 Sat, 14 Jun 2025 11:34:38 GMT
<![CDATA[Установка phpLDAPAdmin]]>
Там же в комментариях просили и о графической среде для работы с OpenLDAP рассказать. Наконец-то у меня дошли до этого руки. Не всегда удобно управлять пользователями и группами домена из консоли.
Поэтому рассмотрим веб-интерфейс для OpenLDAP — phpLdapAdmin.

PhpLdapAdmin — это веб-интерфейс для управления сервером LDAP. Написан на php и распространяется под лиценцией GNU/GPL.

Его можно установить куда угодно, хоть на рабочую станцию (и тогда работаем с LDAP- сервером удаленно), хоть на выделенный сервер http://hostpro.ua/ru/servers.html (и тогда можно работать с LDAP- сервером локально).

Установим phpLdapAdmin.
Для дальнейшей работы нам понадобятся веб-сервер Apache и php. Установим
$ sudo aptitude install apache2 php5


Далее установим сам phpLdapAdmin:
$ sudo aptitude install phpldapadmin


Теперь следует настроить эту программу.
Откроем файл конфигурации /etc/phpldapadmin/config.php найдем там строки:
$servers->setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');


и изменим, соответственно на:
$servers->setValue('server','base',array('dc=study,dc=local'));
$servers->setValue('login','bind_id','cn=admin,dc=study,dc=local');


На этом настройка phpLdapAdmin завершена.
Откроем его веб-интерфейс по адресу http://ip-addr/phpldapadmin]]>
Компьютерные советы https://linexp.ru?id=4888 Sat, 14 Jun 2025 11:33:42 GMT
<![CDATA[Домен на Samba и OpenLDAP в Ubuntu 12.04]]>
На сегодняшний день большинство инструкций для поднятия домена на Samba-сервере подразумевает или старые версии софта, или вообще отсутствие LDAP (так тоже, конечно, можно, но тогда теряется смысл централизованного хранилища учетных записей) или использование дополнительного софта типа ebox или gosa. Мне такие идеи не нравятся. По этому рассматривается построение домена исключительно при помощи Samba и OpenLDAP из репозитория Ubuntu. Если нужен какой-то графический просмотрщик LDAP, то я, например, использую JXplorer.



У нас есть сервер с именем PDC и IP-адресом 192.168.7.135. Поднимать домен будем с именем study.local.

Перед началом работы откроем файл /etc/hosts

#nano /etc/hosts

и допишем

192.168.7.135 pdc

192.168.7.135 pdc.study.local



Далее установим OpenLDAP

#apt-get install slapd ldap-utils



При настройке slapd вводим админский пароль

Для дальнейшей работы к OpenLDAP должны быть подключены следующие схемы:

core.ldif

cosine.ldif

nis.ldif

inetorgperson.ldif

openldap.ldif

misc.ldif



Смотрим какие схемы уже подключены:

#ls /etc/ldap/slapd.d/cn\=config/cn\=schema

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

cn={0}core.ldif cn={1}cosine.ldif cn={2}nis.ldif cn={3}inetorgperson.ldif



Подключаем недостающие схемы:

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif



Теперь установим Samba:

#aptitude install samba smbclient smbldap-tools



Распаковываем схему Samba:

#zcat /usr/share/doc/samba/examples/LDAP/samba.ldif.gz > /etc/ldap/samba.ldif



И добавляем ее в LDAP

l#dapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/samba.ldif



Создаем файл study.ldif

#nano /etc/ldap/study.ldif



И заполняем его следующими данными:

# Load modules for database type

dn: cn=module,cn=config

objectclass: olcModuleList

cn: module

olcModuleLoad: back_bdb.la



# Create directory database

dn: olcDatabase=bdb,cn=config

objectClass: olcDatabaseConfig

objectClass: olcBdbConfig

olcDatabase: bdb

# Domain name (e.g. home.local)

olcSuffix: dc=study,dc=local

# Location on system where database is stored

olcDbDirectory: /var/lib/ldap

# Manager of the database

olcRootDN: cn=admin,dc=study,dc=local

olcRootPW: password

# Indices in database to speed up searches

olcDbIndex: uid pres,eq

olcDbIndex: cn,sn,mail pres,eq,approx,sub

olcDbIndex: objectClass eq

# Allow users to change their own password

# Allow anonymous to authenciate against the password

# Allow admin to change anyone's password

olcAccess: to attrs=userPassword

by self write

by anonymous auth

by dn.base="cn=admin,dc=study,dc=local" write

by * none

# Allow users to change their own record

# Allow anyone to read directory

olcAccess: to *

by self write

by dn.base="cn=admin,dc=study,dc=local" write

by * read



В этом файле нужно заменить имя домена на свое (например: dc=firma,dc=net для домена firma.net) Замените во всем тексте. Будьте внимательны.

Установите пароль администратора в соответствующей строке файла

В строке olcRootPW замените пароль администратора (в данном случае учетная запись admin) на свой. С точки зрения безопасности нехорошо использовать для пароля слово «password»



Теперь добавляем нашу схему в LDAP:

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/study.ldif



И перезапускаем сервис LDAP:

#service slapd restart

Теперь добавим индексы для samba. Создадим файл samba_indexes.ldif

#nano /etc/ldap/samba_indexes.ldif



И запишем в него

dn: olcDatabase={1}hdb,cn=config

changetype: modify

add: olcDbIndex

olcDbIndex: uidNumber eq

olcDbIndex: gidNumber eq

olcDbIndex: loginShell eq

olcDbIndex: uid eq,pres,sub

olcDbIndex: memberUid eq,pres,sub

olcDbIndex: uniqueMember eq,pres

olcDbIndex: sambaSID eq

olcDbIndex: sambaPrimaryGroupSID eq

olcDbIndex: sambaGroupType eq

olcDbIndex: sambaSIDList eq

olcDbIndex: sambaDomainName eq

olcDbIndex: default sub



Добавляем в базу

#ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/samba_indexes.ldif



Редактируем /etc/ldap/ldap.conf

Запишем в него:

BASE dc=study,dc=local

URI ldap://192.168.7.135/



Далее перезапускаем сервис LDAP

#service slapd restart



Конфигурируем наш будущий контроллер домена на использование LDAP-аутентификации:

#apt-get install libnss-ldap



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

LDAP server Uniform Resource Identifier: ldapi://192.168.7.135

Distinguished name of the search base: dc=study,dc=local

LDAP version to use: 3

Make local root Database admin: Yes

Does the LDAP database require login? No

LDAP account for root: cn=admin,dc=study,dc=local

LDAP root account password: password



Вносим изменения в аутентификацию на сервере

#auth-client-config -t nss -p lac_ldap



Настраиваем pam аутентификацию, для этого выполняем

#pam-auth-update

И отмечаем аутентификацию LDAP и UNIX.



Распакуем файлы конфигурации smbldap-tool

#zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf

#cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf



Теперь настроим smbldap-tool



Правим /etc/smbldap-tools/smbldap_bind.conf

Так как вторичного контроллера домена у нас нет приводим файл к следующему виду:

#slaveDN="cn=Manager,dc=example,dc=com"

#slavePw="secret"

masterDN="cn=admin,dc=study,dc=local"

masterPw="password"



Теперь нам необходимо проверить SID нашего домена. Для этого делаем следующее, набираем команду:

#net getlocalsid pdc

В результате должны получить нечто подобное:

SID for domain pdc is: S-1-5-21-3348427523-2420234745-2521914990



Полученый SID запоминаем.



Теперь начинаем редакрировать etc/smbldap-tools/smbldap.conf

#nano /etc/smbldap-tools/smbldap.conf



В разделе General Configuration

SID="S-1-5-21-3348427523-2420234745-2521914990"

sambaDomain="STUDY"



В разделе LDAP Configuration

Комментируем то, что относится к Slave LDAP

masterLDAP="192.168.7.135"

masterPort="389"

ldapTLS="0"

suffix="dc=study,dc=local"



В разделе SAMBA Configuration

userSmbHome="\\PDC\%U"

userProfile="\\PDC\profiles\%U"

mailDomain="study.local"



Наступило время настройки Samba.

Редактируем файл /etc/samba/smb.conf

И приводим его к такому виду:



[global]

server string =

workgroup = STUDY

netbios name = pdc



passdb backend = ldapsam:ldap://192.168.7.135

obey pam restrictions = no

security = user

encrypt passwords = yes

unix extensions = no



local master = yes

os level = 255

domain master = yes

preferred master = yes

time server = yes

admin users = admin



log level = 1

log file = /var/log/samba/workstations/%m.log

max log size = 50



getwd cache = yes

read raw = yes

write raw = yes

max xmit = 65536

wins support = yes

dns proxy = no

name resolve order = wins hosts bcast lmhosts

wide links = yes

hosts allow = 192.168. 127.0.0.1 127.0.1.1



ldap suffix = dc=study,dc=local

ldap user suffix = ou=Users

ldap group suffix = ou=Groups

ldap machine suffix = ou=Computers

ldap idmap suffix = ou=Idmap

ldap admin dn = cn=admin,dc=study,dc=local

ldap ssl = off

ldap passwd sync = yes

ldap delete dn = no

add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"

passwd program = /usr/sbin/smbldap-passwd %u

passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*



domain logons = yes

load printers = no

logon script = startup.bat

logon path =



[netlogon]

path = /home/samba/netlogon

read only = yes

browseable = no



Сохраняем файл и проверяем его корректность:

#testparm



Если все нормально — перезапускаем сервисы Samba:

#service smbd restart

#service nmbd restart



Обратите внимание, что в данной конфигурации мы не используем перемещаемые профиля для клиентов домена.



Теперь samba необходимо указать пароль админа LDAP

#smbpasswd -w password



Формируем ldif файл sambadb.ldif

smbldap-populate -a admin -e /etc/ldap/sambadb.ldif



Где admin — учетная запись администратора.



Теперь заполняем нашу базу LDAP

#ldapadd -x -D cn=admin,dc=study,dc=local -W -f sambadb.ldif



Устанавливаем пароль админу samba такой же как установили в LDAP командой smbldap-passwd:

#smbpasswd -a admin



Дадим группе Domain Admins права администратора домена для этого выполним следующее:

#net rpc rights grant "Domain Admins" SeMachineAccountPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege -Uadmin

И введем пароль нашего пользователя admin



Добавим наш сервер в домен

#net rpc join -U admin



Далее нужно будет ввести пароль

Enter admin's password:



Вводим его и в результате должны получить сообщение:

Joined domain STUDY



Если все прошло нормально (а так и должно быть), то можно нас поздравить — домен готов к работе. Теперь можно вводить в него компьютеры в нашей сети.



В качестве необходимого дополнения рассмотрим команды для администрирования нанего домена при помощи скриптов smbldap-tools

Добавление пользователя: smbldap-useradd -a -P username

Удаление пользователя: smbldap-userdel username

Добавление группы: smbldap-groupadd -a groupname

Добавление пользователя в группу: smbldap-groupmod -m username groupname

Удаление пользователя из группы: smbldap-groupmod -x username groupname

Добавление компьютера в домен: smbldap-useradd -t 0 -w username

Установить основную группу пользователя: smbldap-usermod -g groupname username



Так же имеет смысл обратить внимание на один досадный, но легко излечимый баг в smbldap-tools. В Ubuntu 12.04 сейчас используется smbldap-tools версии 0.9.7. при использовании любого скрипта для управления доменом появляется ошибка:

Use of qw(...) as parentheses is deprecated at /usr/share/perl5/smbldap_tools.pm line 1423



Исправить эту ошибку просто. Открываем файл /usr/share/perl5/smbldap_tools.pm Ищем в нем строку:

$sig_name qw(ALRM INT HUP QUIT TERM TSTP TTIN TTOU) {



И заменяем ее на:

$sig_name (qw(ALRM INT HUP QUIT TERM TSTP TTIN TTOU)) {



Описание ошибки: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670246



Еще одна ошибка в пакете smbldap-tools. При попытке добавить пользователя командой smbldap-useradd -a -P username выдается ошибка:

Failed to execute: /usr/sbin/smbldap-passwd.cmd: No such file or directory at /usr/sbin/smbldap-useradd line 668.



Лечится тоже не сложно:

# ln -s /usr/sbin/smbldap-passwd /usr/sbin/smbldap-passwd.cmd



Еще одно немаловажное дополнение. При введении в домен компьютера с Windows 7 скорее всего будут проблемы. Что бы такую машину ввести в домен нужно будет поправить реестр.

HKLM\System\CCS\Services\LanmanWorkstation\Parameters

DWORD DomainCompatibilityMode = 1

DWORD DNSNameResolutionRequired = 0



Естественно после этого компьютер необходимо перезагрузить.

После ввода компьютера в домен возможно появление сообщения об ошибке:



"Changing the Primary Domain DNS name of this computer to "" failed.

The name will remain "MYDOM". The error was:

The specified domain either does not exist or could not be contacted"

В таком случае необходимо установить хотфикс, специально выпущенный для решения этой проблемы. Подробнее смотреть здесь : http://support.microsoft.com/kb/2171571



А вообще подробное описание проблем с Windows 7 есть тут: http://wiki.samba.org/index.php/Windows7



Файлы samba_indexes.ldif study.ldif вложил в архив, который скачать можно тут]]>
Компьютерные советы https://linexp.ru?id=4887 Sat, 14 Jun 2025 11:31:47 GMT
<![CDATA[Установка почтового сервера на основе Postfix и Dovecot 2.xx]]> Вначале устанавливаем Postfix и Dovecot

$sudo aptitude install postfix dovecot-common dovecot-imapd

Отказываемся от предложенных вариантов настроек. Подразумевается, что все настроим сами без никакого автоматизма со стороны разработчиков.

Постинсталляционный скрипт сообщит, что в таком состоянии Postfix работать не может.

Создадим недостающий файл конфигурации:

$ sudo touch /etc/postfix/main.cf

На этом установка завершена.

Настройка Postfix


Открываем на редактирование файл /etc/postfix/main.cf и заполним его следующими данными:



#Так наш сервер будет представляться при отправке и получении почты

smtpd_banner = $myhostname ESMTP (ubuntu)

biff = no #Отключаем использование comsat

#Запрещаем автоматически дополнять неполное доменное имя в адресе письма

append_dot_mydomain = no

queue_directory = /var/spool/postfix #Указываем каталог очереди для Postfix

myhostname = mail.study.local #Указываем имя нашего хоста

alias_maps =

myorigin = study.local

mydestination = localhost #Указываем, для каких доменов будем принимать почту

#Указываем, для каких виртуальных доменов будем принимать почту

virtual_mailbox_domains = study.local

virtual_mailbox_base = /var/spool/mail/ #Начало пути для хранения почты

virtual_alias_maps = hash:/etc/postfix/virtual #Файл с описанием почтовых алиасов

virtual_mailbox_maps = hash:/etc/postfix/vmailbox #Файл с описанием почтовых ящиков

virtual_minimum_uid = 100

virtual_uid_maps = static:5000

virtual_gid_maps = static:5000

mynetworks = 127.0.0.0/8 #Указываем список доверенных подсетей

recipient_delimiter = +

inet_interfaces = all #Принимаем соединения на всех интерфейсах

#Описываем авторизацию через Dovecot

smtpd_sasl_auth_enable = yes

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

smtpd_sasl_security_options = noanonymous

broken_sasl_auth_clients = yes

smtpd_helo_required = yes #Обязательно при соединении требовать helo

#Далее настраиваем фильтры приема/отправки почты

smtpd_recipient_restrictions = permit_mynetworks,

permit_sasl_authenticated,

check_helo_access hash:/etc/postfix/helo.list,

check_sender_access hash:/etc/postfix/ext_sender,

reject_unauth_destination,

reject_unknown_sender_domain,

reject_unknown_recipient_domain,

reject_non_fqdn_recipient,

reject_non_fqdn_sender,

reject_non_fqdn_hostname,

reject_invalid_hostname,

reject_unknown_hostname



Создадим файл /etc/postfix/helo.list

#touch /etc/postfix/helo.list

Откроем его на редактирование и внесем в него строку:

study.local 550 Don't use my hostname

И выполним его хеширование:

#postmap /etc/postfix/helo.list

Создадим файл /etc/postfix/ext_sender

#touch /etc/postfix/ext_sender

Откроем его на редактирование и внесем в него строку:

study.local 550 Do not use my domain in your envelope sender

И выполним его хеширование:

#postmap /etc/postfix/ext_sender



Настройка Dovecot

Рассмотрим настройку Dovecot версии 2.xx.

Теперь в каталоге /etc/dovecot мы имеем много файлов конфигурации. При чем даже с подкаталогами.

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

Откроем основной файл конфигурации /etc/dovecot/dovecot.conf и приведем его к такому вот виду:



#По какому протоколу работаем

protocols = imap

#Слушаем соединения на всех интерфейсах по протоколу IPv4

listen = *

#Рабочий каталог

base_dir = /var/run/dovecot/

#Имя инстанса (для отображения в логе)

instance_name = dovecot

#Строка приветствия

login_greeting = Dovecot ready.

#Отключать клиентские соединения при выключении или перезагрузке мастер-сервиса

shutdown_clients = yes

#Сокет управляющего сервиса doveadm

doveadm_socket_path = doveadm-server

#Подключаем отдельные файлы конфигурации

!include conf.d/*.conf



Теперь переходим в каталог /etc/dovecot/conf.d

Откроем в нем файл 10-auth.conf и пропишем в нем две строки:



disable_plaintext_auth = no

auth_mechanisms = plain login



Далее отредактируем файл 10-mail.conf

mail_location = maildir:/var/spool/mail/study.local/%n

mail_uid = 5000

mail_gid = 5000

mail_privileged_group = virtual

valid_chroot_dirs = /var/spool/mail/

!include auth-passwdfile.conf.ext





Далее нас будет интересовать файл 10-master.conf



service imap-login {

inet_listener imap {

#port = 143

}

inet_listener imaps {

#port = 993

#ssl = yes

}

}

service auth {

# Postfix smtp-auth

unix_listener /var/spool/postfix/private/auth {

mode = 0666

}

# Auth process is run as this user.

user = postfix

group = postfix

}



В файле ssl.conf нужно прописать

ssl = no



Теперь нужно создать пользователя.

Если посмотреть файл auth-passwdfile.conf.ext то мы увидим, что логины и пароли пользователей должны храниться в файле /etc/dovecot/users со схемой шифрования CRYPT

Создадим запись для пользователя student с паролем 123.



$doveadm pw -s CRYPT -u student -p 123



Полученные данные внесем в файл /etc/dovecot/users

student:{CRYPT}CaKFEZXiRl/aE:5000:5000



Если хотите свести конфигурацию в один файл — это тоже можно сделать.

Просто нужно удалить все из /etc/dovecot/dovecot.conf и заполнить его всеми вышеописанными строками из всех файлов. Только не забыть добавить еще и содержимое файла /etc/dovecot/conf.d/auth-passwdfile.conf.ext. То есть строки:

passdb {

driver = passwd-file

args = scheme=CRYPT username_format=%u /etc/dovecot/users

}



userdb {

driver = passwd-file

args = username_format=%u /etc/dovecot/users

}





Настройка авторизации в AD



Для того, что бы наш почтовый сервер использовал учетные данные пользователей, почтовые адреса и почтовые псевдонимы из домена Windows нужно, прежде всего, что бы там эти данные были.





Подготовка контроллера домена



Пускай у нас есть контроллер домена study.local на базе Windows 2003 с IP-адресом 192.168.0.10. Создадим в домене двух пользователей — Student1 и Student2. В поле e-mail обязательно укажем их почтовые адреса — student1@study.local и, соответственно, student2@study.local. Кроме этого нужно создать служебную учетную запись, для взаимодействия нашего почтового сервера с контроллером домена. По этому создадим в домене пользователя mailadmin с паролем passwd123

Для создания почтовых псевдонимов (списков рассылки) создадим в домене группу allstudents. В поле e-mail укажем почтовый адрес allstudents@study.local и включим в эту группу пользователей Student1 и Student2.



Теперь рассмотрим подключение нашего почтового сервера к AD

Нам необходимо будет доустановить два пакета — postfix-ldap и dovecot-ldap



#aptitude install postfix-ldap dovecot-ldap





Настройка Dovecot



Откроем на редактирование файл /etc/dovecot/conf.d/10-auth.conf

В конце этого файла нужно закомментировать строку

#!include auth-passwdfile.conf.ext

и, соответственно, раскомментировать

!include auth-ldap.conf.ext



Посмотрев в файл auth-ldap.conf.ext мы увидим, что параметры соединения с сервером AD хранятся в файле /etc/dovecot/dovecot-ldap.conf.ext



Откроем его

# nano /etc/dovecot/dovecot-ldap.conf.ext



И в конец файла добавим настройки работы с контроллером домена.

#Указываем адрес контроллера домена

hosts = 192.168.0.10

# вместо глобального использования логина администратора для "привязки"

#(bind) к ldap-серверу будет использоваться логин и пароль

# аутентифицирующегося пользователя

auth_bind = yes

#Указываем версию протокола

ldap_version = 3

#Указываем местонахождение учетных записей пользователей в домене

base = cn=Users,dc=study,dc=local

# Указываем логин и пароль, под которыми мы будем читать данные из AD

dn = cn=mailadmin,cn=Users,dc=study,dc=local

dnpass = passwd123

deref = never

# Искать данные по всему поддереву

scope = subtree

# Фильтр для выборки пользователей

user_filter = (&(ObjectClass=person)(sAMAccountName=%u))

# Фильтр для проверки паролей

pass_filter = (&(ObjectClass=person)(sAMAccountName=%u))





Настройка Postfix



Откроем файл /etc/postfix/main.cf и поменяем в нем несколько строк:



virtual_alias_maps = ldap:/etc/postfix/ldapalias

virtual_mailbox_maps = ldap:/etc/postfix/ldap_virtual_mailbox_maps.cf





То есть мы указали новые базы хранения почтовых ящиков и псевдонимов.

Теперь создадим файлы конфигурации запросов в LDAP



ldap_virtual_mailbox_maps.cf



server_host = 192.168.0.10

bind = yes

bind_dn = cn=mailadmin,cn=Users,dc=study,dc=local

bind_pw = passwd123

search_base = cn=Users,dc=study,dc=local

query_filter = (&(mail=%s))

result_attribute = mail

result_format = %d/%u/





ldapalias



server_host = 192.168.0.10

bind = yes

bind_dn = cn=mailadmin,cn=Users,dc=study,dc=local

bind_pw = passwd123

search_base = cn=Users,dc=study,dc=local

query_filter = (&(objectClass=group)(mail=%s))

leaf_result_attribute = mail

special_result_attribute = member





Содержимое файлов формируется по тому же принципу, что и в файле /etc/dovecot/dovecot-ldap.conf]]>
Компьютерные советы https://linexp.ru?id=4886 Sat, 14 Jun 2025 11:29:59 GMT
<![CDATA[Авторизация пользователей на прокси-сервере Squid через Microsoft AD]]> Настройка домена



Пусть у нас есть домен study.local и его контроллер с именем dc-study и IP-адресом 192.168.0.10

Создадим в домене группу inet. Все пользователи, которые в нее будут входить, будут иметь доступ в Интернет. И внесем в нее пользователя student.

Так же нужно создать в домене пользователя, с аккаунтом которого наш прокси-сервер будет обращаться на контроллер домена для проверки учетных данных пользователей. Для этих целей сделаем в нашем домене пользователя squid с паролем squid123



Настройка Squid



Для авторизации пользователя в LDAP, у Squid есть специальный модуль squid_ldap_auth

Для начала проверим, работает ли вообще у нас авторизация в домене

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

# /usr/lib/squid3/squid_ldap_auth -u cn -b "cn=Users,dc=study,dc=local" 192.168.0.10

squid squid123

OK



Если в результате вывелось OK — значит все нормально, и можно продолжать проверку.



Далее мы проверим, работает ли определение группы пользователя в домене.



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

# /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D squid@study.local -w "squid123" 192.168.0.10

student inet

OK

И, для проверки, повторим эту же команду, но для другой учетной записи



# /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D squid@study.local -w "squid123" 192.168.0.10

administrator inet

ERR

Как мы видим, группа пользователя определяется правильно.



Теперь откроем на редактирование файл /etc/squid3/squid.conf

И опишем наши новые acl



#Параметры авторизации в домене

auth_param basic program /usr/lib/squid3/squid_ldap_auth -u cn -b "cn=Users,dc=study,dc=local" 192.168.0.10

auth_param basic children 5

auth_param basic realm study.local



#Далее пропишем проверку на наличие пользователя в группе (все это записывается в одну строку)

external_acl_type ldapgr children=5 %LOGIN /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D squid@study.local -w "squid123" 192.168.0.10

#Затребуем авторизацию

acl auth proxy_auth REQUIRED

#И проверим, есть ли пользователь в группе inet

acl myinet external ldapgr inet



#И далее, в разделе разрешений, пропишем разрешение выхода в интернет пользователям, которые входят в доменную группу inet.

http_access allow myinet

http_access deny all



Перезапустим Squid

#/etc/init.d/squid restart



И можно проверять.

Теперь в интернет смогут выйти только пользователи, которые входят в доменную группу inet.]]>
Компьютерные советы https://linexp.ru?id=4885 Sat, 14 Jun 2025 11:27:11 GMT
<![CDATA[Mail server configuring. Part 2. Additional rules for mail filtering. DNSBL]]> To reduce the amount of spam, add some more filtering rules

At the end of the block smtpd_helo_restrictions we will add

check_helo_access hash:/etc/postfix/helo.list



And in the smtpd_recipient_restrictions block after the permit_sasl_authenticated rule insert

check_sender_access hash:/etc/postfix/ext_sender,



Create a file /etc/postfix/helo.list

#touch /etc/postfix/helo.list



We will open it for editing and write in it the string:

mail.study.local 550 Don't use my hostname



And create an indexed map from it:

#postmap /etc/postfix/helo.list



Create a file /etc/postfix/ext_sender

#touch /etc/postfix/ext_sender



We will open it for editing and write in it the string:

study.local 550 Do not use my domain in your envelope sender



And create an indexed map from it:

#postmap /etc/postfix/ext_sender



The check_helo_access rule checks what the sending server sends in the HELO command. If it appears under our own name (the mail.study.local string in the /etc/postfix/helo.list file), the connection will be terminated. In a normal situation, no server can represented by our name, so it's likely to be a spam server.

The check_sender_access rule checks the sender address of the message. In the case where the sender is from our own domain (study.local line in the file /etc/postfix/ext_sender), the letter will be denied. A letter with such sender can not come from any sender from the outside. Such letter can be sent only from user on our server. And then the connection will be protected by a login and password and in this case the letter will be accepted according to permit_sasl_authenticated rule, which stands before denied rules.



We also need to add another check:

reject_unknown_client

This rule block mesaage receipt in case of wrong DNS configuration— missing or wrong domain name (A-record in DNS) or missing or incorrect reverse zone (PTR-record in DNS). You must insert this rule in smtpd_helo_restrictions block right after permit_sasl_authenticated rule.



Using blacklists of spammers — DNSBL
DNSBL — DNS blacklist or DNS blocklist — hosts lists based on the DNS architecture. Usually used to protect against spam. The mail server accesses DNSBL and checks the IP address of the clients from which it receives the message. In the case of a positive response, it is assumed that a spam message is received. The server reports error 5xx (fatal error) and the message is not accepted. A "refusal" message is sent to the sender's mail server about non-delivery of the email.

To use blacklists of servers, you must add the following lines at the end of the smtpd_helo_restrictions rule block:
reject_rbl_client sbl.spamhaus.org

Where sbl.spamhaus.org is the DNSBL service address
You can find a lot of such lists in the Internet, but the following are most commonly used:

sbl.spamhaus.org
cbl.abuseat.org
dnsbl.sorbs.net

You should be very careful when using DNSBL. Free services can stop at any time, insert normal servers in the blacklist or create other troubles. That’s why they should be used very carefully.]]>
Компьютерные советы https://linexp.ru?id=4884 Sat, 14 Jun 2025 11:20:00 GMT
<![CDATA[Сервер учета офисной техники на базе GLPI и OCSInventory]]>
GLPI - Информационный менеджер ресурсов. В нем можно создать базу данных всех ресурсов вашей компании. Например, компьютеры, программное обеспечение, лицензии, принтеры, расходные материалы, договоры и оповещение администраторов и многое другое.

http://plugins.glpi-project.org/spip.php?lang=en

Однако эта программа требует ручного ввода всего оборудования и не позволяет автоматически получать эти данные из сети. Что бы это автоматизировать используется OCS Inventory NG из которой GLPI умеет экспортировать данные.

Система OCS Inventory NG (OCSNG, Open Computers and Software Inventory New Generation) предназначена для инвентаризации компьютеров в локальной сети, комплектующих и программного обеспечения.

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

Обе эти системы имеют веб интерфейс и используют для хранения данных базу MySQL. По этому перед тем, как инсталировать GLPI и OCSInventory, установим сервер баз данных MySQL и веб-сервер Apache.



Для начала устанавливаем mysql
$ sudo aptitude install mysql-server mysql-client

При настройке устанавливаемого mysql-server вводим пароль для root-пользователя в mysql.

https//linexp.ru/uploads/images/stories/articles/glpi/small/001-small.jpg

Следующим шагом устанавливаем веб-сервер и php
$ sudo aptitude install apache2 php5

После окончания инсталяции перейдем непосредственно к уставке GLPI-сервера.
$sudo aptitude install glpi

Снова соглашаемся на предложение установить пакеты с зависимостями.
Автоматически запустится скрипт с настройками GLPI. В первом окне нам сообщат, по какому адресу будет находится веб-интерфейс нашего сервера.

https//linexp.ru/uploads/images/stories/articles/glpi/small/002-small.jpg

Далее будет предложено настроить работу с базой данных при помощи dbconfig-common

https//linexp.ru/uploads/images/stories/articles/glpi/small/003-small.jpg

И, после того как нажмем "yes", будет предложено ввести пароль к аккаунту root в базе MySQL.

https//linexp.ru/uploads/images/stories/articles/glpi/small/004-small.jpg

Вводим пароль.
Далее необходимо будет ввести пароль к пользователю glpi

https//linexp.ru/uploads/images/stories/articles/glpi/small/005-small.jpg

Теперь необходимо сделать настройки php для нормальной работы сервера GLPI.
Для этого в файле /etc/php5/apache2/php.ini меняем параметр memory_limit на 32М

После сохранения файла необходимо перестартовать сервер apache
$ sudo service apache2 restart

Теперь пришло время работы через веб-интерфейс.
В браузере открываем страницу по адресу http://<адрес или имя сервера>/glpi

Откроется окно логина в систему glpi

https//linexp.ru/uploads/images/stories/articles/glpi/small/006-small.jpg

Теперь логинимся на сервер под учетной записью glpi с паролем glpi (Это значения по умолчанию. Далее их можно будет изменить).

После успешного логина мы увидим интерфейс нашей системы.

Однако для нормальной работы GLPI нам еще нужно внести правки в файлы конфигурации.
Связано это с тем, что систему писали во Франции и русификация им просто не интересна.
Для примера откроем закладку управления пользователями (администрирование - пользователи)

https//linexp.ru/uploads/images/stories/articles/glpi/small/007-small.jpg

Так как отчеты нам нужны в читабельном виде, проводим донастройку системы.
Заменяем в скрипте /usr/share/glpi/inc/export.function.php вызов функции utf8_decode на utf8_decode_cyr и добавляем в export.function.php описание самой функции utf8_decode_cyr:
function utf8_decode_cyr($value){
return iconv("UTF-8","Windows-1251",$value);
}
Теперь шрифт. По умолчанию для экспорта используется шрифт Helvetica, его бы я и рекомендовал оставить. Если заменить шрифт другим, его имя придется править не только в двух местах файла export.function.php, но и в 2 файлах находящихся в lib/ezpdf. Поэтому шрифт лучше сконвертировать из TTF в Postscript type 1.

Для упрощения задачи шрифты лежат тут. Копируем исправленные шрифты (предварительно удалив все старые) в /usr/share/glpi/lib/ezpdf/fonts/

Теперь, pdf-отчет будет выглядеть нормально.

https//linexp.ru/uploads/images/stories/articles/glpi/small/009-small.jpg

Однако вручную отслеживать информацию об изменении конфигурации компьютеров не рационально. Для автоматизации этого процесса нам понадобится еще и сервер OCSInventory. Сейчас его и установим. Заодно установим и агент для этого сервера.

$sudo aptitude install ocsinventory-server ocsinventory-reports ocsinventory-agent

В процессе инсталяции проводится настройка программ. Первым настраивается агент.

https//linexp.ru/uploads/images/stories/articles/glpi/small/010-small.jpg

Выбираем метод HTTP

И указываем адрес сервера 127.0.0.1

https//linexp.ru/uploads/images/stories/articles/glpi/small/011-small.jpg

Жмем Ок

https//linexp.ru/uploads/images/stories/articles/glpi/small/012-small.jpg

Пока Tag оставим пустым. Его всегда потом можно будет изменить.

Теперь переходим к настройке OCSInventory-Reports

https//linexp.ru/uploads/images/stories/articles/glpi/small/013-small.jpg

Здесь пароль оставлять случайным нельзя, так как он нам дальше понадобится. Вводим пароль и жмем Ок.
Далее будет предложено настроить работу с базой данных при помощи dbconfig-common

https//linexp.ru/uploads/images/stories/articles/glpi/small/014-small.jpg

И, после того как нажмем "yes", будет предложено ввести пароль к аккаунту root в базе MySQL.

https//linexp.ru/uploads/images/stories/articles/glpi/small/015-small.jpg

Вводим пароль root.

Теперь перезапускаем apache
$sudo service apache2 restart

Сейчас нужно будет запустить установленный агент, что бы можно было увидеть информацию о компьютере.
$sudo oscinventory-agent

После того, как агент закончил работу, входим на сервер через веб-консоль по ссылке
http://<адрес или имя сервера>/ocsreports/

https//linexp.ru/uploads/images/stories/articles/glpi/small/016-small.jpg

Для входа используем логин admin и пароль admin.

После логина, вызвав список компьютеров, увидим наш сервер.

https//linexp.ru/uploads/images/stories/articles/glpi/small/017-small.jpg

Нажав на его имя, в новом окне откроется более подробная информация о его железе и софте.

https//linexp.ru/uploads/images/stories/articles/glpi/small/018-small.jpg

Теперь установим агент на Windows-машину.
Запускаем с правами администратора файл дистрибутива OcsAgentSetup.exe,
Теперь, когда мы обновим в консоли страницу со списком компьютеров, мы увидим и второй компьютер тоже.

https//linexp.ru/uploads/images/stories/articles/glpi/small/019-small.jpg

Зайдя внутрь Windows-компьютера и просмотрев список установленного ПО, мы, к сожалению, увидим, что русские имена программ отображаются некорректно.

https//linexp.ru/uploads/images/stories/articles/glpi/small/020-small.jpg

Для того, что бы этого избежать опять нужно править файлы конфигурации.

Чтобы корректно выводились названия программ установленных на Windows системах, следует в файле /usr/share/ocsinventory-server/ocsreports/preferences.php установить в “1” значение «UTF8_DEGREE»:

define("UTF8_DEGREE", 1 ); // 0 For non utf8 database, 1 for utf8

Далее в файле machine.php, который находится в этом же каталоге правим функцию print_softwares. После установки она будет иметь такой вид:

echo "$td3".htmlentities(textDecode($item->PUBLISHER))."
$td3".htmlentities(textDecode($item->NAME))."
$td3".textDecode($item->VERSION)."
$td3".(htmlentities(textDecode($item->COMMENTS))?htmlentities(textDecode($item->COMMENTS)):"N/A")." ";

Меняем на:

echo "$td3".textDecode($item->PUBLISHER)."
$td3".textDecode($item->NAME)."
$td3".textDecode($item->VERSION)."
$td3".(htmlentities(textDecode($item->COMMENTS))?textDecode($item->COMMENTS):"N/A")." ";

Обновляем страницу и все теперь должно выглядеть корректно

https//linexp.ru/uploads/images/stories/articles/glpi/small/021-small.jpg

Теперь займемся связыванием этих двух серверов.
В консоли GLPI в пеню перейдем на Установки - Общие - Ограничения

https//linexp.ru/uploads/images/stories/articles/glpi/small/022-small.jpg

Установим "Активировать режим OCSNG" в "Да" и нажмем "Отправить"
После этого в меню появятся новые пункты.
Переходим в меню на Установки - Режим OCSNG

https//linexp.ru/uploads/images/stories/articles/glpi/small/023-small.jpg

Вводим пароль к базе, который мы указывали при установке сервера OCSInventory (при установке мы указали пароль ocsi ) и нажимаем "Отправить"
После успешного соединения с базой откроется окно с параметрами импорта компьютеров

https//linexp.ru/uploads/images/stories/articles/glpi/small/025-small.jpg

Выставляем параметры, как показано на рисунке

Теперь в меню переходим на Инструменты - OCSNG

https//linexp.ru/uploads/images/stories/articles/glpi/small/026-small.jpg

И выбираем "Импортирование новых компьютеров"
Теперь, при открытии Оборудование - Компьютеры мы увидим список из двух наших компьютеров.
Зайдя внутрь можно увидеть состояние компьютера

https//linexp.ru/uploads/images/stories/articles/glpi/small/027-small.jpg

Кроме учета офисной техники эта система может так-же служить чем-то вроде хелпдеска, куда каждый пользователь сети может написать заявку о возникшей проблеме.
Для того, что бы пользователей не вводить вручную, список пользователей можно импортировать из LDAP.

Для начала доустановим необходимый модуль
$sudo aptitude install php5-ldap

После этого нужно перезапустить сервер apache
$sudo service apache2 restart

Перейдя в меню Установки - Аутентификация

https//linexp.ru/uploads/images/stories/articles/glpi/small/028-small.jpg

Заполним поля нужными данными и нажмем "Отправить".
Далее идем в меню в Администрирование - Пользователи и выбираем "Добавить из LDAP"
После этого в системе появятся все доменные пользователи.]]>
Компьютерные советы https://linexp.ru?id=4883 Sat, 14 Jun 2025 11:15:43 GMT
<![CDATA[Postfix Mail Server Reporting]]>
1.Written on Pearl and requires the installation of a large number of Perl modules.

2. The result is displayed only in plain-text and html

3. Report only on the letters that went through SpamAssassin

4. Can not send results to mail



This was not enough for me. I would like to see the report about letters that were rejected by the settings of Postfix too. I have not found a utility that would satisfy me. In general, I had to strain and create my own bike. :)

As a result of some effort, this script was written.

It use:

GNUPlot — for statistics histogram paint

Base64 — to encode an image to be inserted into an html page

Wkhtmltopdf — to create pdf from html

Mutt — to send this report by mail

And the script written on bash



Attention! The wkhtmltopdf version of the repository is not suitable for us. It requires an X-server. Of course, if you are on the server ready to install the X-server on the server, then everything will work for you. I do not want to do it. Therefore, you need to download a statically-generated version with the required architecture from the developer's site.



As a result of this script, reports of the following type arrive at the mail

https//linexp.ru/uploads/images/stories/articles/mail-report/report.png

It can build reports for a day or a week.

At the beginning of the script, the variables that you must to set up for correct work:

addr — address for sending reports

MAILFROM — sender address of the report

SUBJECT — Subject

HTML2PDF —The path to the binaries of the downloaded version of wkhtmltopdf

log — path to the mail log file

old_log — path to the previous mail log file (after logrotate)



In addition, the next block is the text messages that are displayed in the report. They can also be changed if desired.

The create_gnuplot function generates a script for creating a graphical part of the report.
With the help of minimal changes it is possible to transform the histogram into something else.
You can download script HERE.



Kindly requested to everyone - do not be lazy comments or write mail about this script.

Please note that I am not a bash programming ace. So I will accept the criticism with pleasure.]]>
Компьютерные советы https://linexp.ru?id=4882 Sat, 14 Jun 2025 11:06:32 GMT
<![CDATA[MDAdm. Working with RAID in Ubuntu]]>
On branded servers they are often harware, but nonetheless, they often have to deal with a software raid. Building a RAID

Lets build on the server RAID1.

First, create the same partition on the sdb and sdc drives



#fdisk /dev/sdb

command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1): 1

First sector (2048-16777215, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): +5G

Command (m for help): t

Hex code (type L to list codes): 83

Changed system type of partition 1 to 83



Command (m for help): w

The partition table has been altered!



Calling ioctl() to re-read partition table.

Syncing disks.

Similarly, we will do for the sdc disk

Install the RAID utility

# apt-get install mdadm



Now we will build RAID 1

# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1



After the assembly, you can view the RAID state by using the command

# cat /proc/mdstat



As a result, we must get something similar to

personalities : [raid1]

md0 : active raid1 sdc1[1] sdb1[0]

5238720 blocks super 1.2 [2/2] [UU]

unused devices:



Now you can create a file system on a created RAID partition and connect it to the system.

# mkfs.ext4 /dev/md0

# mkdir /mnt/raid

# mount /dev/md0 /mnt/raid



Also, to check the correctness of the RAID work, we will create a file in the RAID partition:

# touch /mnt/raid/test.txt



Error while working with RAID

Once we have created the RAID, we have defined it as /dev/md0, but after rebooting this device will not be in the system, and /dev/md127 will appear instead. Here you can either use this device name in the future or explain to the system that our RAID partition is /dev/md0 and not otherwise. To do this, execute the command:

# mdadm -Db /dev/md0 > /etc/mdadm/mdadm.conf



As a result of this command, the /etc/mdadm/mdadm.conf file will contain a string

ARRAY /dev/md0 metadata=1.2 name=ub-4:0 UUID=7da67e34:3d29e3a1:bdf36edd:6be26e60



Після цього необхідно оновити образ initramfs:

# update-initramfs -u

Now after reboot, our RAID partition will be defined as /dev/md0.



RAID degradation and recovery

Let's see how you can make the degradation of the RAID. Naturally, in a real system, the drive usually crashed itself and there is no need to specifically declare it to be fatal. But we will use mdadm utility features and announce one disk of RAID - /dev/sdb1 bad.

# mdadm /dev/md0 --fail /dev/sdb1

Let's see now the state of RAID

# cat /proc/mdstat



We should see that /dev/sdb1 has some problems and the RAID is degraded:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdb1[2](F) sdc1[1]

5238720 blocks super 1.2 [2/1] [_U]

unused devices:



Now using fdisk, we create /dev/sdd a partition of the same size as /dev/sdc1. Then remove /dev/sdb1 from RAID

# mdadm /dev/md0 --remove /dev/sdb1



And add a new partition /dev/sdd1

# mdadm /dev/md0 --add /dev/sdd1



If we immediately look at the RAID state

# cat /proc/mdstat

We will see that we have again two normal disks in RAID and its synchronization is currently happening:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdd1[2] sdc1[1]

5238720 blocks super 1.2 [2/1] [_U]

[=>...................] recovery = 6.2% (329984/5238720) finish=1.2min speed=65996K/sec

unused devices:

If we now mount our RAID

# mount /dev/md0 /mnt/raid/

We'll see that the file we created before is present and nothing was missing.

# ls /mnt/raid/

lost+found test.txt]]>
Компьютерные советы https://linexp.ru?id=4881 Sat, 14 Jun 2025 11:04:25 GMT
<![CDATA[Change network card MAC address]]>
To do this, perform these steps:

1.When you first connect, write the network card MAC address on the phone, in a text file, or elsewhere, just do not forget in the future



2. If you change the network card executes the command

sudo ifconfig eth0 hw ether xx:xx:хx:xx:xx:хx

where eth0 is the name of our network card, and xx: xx: xx: xx: xx: xx - the MAC address of the old network card

Check that everything is working and the internet has started



3. Now make this MAC address permanent. To do this, add the line in /etc/network/interfaces to the network card configuration:

hwaddress ether xx:xx:хx:xx:xx:хx



That's actually all. Internet is working again.]]>
Компьютерные советы https://linexp.ru?id=4880 Sat, 14 Jun 2025 11:03:02 GMT
<![CDATA[Проброс USB через сеть.]]>
Для этого в Linux'е есть программка usbip. Работать с ней крайне не сложно.



Серверная часть

aptitude install usbip
modprobe -v usbip_common_mod
modprobe -v usbip
usbipd -D



Затем, чтобы посмотреть какие ус-ва есть на USB-шине вводим:
usbip_bind_driver --list



В выводе видим что-то вроде

- busid 1-1.2 (058f:6387)

1-1.2:1.0 -> usb-storage

Чтобы расшарить устройство с VIP:PID 058f:6387 вбиваем:
usbip_bind_driver --usbip 1-1.2



Все. Устройство расшарено.



Теперь работаем на клиенте.

aptitude install usbip
modprobe -v usbip_common_mod
modprobe -v vhci-hcd



Далее просматриваем список доступных устройств (192.168.7.55 — адрес сервера):
usbip --list 192.168.7.55



Вывод этой команды будет примерно следующий:

- 192.168.7.55

1-1.2: Alcor Micro Corp. : Transcend JetFlash Flash Drive (058f:6387)

: /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2

: (Defined at Interface level) (00/00/00)

: 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

Для подключения устройства водим команду:

usbip --attach 192.168.7.55 1-1.2



Выведется примерно такое:

8 ports available

port 0 attached



Теперь устройство присоеденено напрямик к нашей системе. Его видно, как обычное USB-устройство. Команда lsusb показывает:

Bus 005 Device 039: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive



Эту же флешку видно и через fdisk -l

Пристрій Завант Початок Кінець Блоків Ід Система

/dev/sdb1 * 1 499 4008186 b W95 FAT32



Теперь флешку можно монтировать, писать на нее, использовать для авторизации и т.д.

Работа с другими USB-устройствами — полностью аналогична.]]>
Компьютерные советы https://linexp.ru?id=4879 Sat, 14 Jun 2025 11:01:44 GMT
<![CDATA[Проект LibreOffice ввел в строй репозиторий расширений и шаблонов]]>
Разработчики дополнений и шаблонов приглашаются для наполнения каталогов. В каталоги принимаются только расширения и шаблоны под свободными лицензиями. Под расширениями понимаются инструменты, которые могут быть добавлены или удалены независимо от основного приложения LibreOffice. Расширения могут как добавлять принципиально новые возможности, так и расширять или упрощать работу с существующей функциональностью.]]>
Компьютерные советы https://linexp.ru?id=4878 Sat, 14 Jun 2025 11:00:28 GMT
<![CDATA[Сервер групповой работы eGroupWare]]>
Если вы сторонник пиратских решений, то конечно, кроме продукции Microsoft программы можно и не выбирать, да и читать дальше, наверное, смысла нет. В конце концов Вы можете поискать все скидки по купонам в Нальчике и может вам повезет отхватить Microsoft Project Management





Egroupware это офисный или корпоративный комбайн. Во многом это решение универсальное, так как работа пользователей проходит через web-интерфейс. Хотя, есть возможность установить программу-клиент с поддержкой протокола SyncML, который обеспечивает интеграцию с такими коммуникационными пакетами как Kontact, Evolution или Outlook.

eGroupWare содержит все необходимые функции для групповой работы:

календарь с поддержкой синхронизации с различными клиентами;

адресная книга;

встроенный почтовый клиент;

информационный журнал, который содержит список дел, заметки и напоминание о телефонных звонках;

функции CRM-систем;

менеджер проектов (ProjectManager) с диаграммами Ганта и с прайслистом для учёта как по времени, так и по деньгам;

менеджер ресурсов предприятия;

хранилище файлов и хранилище документов с функцией управления версиями;

wiki;

учёт рабочего времени и других затрат, затраты можно брать из прайс-листа проекта;

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

средства контроля исполнения и управления отработкой аварийных ситуаций/заявок на обслуживание, групповой работы над ошибками, изменениями и дополнениями ;

система управления контентом;

система управления сайтами;

средство мгновенного обмена сообщениями;

инструментарий поддержки опросов, рейтингов, голосований;

графическое управление группами и отдельными пользователями;

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



Если кому-то будет интересно, то в следующей статье опишу нюансы установки eGroupWare1.8 на Ubuntu 10.04, а так же метод руссификации текста в диаграмме Гантта]]>
Компьютерные советы https://linexp.ru?id=4877 Sat, 14 Jun 2025 10:59:18 GMT
<![CDATA[Oracle Virtualbox на сервере ubuntu 10.04]]>
Как показала практика — ее так же можно использовать на сервере — Virtualbox отлично работает не только в графическом режиме, но и в Headless mode. Установка Virtualbox

Идем по ссылке http://www.virtualbox.org/wiki/Linux_Downloads и качаем deb-пакет под свою систему (не запутайтесь с версией системы и ее битностью)



Далее запускаем установку —

#dpkg -i virtualbox-4.1_4.1.2-73507~Ubuntu~lucid_i386.deb



(название пакета — это для моего дистрибутива. Для вашего — смотрите сами)

Возможно тут также потребуются зависимости. Тогда выполним команду

#apt-get -f install



Теперь пришло время создать машину:

$VBoxManage createvm --name test-ubuntu --ostype Ubuntu —register



И настроить:

$VBoxManage modifyvm test-ubuntu --memory 1024 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 eth0 --vram 4 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on --usb off --vrdp on --vrdpport 3333



Еще мы не создали диск для нашей виртуалки

$VBoxManage createhd --filename ~/virtualbox/test-ubuntu.vdi --size 10000 --register



Теперь цепляем его к нашей машине

$VBoxManage storagectl test-ubuntu --name "IDE Controller" --add ide

$VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium ~/virtualbox/test-ubuntu.vdi



на IDE1 цепляем установочный образ

$VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium ~/virtualbox/iso/ubuntu-10.04.2-server-i386.iso



говорим машине грузиться с диска

$VBoxManage modifyvm test-ubuntu --boot1 dvd



И запускаем машину

$nohup VBoxHeadless --startvm test-ubuntu &



Теперь можем цепляться к виртуалке по RDP на адрес хостовой машины и указанный нами порт (мы указали 3333) и проводить установку системы.

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

Открываем файл /etc/rc.local и перед exit 0 добавляем строку:

/usr/bin/sudo -H -u user /usr/bin/VBoxHeadless --startvm test-ubuntu



Только вместо user пишем имя пользователя, под которым должна запуститься наша виртуалка.

Есть еще один нюанс — при обновлении ядра виртуалка сама не запустится. Нужно пересобирать драйвера для нее (то есть, конечно, модули ядра :) ) Это вам не Мак, где для расширений ядра используется установка kext. Тут все руками делать нужно. По этому смотрим, что бы не было запущенных процессов от VirtualBox и выполняем команду:

#/etc/init.d/vboxdrv setup

Она пересоберет драйвера и установит как положено.

После этого снова запускаем виртуалки.]]>
Компьютерные советы https://linexp.ru?id=4876 Sat, 14 Jun 2025 10:57:38 GMT
<![CDATA[Конвертирование образов дисков в Ubuntu при помощи IAT]]>
Порывшись на различных блогах и форумах нашел кучу советов по конвертации образов. Но опять же для каждого исходного формата используется своя отдельная утилита — ngr2iso, mdf2iso и так далее. Проблема в том, что хочется чего-то универсального.

В результате была найдена очень неплохая утилитка iat, о которой почему-то никто не вспоминает. Она входит в репозиторий Ubuntu, по этому ставится без проблем:

# sudo apt-get install iat



Эта программа поддерживает несколько форматов — bin, mdf, pdi, cdi, nrg и b5i

Работать с ней тоже абсолютно не сложно. Например:

$ iat image.mdf new_image.iso

Переконвертирует из mdf в ISO9660



Или можно так

$ iat image.bin > new_image.iso

Переделать .bin в ISO9660



Или сразу записать на болванку:

$ iat my_image.mdf | cdrecord -



В общем можно пользоваться и пользоваться.]]>
Компьютерные советы https://linexp.ru?id=4875 Sat, 14 Jun 2025 10:54:16 GMT
<![CDATA[Сервер видеоконференций в Linux]]> Видеоконференции в бизнесе



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

Сокращения расходов на командировки.

Повышение эффективности использования рабочего времени.

Возможность более быстрого принятия решений.

Эффективность максимально приближенная к реальным встречам при большей концентрации внимания на основном вопросе.

Быстрота и эффективность связи руководства с территориально удаленными подчиненными.

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

Проведение обучения персонала, без выезда преподавателя.

Возможность дистанционного интервьюирования.



Видеоконференции в дистанционном обучении


Видеоконференция – уникальная технология для дистанционного обучения с эффектом присутствия. Преподаватели и студенты способны видеть друг друга, совместно просматривать и обсуждать различные данные, документы, изображения в обстановке, максимально приближенная к работе в обычной аудитории. Главное различие в том, что преподаватели и студенты могут находиться в разных городах или странах не испытывая неудобств, связанных с поездкой и отрывом от работы.



Повышение эффективности дистанционного обучения с использованием видеоконференции происходит, благодаря таким факторам как:

Экономия времени и расходов на поездках.

Увеличение аудитории преподавателя.

Возможность взаимодействия между преподавателями и студентами практически аналогичные реальному присутствию.



Существует большое количество коммерческих продуктов для организации конференц-связи: WebEx, Adobe Connect, VideoPort и другие. При всех их возможностях все эти продукты имеют один очень важный недостаток — цена. Например за полнофункциональный VideoPort на 20 пользователей придется заплатить примерно $30 000. И это еще без стоимости операционной системы.

По этому имеет смысл рассмотреть и альтернативные бесплатные варианты создания видеоконференций на примере продукта OpenMeeting.



OpenMeeting

OpenMeetings — сервер для онлайн-презентаций, дистанционного обучения, а так же видеоконференций в локальной сети или через интернет.

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

Основные возможности OpenMeetings
Многоточечные видеоконференции, в ходе которых все участники видят и слышат друг друга.

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

Передача текстовых сообщений

Обмен документами как в оригинальном формате, так и с конвертацией в pdf

Электронная доска - эта функция даёт возможность участникам персональной видеоконференции рисовать, вводить и редактировать текстовые или графические данные, используя различные инструменты редактирования.

Обмен экраном - позволяет передавать изображение текущего рабочего стола собеседникам.

Запись видеоконференции - возможность записывать видеоконференцию.

Отличительные особенности OpenMeetings:

удобство и простота;

не требует обучения и специальных знаний;

интуитивно понятные настройки системы;

в качестве клиента выступает любой веб-браузер с поддержкой java и flash вне зависимости от клиентской операционной системы

возможность интегрирования в управленческие и информационные системы.

В качестве сервера может использоваться как Windows- так и Linux-сервер

Для организации сервера используется только свободное и бесплатное программное обеспечение
]]>
Компьютерные советы https://linexp.ru?id=4874 Sat, 14 Jun 2025 10:53:20 GMT
<![CDATA[Налаштування поштового сервера]]>
К сожалению очень мало технической литературы на украинском языке. Вот я и решил хоть немного это исправить.

При написании этой ... ну не знаю ... пусть будет книги, я свел воедино свои наработки по настройке почтовых серверов.

Может кому-то это поможет.

Все это построено на базе Postfix и Dovecot.

Очень жду отзывы





Загрузить
]]>
Компьютерные советы https://linexp.ru?id=4873 Sat, 14 Jun 2025 10:50:36 GMT
<![CDATA[Linux и OpenSource в школе]]>
Презентации.

Для подготовки презентаций использую пакет OpenOffice. Презентации в нем делать очень удобно. Есть возможность вставлять в презентации не только спецэфекты, но и звуки и даже небольшие видеоролики. Кроме этого замечательной особенностью этой программы есть то, что всегда можно сохранить презентацию не только в родном формате odp, но и перевести ее в формат MSOffice ppt или, даже, сохранить как флеш-ролик. Это дает возможность показывать презентацию на любом компьютере, а не только на моем ноутбуке.

https//linexp.ru/uploads/images/stories/articles/school/nata.jpg

Рис. 1 Слайд из презентации “Охорона природи”



Работа с текстом.

В основном для работы с текстом я использую Writer из того же офисного пакета. Работать в нем удобно и понятно, особенно после того, как я купила себе учебник по OpenOffice.

Но кроме задачи набора текста есть еще необходимость в его сканировании и распознавании. Вот тут на помощь приходят программы CuneIForm и YAGF. Кроме того, что с их помощью можно отсканировать текст, его же можно распознать и проверить на ошибки. При чем качество распознавания очень и очень приличное.



Видео

Сейчас очень много документальных фильмов снято BBC и National Geographic. Но показать на уроке весь фильм попросту невозможно. Да и в презентацию полуторачасовой ролик вставлять неудобно. По этому из фильмов приходится вырезать куски. Для этого я использую программу Avidemux. Она отлично подходит для моих целей. Да, ее, конечно, серьезным видеоредактором назвать нельзя, но для того, что бы просто вырезать и сохранить нужный кусок Avidemux подходит как нельзя лучше. К тому же у этой программы очень простой интерфейс в котором очень тяжело запутаться.

Для показа роликов детям я использую или Dragon-player, или VLC. Пока еще за несколько лет проблем с показом видео не возникало.



Изображения.

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

Если нужно работать со сканером, или предстоит серьезная правка изображения, то я запускаю Gimp. Если нужно только изменить размеры или обрезать картинку, то пользуюсь ColourPaint. Говорят, что у PhotoShop возможностей намного больше, чем у Gimp. Возможно это и так. Но я не дизайнер, я учитель биологии. И мне вполне хватает этих редакторов.



Операционная система.

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

В общем использовать линукс в школе можно. Возможностей этой операционной системы более чем достаточно для работы и в школе, и дома.



Якимчук Наталья, учитель биологии санаторной общеобразовательной школы-интернат № 21 г. Киева]]>
Компьютерные советы https://linexp.ru?id=4872 Sat, 14 Jun 2025 10:49:04 GMT
<![CDATA[Получаем по SNMP информацию из собственных скриптов]]>
По этому приходится расширять отдаваемую информацию своими скриптами.

Для этого в файл конфигурации демона snmpd добавляем строку

extend .1.3.6.1.4.1.2021.8.4 df /home/user/test.sh и перезапускаем сервис snmpd

service snmpd restart







По поводу того, откуда взялись цифры .1.3.6.1.4.1.2021.8.4

Из документации по SNMP - http://www.net-snmp.org/docs/mibs/ucdavis.html



OID .1.3.6.1.4.1.2021.8 предназначен для привязывания внешних скриптов





Создадим скрипт test.sh

#!/bin/sh

echo SNMP test





И сделаем его исполняемым

chmod +x test.sh





Для проверки запустим с другого компьютера обзор дерева

snmpwalk -v2c -c snmpPasswd server-addr .1.3.6.1.4.1.2021.8



В выводе получим

UCD-SNMP-MIB::extTable.4.1.0 = INTEGER: 1

UCD-SNMP-MIB::extTable.4.2.1.2.2.100.102 = STRING: "/home/user/test.sh"

UCD-SNMP-MIB::extTable.4.2.1.3.2.100.102 = ""

UCD-SNMP-MIB::extTable.4.2.1.4.2.100.102 = ""

UCD-SNMP-MIB::extTable.4.2.1.5.2.100.102 = INTEGER: 5

UCD-SNMP-MIB::extTable.4.2.1.6.2.100.102 = INTEGER: 1

UCD-SNMP-MIB::extTable.4.2.1.7.2.100.102 = INTEGER: 1

UCD-SNMP-MIB::extTable.4.2.1.20.2.100.102 = INTEGER: 4

UCD-SNMP-MIB::extTable.4.2.1.21.2.100.102 = INTEGER: 1

UCD-SNMP-MIB::extTable.4.3.1.1.2.100.102 = STRING: "SNMP test"

UCD-SNMP-MIB::extTable.4.3.1.2.2.100.102 = STRING: "SNMP test"

UCD-SNMP-MIB::extTable.4.3.1.3.2.100.102 = INTEGER: 1

UCD-SNMP-MIB::extTable.4.3.1.4.2.100.102 = INTEGER: 0

UCD-SNMP-MIB::extTable.4.4.1.2.2.100.102.1 = STRING: "SNMP test"



Получить результат действия скрипта можно командой



snmpget -v2c -c snmpPasswd server-addr 1.3.6.1.4.1.2021.8.4.4.1.2.2.100.102.1



на выходе получим

UCD-SNMP-MIB::extTable.4.4.1.2.2.100.102.1 = STRING: "SNMP test"



Теперь можно парсить вывод, подключать к системам мониторинга и т.д.]]>
Компьютерные советы https://linexp.ru?id=4871 Sat, 14 Jun 2025 10:47:23 GMT
<![CDATA[Настройка строки приглашения в Bash]]>
Ее можно, при желании изменить под свои потребности.

Информация, которая отображается в этой строке хранится в переменной окружения PS1 и ее, естественно можно изменить.

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

[Wed Jan 12 15:17]user@hostname:/full/path$

нужно переменной PS1 присвоить следующее значение:

export PS1='[\d \A]\u@\h:\w\$'

Однако стоит учесть, что изменение переменной PS1 таким образом сработает только для текущей сессии. Если нужно изменения внести навсегда, то для этого необходимо поправить значение PS1 в файле ~/.bashrc



Список управляющих последовательностей

\a Звуковой сигнал (ASCII-код 007)

\d Дата в формате "День, месяц, число", например, Срд, Окт, 17.

\e Символ escape (ASCII-код 033)

\h Короткое имя хоста (hostname) до первой точки

\H Имя хоста

\t Текущее время в 24-часовом формате: HH:MM:SS (часы:минуты:секунды)

\T Текущее время в 12-часовом формате: HH:MM:SS

\@ Текущее время в 12-часовом формате am/pm

\A Текущее время в 24-часовом формате: HH:MM

\u Имя текущего пользователя

\w Полное имя текущего рабочего каталога (начиная с корня)

\W Текущий рабочий каталог (без указания пути)

\$ Символ #, если оболочка запущена суперпользователем, и символ $, если оболочка запущена обычным пользователем.

\n Новая строка (перевод строки)

\s Имя оболочки

\# Текущий номер команды

\! Порядковый номер данной команды в истории команд

\\ backslash

\nnn Непечатный символ, имеющий восьмеричный код nnn (к примеру esc)

\[ Начало последовательности непечатаемых символов

\] Конец последовательности непечатаемых символов
]]>
Компьютерные советы https://linexp.ru?id=4870 Sat, 14 Jun 2025 10:46:35 GMT
<![CDATA[И снова OpenOffice. Настройка замены прописных букв на строчные по хоткею.]]>


Для этого идем в меню “Сервис” - “Настройка” - “Клавиатура” и далее в перечне "Категория" выбрать “Макросы OpenOffice.org” - “share” - “Capitalise”

в окне “Комбинации клавиш” выбираем Shift+F3 и нажимаем “Заменить”.



Вполне вероятно, что после этого попытка сменить регистр будет не работать, а выдавать ошибку. Это связано с тем, что для работы данного скрипта необходим BeanShell, который по умолчанию вместе с OpenOffice не ставится, по крайней мере в Ubuntu 10.04. По этому доставляем нужные пакеты:

$ sudo aptitude install openoffice.org-officebean libplexus-bsh-factory-java



После окончания установки перезапускаем OpenOffice и проверяем как это все работает.
]]>
Компьютерные советы https://linexp.ru?id=4869 Sat, 14 Jun 2025 10:45:50 GMT
<![CDATA[Настройка OpenVPN]]> OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL. Для обеспечения безопасности управляющего канала и потока данных, OpenVPN использует библиотеку OpenSSL. Благодаря этому задействуется весь набор шифров, доступных в данной библиотеке. OpenVPN используется на операционных системах Solaris, OpenBSD, FreeBSD, NetBSD, GNU/Linux, Apple Mac OS X, QNX и Microsoft Windows. OpenVPN проводит все сетевые операции через TCP, либо UDP порт. Также возможна работа через большую часть прокси серверов, через NAT и сетевые фильтры. Сервер может быть настроен на назначение сетевых настроек клиенту. Например: IP адрес, настройки маршрутизации и параметры соединения. Также возможно использование библиотеки компрессии LZO, для сжатия потока данных.

Использование в OpenVPN стандартных протоколов TCP и UDP позволяет ему стать альтернативой IPsec в ситуациях, когда Интернет-провайдер блокирует некоторые VPN протоколы.

Настройка OpenVPN


Создаём конфигурационный файл для сервера /etc/openvpn/server.conf:

port 443

proto tcp

dev tun

ca /etc/openvpn/ca.crt

cert /etc/openvpn/server.crt

key /etc/openvpn/server.key

dh /etc/openvpn/dh1024.pem

server 10.10.10.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "route 10.0.0.0 255.255.255.0"

;duplicate-cn

keepalive 10 120

;cipher BF-CBC # Blowfish (default)

;cipher AES-128-CBC # AES

;cipher DES-EDE3-CBC # Triple-DES

comp-lzo

user nobody

group nogroup

persist-key

persist-tun

status openvpn-status.log

log-append openvpn.log

verb 4

mute 20

client-to-client



Комментируем файл конфигурации:

Указываем, на каком порту принимать соединения:

port 443



Указываем протокол (tcp или udp):

proto tcp



Указываем, что именно будем инкапсулировать в туннеле (ethernet фреймы — tap или ip пакеты — tun)

dev tun



Прописываем пути к ключам и сертификатам:

ca /etc/openvpn/ca.crt

cert /etc/openvpn/test.crt

key /etc/openvpn/test.key

dh /etc/openvpn/dh1024.pem



Выделяем внутренний диапазон адресов для VPN:

server 10.10.10.0 255.255.255.0



В какой файл будем записывать выданные для VPN адреса?:

ifconfig-pool-persist ipp.txt



Прописываем на клиенте маршрут до домашней сети (той которая за сервером):

push "route 192.168.7.0 255.255.255.0"



Пинговать каждые 10 секунд, если хост не отвечает в течении 120 секунд, считать его недоступным:

keepalive 10 120



Разрешить сжатие пакетов:

comp-lzo



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

user nobody

group nogroup



указывает не перечитывать файлы ключей при перезапуске туннеля.

persist-key



данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.

persist-tun



Уровень подробности логов (от 0 до 9):

verb 4



Не писать в логи повторяющиеся сообщения:

mute 20



Разрешить пересылку пакетов между клиентами:

client-to-client



Создание ключей и сертификатов

Теперь необходимо создать ключи и сертификаты для шифрования и авторизации. Соответствующие скрипты для этого находятся в папке /usr/share/doc/openvpn/examples/easyrsa/2.0 для Ubuntu server 12.04 или /usr/share/easy-rsa для Ubuntu server 14.04

Переходим в каталог со скриптами и создаём CA (авторитетный сертификат):

#. ./vars

#./clean-all

#./build-ca



Теперь создадим сертификат и приватный ключ для сервера:

#./build-key-server server



Создаём ключ для клиента (если клиентов несколько, процедуру придётся повторить):

#./build-key client1



Примечание: для каждого клиента должно быть указано своё уникальное имя (в

данном случае client1).



Генерируем параметры Диффи-Хеллмана:

#./build-dh



Помещаем следующие файлы в директорию /etc/openvpn/

ca.crt

server.crt

dh1024.pem

server.key



Настройка клиента OpenVPN

Конфигурационный файл клиентской машины /etc/openvpn/client.conf будет выглядеть следующим образом:



remote XX.XX.XX.XX 443

client

dev tun

proto tcp

resolv-retry infinite # this is necessary for DynDNS

nobind

user nobody

group nogroup

persist-key

persist-tun

ca /etc/openvpn/ca.crt

cert /etc/openvpn/client1.crt

key /etc/openvpn/client1.key

comp-lzo

verb 4

mute 20



Теперь необходимо скопировать с сервера в папку /etc/openvpn/ сгенерированные

клиентские ключи и авторитетный сертификат сервера:

ca.crt

client1.crt

client1.key



После этого можно запускать клиент OpenVPN и проверять связь с сервером.



Настройка OpenVPN в режиме моста



Иногда приведенной ранее конфигурации не достаточно. Самый простой пример — клиенты должны получать адреса из внутренней сети за OpenVPN.



В таком случае настройка сервера OpenVPN незначительно меняется.



Для начала необходимо установить bridge-utils

# apt-get install bridge-utils



Далее, в каталоге /etc/openvpn создаем скрипты со следующим содержимым:

bridge-start.sh




#!/bin/bash

br="br0"

tap="tap0"

eth="eth0"



eth_ip=`ifconfig $eth| grep Mask| awk '{print $2}'| awk -F : '{print $2}'`

eth_netmask=`ifconfig $eth| grep Mask| awk '{print $4}'| awk -F : '{print $2}'`

eth_broadcast=`ifconfig $eth| grep Mask| awk '{print $3}'| awk -F : '{print $2}'`

gw=`route |grep ^default|awk '{print $2}'`



openvpn --mktun --dev $tap



brctl addbr $br

brctl addif $br $eth



brctl addif $br $tap





ifconfig $tap 0.0.0.0 promisc up



ifconfig $eth 0.0.0.0 promisc up



ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

route add default gw $gw



bridge-stop.sh



#!/bin/sh

br="br0"

tap="tap0"

eth="eth0"



gw=`route |grep ^default|awk '{print $2}'`

eth_ip=`ifconfig $br| grep Mask| awk '{print $2}'| awk -F : '{print $2}'`

eth_netmask=`ifconfig $br| grep Mask| awk '{print $4}'| awk -F : '{print $2}'`

eth_broadcast=`ifconfig $br| grep Mask| awk '{print $3}'| awk -F : '{print $2}'`



ifconfig $br down

brctl delbr $br



openvpn --rmtun --dev $tap



ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast

route add default gw $gw



Далее создаем файл конфигурации для сервера /etc/openvpn/server.conf



port 443

proto tcp

dev tun0

ca ca.crt

cert server.crt

key server.key

dh dh2048.pem

server-bridge 192.168.20.177 255.255.255.0 192.168.20.10 192.168.20.20

keepalive 10 120

cipher BF-CBC

comp-lzo

user nobody

group nogroup

persist-key

persist-tun

verb 4

mute 20

client-to-client

up /etc/openvpn/bridge-start.sh

down /etc/openvpn/bridge-stop.sh



По сравнению с прошлым файлом конфигурации изменения были минимальны:

dev tun0 – используем сетевой интерфейс типа tun

server-bridge 192.168.20.177 255.255.255.0 192.168.20.10 192.168.20.20 – где

192.168.20.177 – IP-адрес сервера OpenVPN

255.255.255.0 – маска сети

192.168.20.10 начальный адрес диапазона для клиентов OpenVPN

192.168.20.20 – конечный адрес диапазона для клиентов OpenVPN



up /etc/openvpn/bridge-start.sh – скрипт создания бриджа при старте сервиса OpenVPN

down /etc/openvpn/bridge-stop.sh – скрипт отключения бриджа при остановке сервиса OpenVPN



Файл конфигурации клиента меняется только в описании используемого интерфейса.

Вместо dev tap нужно прописать dev tun0



OpenVPN в режиме bridge и VMWare ESXi

Если сервер OpenVPN развернут на ESXi и там настроен бридж, то, скорее всего, по умолчанию ничего не заработает. Необходимо на виртуальном свиче, к которому подключен интерфейс br0 включить promiscuous mode

https//linexp.ru/uploads/images/stories/articles/ovpn-esxi.png]]>
Компьютерные советы https://linexp.ru?id=4868 Sat, 14 Jun 2025 10:44:44 GMT
<![CDATA[Псевдо-VPN при помощи проброса портов по ssh]]>


Для начала делаем авторизацию по ключу на сервере-шлюзе. Подробнее смотреть http://yakim.org.ua/articles/servers/6-sshfs.html



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

ssh -N -L 2080:resource.localdomain:80 user@officegateway



Разберем эту строку:

-N — установить соединение не открывая консоль

-L 2080:resource.localdomain:80 — локальный порт 2080 пробросить на компьютер внутри сети resource.localdomain на порт 80

Значение локального порта нужно ставить высоким. На привилегированные порты можно настроить проброс только с правами root.



После этого осталось только в браузере открыть ссылку

http://localhost:2080

и мы получаем доступ к ресурсу внутри сети.

При чем соединение будет вполне безопасное, так как шифруется внутри ssh-соединения.



Для автоматизации всего этого можно написать скрипт.



#/bin/sh

#Узнаем, какой у нас браузер по умолчанию

browser=`ls -l /etc/alternatives/x-www-browser |awk '{print $10}'`

#Смотрим, не было ли раньше установлено соединение

is_connect=`netstat -lnp| grep 2080`



wmbrowser=`echo $browser| awk -F/ '{print $4}'`



if [ "$is_connect" = "" ];

then

# Если соединение еще не установлено - устанавливаем

ssh -N -L 2080:resource.localdomain:80 user@officegateway &

fi;



#Открываем в браузере ссылку

$browser http://localhost:2080

# И если окно браузера неактивное — делаем его активным.

wmctrl -a $wmbrowser



Теперь при запуске этого скрипта сразу откроется нужная страница на нужном сервере. У себя я его вообще на хоткей повесил.



Если рабочая станция под виндой, это все тоже можно реализовать при помощи Putty]]>
Компьютерные советы https://linexp.ru?id=4867 Sat, 14 Jun 2025 10:42:31 GMT
<![CDATA[Дополнительные настройки Nagios]]>
Настройка выполнения внутренних команд



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

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

В файле /etc/nagios3/nagios.cfg установим значение параметра check_external_commands в 1. Этим мы разрешим выполнение внутренних команд.

check_external_commands=1



Далее создаем файл:

# touch /var/lib/nagios3/rw/nagios.cmd



И далее по очереди вводим команды:



dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw

dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3

chown nagios:www-data /var/lib/nagios3/rw/nagios.cmd



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



Теперь перезапускаем сервис Nagios

# service nagios3 restart



С этого момента мы можем без проблем перепланировать время ближайшей проверки сервиса.


Настройка почтовых уведомлений


В файлах конфигурации Nagios есть настройка отсылки уведомлений в случае проблем с хостами или сервисами.

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

В файле /etc/nagios3/conf.d/contacts_nagios2.cfg определим контакт (по умолчанию root) и в поле email пропишем адрес получателя, например, user@study.local



В описании контакта есть поля, в которых описано, когда посылать уведомления о состоянии хоста и сервиса.

host_notification_options — значение по умолчанию «d, r»

Возможные варианты значений:

d — уведомлять о статусе DOWN

u — уведомлять о статусе UNREACHABLE

r — уведомлять о поднятии хоста (первое появление статуса UP),

f — уведомлять о начале и окончании «мигающего» состояния

s — уведомлять о начале и окончании запланированного выключения

n — не отсылать никаких уведомлений



service_notification_options — значение по умолчанию «w,u,c,r»

Возможные варианты значений:

w — уведомлять о статусе WARNING service states,

u — уведомлять о статусе UNKNOWN service states,

c — уведомлять о статусе CRITICAL service states,

r — уведомлять о поднятии сервиса (первое появление статуса OK)

f — уведомлять о начале и окончании «мигающего» состояния

n — не отсылать никаких уведомлений



К сожалению, утилита sendmail, котораяя используется для отсылки уведомлений в настройках по умолчанию, позволяет использование только того почтового сервера, который установлен на той же машине, что и сам Nagios. Это не всегда удобно. По этому изменим конфигурацию и воспользуемся внешним сервером.



Для этого установим дополнительную утилиту sendemail.

# apt-get install sendemail



Так же будут необходимы дополнительные библиотеки для работы по шифрованным протоколам. Установим и их

# apt-get install libio-socket-ssl-perl libnet-ssleay-perl



Далее изменим сами команды отсылки уведомлений. Для этого в файле /etc/nagios3/commands.cfg найдем описание команд и изменим их

Для notify-host-by-email пропишем:

command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -f nagios@tudy.local -t $CONTACTEMAIL$ -u "NAGIOS WARNING" -s mail.study.local:587 -o tls=yes -xu user1@study.local -xp user1 -m



Для notify-service-by-email пропишем:

command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/sendemail -f nagios@tudy.local -t $CONTACTEMAIL$ -u "NAGIOS WARNING" -s mail.study.local:587 -o tls=yes -xu user1@study.local -xp user1 -m





Теперь подробнее о параметрах командной строки утилиты sendemail:

-f — адрес отправителя

-t — адрес получателя

-u — тема письма

-s — адрес почтового сервера и его SMTP-порт (если порт не указать явно, то будет использоваться 25)

-xu — логин на почтовый сервер

-xp — пароль на почтовый сервер



Теперь после перезапуска Nagios мы сможем получать уведомления на указанный почтовый ящик.

Настройка дополнительных действий при проверках

Кроме непосредственно самих проверок, Nagios может в автоматическом режиме выполнять какие-либо действия. Например перезапустить определенный сервис в случае его недоступности.

Для этого служит такой объект Nagios, как handler. Он может привязываться либо к хосту, либо к сервису.

В каталоге /etc/nagios3/conf.d создадим файл event-handlers.cfg и пропишем в него:



define command {

command_name restart-http

command_line /usr/share/nagios3/plugins/eventhandlers/repair_http.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$

}



Далее создадим скрипт /usr/share/nagios3/plugins/eventhandlers/repair_http.sh и запишем в него:



#!/bin/sh

# What state is the HTTP service in?

case "$1" in

OK)

;;



WARNING)

;;



UNKNOWN)

;;



CRITICAL)

case "$2" in

SOFT)

case "$3" in



3)

/etc/init.d/apache2 restart

;;

esac

;;

HARD)

# echo -n "Restarting HTTP service..."

/etc/init.d/apache2 restart

;;

esac

;;

esac

exit 0



И делаем этот скрипт исполняемым:

# chmod +x /usr/share/nagios3/plugins/eventhandlers/repair_http.sh



Теперь нужно подключить данный хендлер к мониторингу нужного сервиса.

Для этого в файле описания сервисов services_nagios2.cfg в описание проверки HTTP добавляем строку

event_handler restart-http



То есть получаем следующую запись



# check that web services are running

define service {

hostgroup_name http-servers

service_description HTTP

check_command check_http

use generic-service

notification_interval 0 ; set > 0 if you want to be renotified

event_handler restart-http

}



Теперь при падении веб-сервера он перезапустится автоматически.
]]>
Компьютерные советы https://linexp.ru?id=4866 Sat, 14 Jun 2025 10:41:47 GMT
<![CDATA[Мониторинг серверов по SNMP при помощи Nagios]]> SNMP — это протокол управления сетями связи на основе архитектуры UDP.

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

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

SNMP не определяет, какую информацию управляемая система должна предоставлять. Наоборот, SNMP использует расширяемую модель, в которой доступная информация определяется Базами Управляющей Информации (MIB). Базы Управляющей Информации описывают структуру управляющей информации устройств. Они используют иерархическое пространство имён, содержащее уникальный идентификатор объекта (OID). Грубо говоря, каждый уникальный идентификатор объекта идентифицирует переменную, которая может быть прочитана или установлена через SNMP.

Иерархия MIB может быть изображена как дерево с безымянным корнем, уровни которого присвоены разными организациями. На самом высоком уровне MIB OIDы принадлежат различным организациям, занимающимся стандартизацией, в то время как на более низком уровне OIDы выделяются ассоциированными организациями. Эта модель обеспечивает управление на всех слоях сетевой модели OSI, так как MIBы могут быть определены для любых типов данных и операций.

Установка SNMP

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

#apt-get install snmp snmpd



Теперь нужно настроить наш сервис SNMP. Для этого в файл /etc/snmp/snmpd.conf запишем

syslocation: test, Ukraine

syscontact admin@yakim.org.ua

#community #hosts allowed

rwcommunity private 192.168.0.30/32

rocommunity public 192.168.0.0/24

disk /

disk /home



Обратите внимание, мы описываем подсети из которых разрешен доступ в различных режимах (чтение или чтение и запись), а так же указываем пароль для этого доступа (у нас это private и public). Естественно в реальных условиях пароль не должен быть настолько простым.



Кроме этого необходимо внести небольшие изменения в файл /etc/default/snmpd. В нем параметр SNMPDOPTS нужно привести к следующему виду

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf'



То есть мы явно прописываем в нем файл конфигурации демона SNMP. Теперь нужно перезапустить сервис:

#service snmpd restart



Конфигурирование Nagios для работы с SNMP



Сделаем проверку свободного места на диске.

Создадим группу мониторинга дискового пространства по snmp. Для этого добавим описание сервиса в файл /etc/nagios3/conf.d/services_nagios2.cfg

define service {

hostgroup_name snmp disk

service_description snmpdisk

check_command snmp_disk!public!1!!50!!90

use generic-service

notification_interval 0 ; set > 0 if you want to be renotified

}



В этом описании проверки в строке check_command указываем пароль доступа к сервису SNMP, номер диска, который мы проверяем, и величину свободного места в процентах для параметров warning и critical.

Далее добавим описание группы мониторинга в файл /etc/nagios3/conf.d/hostgroups_nagios2.cfg

define hostgroup {

hostgroup_name snmp disk

alias SNMP disk

members my_server

}



Теперь перечитаем конфигурацию Nagios.

https//linexp.ru/uploads/images/stories/articles/nagios1/nag2-1.png

Как мы видим проверка места на диске работает и возвращает правильные результаты. В данном случае мы получили предупреждение.

Аналогичным образом можно контролировать любой сервис и устройство, которые умеют отдавать о себе информацию по SNMP.]]>
Компьютерные советы https://linexp.ru?id=4865 Sat, 14 Jun 2025 10:40:09 GMT
<![CDATA[Мониторинг сетевых сервисов при помощи Nagios]]> Nagios — это программа мониторинга компьютерных систем и сетей с открытым кодом. Предназначена для наблюдения, контроля состояния вычислительных узлов и служб, оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу. Nagios первоначально была создана под именем Netsaint, разработана Этаном Галстадом. Он же поддерживает и развивает систему сегодня, совместно с командой разработчиков, которые занимаются как официальными, так и неофициальными плагинами.

Первоначально Nagios была разработана для работы под Linux, но она также хорошо работает и под другими ОС, такими как Sun Solaris, FreeBSD, AIX и HP-UX.

Возможности Nagios очень широки.

Эта система может

Мониторить сетевые службы (SMTP, POP3, HTTP, NNTP, ICMP, SNMP)

Мониторить состояние хостов (загрузка процессора, использование диска, системные логи) в большинстве сетевых операционных систем

Простая архитектура модулей расширений (плагинов) позволяет, используя любой язык программирования по выбору (Shell, C++, Perl, Python, PHP и другие), легко разрабатывать свои собственные способы проверки служб

В качестве уведомлений системному администратору поддерживается отправка оповещений в случае возникновения проблем со службой или хостом (с помощью почты, пейджера, SMS, или любым другим способом, определенным пользователем через модуль системы)

так же есть возможность организации совместной работы нескольких систем мониторинга с целью повышения надёжности и создания распределенной системы мониторинга

Установка Nagios

Для работы Nagios необходим веб-сервер, который мы и установим:

# apt-get install apache2

Установка сервера Nagios производится командой:

#apt-get install nagios3 nagios-plugins-extra

Обратите внимание, что кроме этих двух пакетов по зависимостям устанавливается еще довольно много дополнительных программ и сервисов.

https//linexp.ru/uploads/images/stories/articles/nagios1/nag1.png

В процессе настройки сервера Nagios будет предложено ввести пароль для учетной записи nagiosadmin для доступа к консоли.

После окончания установки и настройки всех компонентов можно зайти на веб-интерфейс Nagios по адресу http://server-ip/nagios3 и после перехода на закладку “Service Details” мы увидим информацию о сервере, который добавляется автоматически при установке — локальном сервере, на который установлен Nagios.

https//linexp.ru/uploads/images/stories/articles/nagios1/nag2.png

Добавление нового хоста в систему мониторинга

Для добавления нового хоста следует создать его файл конфигурации. Настроим мониторинг сервера, к примеру, 192.168.0.30. Для этого создадим файл /etc/nagios3/conf.d/192.168.0.30.cfg

и запишем в него



define host {

host_name my_server

alias my_server

address 192.168.0.30

use generic-host

}



Кроме этого необходимо описать какие сервисы на сервере следует мониторить.

Описание того, какие сервисы мониторятся на серверах находится в файле /etc/nagios3/conf.d/hostgroups_nagios2.cfg

Откроем этот файл и добавим наш сервер в группу ssh-servers.



define hostgroup {

hostgroup_name http-servers

alias HTTP servers

members localhost, my_server

}



После этих изменений следует дать команду сервису Nagios перечитать конфигурацию

#service nagios3 reload



Теперь, после обновления веб-страницы Nagios мы увидим информацию о нашем сервере, который мы добавили в систему мониторинга.

https//linexp.ru/uploads/images/stories/articles/nagios1/nag3.png

Добавление мониторинга новых сервисов

Описание всех сервисов, которые могут мониториться в сети находятся в файле /etc/nagios3/conf.d/services_nagios2.cfg. По умолчанию их там всего два — HTTP и SSH. Естественно этого не достаточно для полноценного мониторинга. По этому мы сейчас рассмотрим, как добавить новые сервисы. Для примера настроим мониторинг почтового сервера, то есть будем проверять то, что наш сервер отвечает на 25 порту по протоколу SMTP.

Откроем файл /etc/nagios3/conf.d/services_nagios2.cfg и добавим в него описание нового сервиса:



define service {

hostgroup_name smtp-servers

service_description smtp

check_command check_smtp

use generic-service

notification_interval 0 ; set > 0 if you want to be renotified

}



Далее необходимо включить проверку данного сервиса на нашем сервере. Для этого в файле /etc/nagios3/conf.d/hostgroups_nagios2.cfg необходимо описать новую группу и включить в нее наш сервер



define hostgroup {

hostgroup_name smtp-servers

alias SMTP servers

members my_server

}

https//linexp.ru/uploads/images/stories/articles/nagios1/nag4.png

После перезагрузки конфигурации Nagios в веб-интерфейсе можно будет увидеть результаты мониторинга сервиса SMTP.

Для того, что бы выяснить как описывается команда проверки разных сервисов, стоит посмотреть содержимое файлов в /etc/nagios-plugins/config. Там уже есть готовые проверки для большого количества разнообразных сервисов.
]]>
Компьютерные советы https://linexp.ru?id=4864 Sat, 14 Jun 2025 10:38:32 GMT
<![CDATA[Символы форматирования в OpenOffice Writer]]>
На самом деле это не просто серые поля, а служебные символы форматирования. Их, конечно, можно и по одному поудалять, но проще будет просто их не показывать.

Для этого в меню OpenOffice открываем “Сервис”-”Параметры” далее слева в дереве настроек переходим в “OpenOffice.org Writer”-”Знаки форматирования” и тут отключаем отображение неразрывных пробелов, мягких переносов и вообще всего, что нам мешает.

Теперь документ будет выглядеть привычно.]]>
Компьютерные советы https://linexp.ru?id=4863 Sat, 14 Jun 2025 10:35:52 GMT
<![CDATA[Настройка сервера календарей и контактов]]>
CardDav — это клиент-серверный протокол, разработанный для того, что бы сделать возможной совместный удаленный доступ к данным контактов на сервере. Протокол CardDav основан на протоколе WebDAV, который, в свою очередь, использует HTTP.

CalDAV — это расширение календаря для протокола WebDAV, является стандартным протоколом и позволяет клиенту получить доступ к информации о планируемых событиях на удаленном сервере. Этот протокол расширяет спецификацию WebDAV и использует формат iCalendar. Он разрешает множественный клиентский доступ к информации, таким образом, что становится возможным совместное планирование и обмен информацией. Многие серверные и клиентские приложения поддерживают этот протокол.

Для удобства работы с расписаниями и адресными книгами будет рассмотрен следующий функционал сервера:

Работа по протоколам CalDAV и CardDAV

Веб-интерфейс для доступа к календарю и адресной книге

Логины и пароли пользователей берутся из настроек почтового сервера.

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

Davical — CardDAV и CalDAV-сервер

CalDavZap — веб-интерфейс для сервера календарей

CardDavMate — веб-интерфейс для адресной книги.





Установка и настройка Davical




Устанавливаем необходимый набор пакетов программ:

# apt-get install install postgresql apache2 php5 php5-pgsqll davical php5-curl php5-imap



После установки нужно сделать небольшую настройку postrgesql. Открываем /etc/postgresql/9.1/main/pg_hba.conf

Комментируем строку

local all postgres peer



И добавляем две другие

local davical davical_app trust
local davical davical_dba trust



После чего перезапускаем postgresql

# service postgresql restart



Далее нужно выполнить скрипт, который создаст нужную базу данных

# su postgres -c /usr/share/davical/dba/create-database.sh



Вывод будет примерно такой



Supported locales updated.

Updated view: dav_principal.sql applied.

CalDAV functions updated.

RRULE functions updated.

Database permissions updated.

NOTE

====

* You will need to edit the PostgreSQL pg_hba.conf to allow the

'davical_dba' database user access to the 'davical' database.



* You will need to edit the PostgreSQL pg_hba.conf to allow the

'davical_app' database user access to the 'davical' database.



* The password for the 'admin' user has been set to 'co/e9Ap3'



Thanks for trying DAViCal! Check in /usr/share/doc/davical/examples/ for

some configuration examples. For help, visit #davical on irc.oftc.net.



Смотрим на него внимательно. Там будет админский логин и пароль в веб-интерфейс davical



Создадим файл конфигурации /etc/davical/config.php




$c->authenticate_hook['call'] = 'IMAP_PAM_check';

$c->authenticate_hook['config'] = array(

'imap_url' => '{davical.local:993/imap/tls/novalidate-cert}',

);

include('/usr/share/davical/inc/drivers_imap_pam.php');



$c->domain_name = 'davical.local';

$c->sysaddr = 'davical';

$c->system_name = 'DAViCal CalDAV Server';



$c->admin_email = 'admin@davical.local';

$c->pg_connect[] = 'dbname=davical user=davical_app';

$c->default_locale = "uk_UA";

$c->use_old_sync_response_tag = true;



?>



Обратите внимание, на строку imap_url. Судя по их вики http://davical.dhits.nl тут предусматривается несколько возможных вариантов:

{localhost:143/imap/}

{localhost:143/imap/tls/}

{example.com:993/imap/ssl/}

{example.com:143/imap/tls/novalidate-cert}

Так вот — все это работает только в том случае, если в конце строки НЕ СТАВИТЬ “/”

После установки самого сервера переходим к установке веб-интерфейсов.



CalDavZap — установка и настройка.

Скачиваем архив программы со страницы http://www.inf-it.com/open-source/clients/caldavzap/

И распаковываем его в /var/www

Открываем его файл конфигурации и правим в нем строку globalNetworkCheckSettings

var globalNetworkCheckSettings={href: 'http://davical.local/caldav.php/', hrefLabel: null, additionalResources: [], forceReadOnly: null, showHeader: true, settingsAccount: true, timeOut: 30000, lockTimeOut: 10000, delegation: false, backgroundCalendars: [], ignoreAlarms: false}



Теперь нужно настроить авторизацию в CalDavZap

Для этого делаем следующие настройки:

В файле auth/config.inc в двух местах в поле href нужно прописать имя нашего сервера. При чем остальную часть пути не трогать. То есть у нас должны получиться такие строки:

'href'=>'http://davical.local/caldav.php/'.$_SERVER['PHP_AUTH_USER'].'/',

'href'=>'http://davical.local/caldav.php/resource/',



Кроме этого в файле auth/plugins/generic_conf.inc меняем значение в одной строке

$pluginconfig['base_url']='http://davical.local;



Настройка Apache

Осталось последнее действие — настроить веб-сервер.

Создаем файл /etc/apache2/sites-available/davical и записываем в него



DocumentRoot /usr/share/davical/htdocs

DirectoryIndex index.html index.php

ServerName davical.local

Alias /images/ /usr/share/davical/htdocs/images/

Alias /cal /var/www/caldavzap/



AllowOverride None

Order allow,deny

Allow from all



php_value include_path /usr/share/awl/inc

php_value magic_quotes_gpc 0

php_value register_globals 0

php_value error_reporting "E_ALL & ~E_NOTICE"

php_value default_charset "utf-8"





Создаем ссылку на этот файл в /etc/apache2/sites-enabled/

И перезапускаем Apache



Сейчас у нас стали доступны два веб-интерфейса

http://davical.local — веб-интерфейс самого Davical, где можно делать или общесистемные настройки, если есть админские права, или создавать себе дополнительные календари или адресные книги, если права обычного пользователя.

/uploads/images/stories/articles/dav/davical-admin.png

Рекомендуется сразу же зайти сюда как admin и сменить тот пароль, который мы запомнили в самом начале при установке Davical

http://davical.local/cal — веб-интерфейс нашего календаря

/uploads/images/stories/articles/dav/caldavzap.png

Настройка почтовых клиентов для работы с DAV-сервером

На рабочих станциях под управлением Linux для подключения DAV-сервера лучше использовать Evolution.

Перейдя на закладку «Календарь» добавим новый календарь со следующими настройками:

/uploads/images/stories/articles/dav/evolution-1.png

Ссылка для подключения календаря формируется следующим образом:

http://davical.local/caldav.php/USERNAME/calendar/

После синхронизации у нас будет доступен календарь следующего вида

/uploads/images/stories/articles/dav/evolution-2.png

Добавление адресной книги производится аналогичным образом на закладке «Контакты».

Ссылка для ее подключения формируется следующим образом:

http://davical.local/caldav.php/USERNAME/addresses/

https//linexp.ru/uploads/images/stories/articles/dav/evolution-contact1.png

Для подключения адресной книги и календаря к Microsoft Outlook можно использовать плагин cFos Outlook DAV http://www.cfos.de/ru/download/download.htm]]>
Компьютерные советы https://linexp.ru?id=4862 Sat, 14 Jun 2025 10:34:21 GMT
<![CDATA[Перевод веб-интерфейсов для DAV-серверов]]>
Мне-то, по большому счету, все равно, но кроме меня им пользуются и другие. И они, как оказалось, английским владеют очень слабо.

По этому интерфейс обеих программ был переведен.

В качестве языка перевода традиционно был выбран украинский.



Веб-интерфейс для сервера календарей CalDavZap.



Скачать файл локализации


После скачивания файла нужно им заменить localization.js в корневом каталоге веб-интерфейса.

После этого в файле конфигурации config.js нужно изменить строки:

var globalInterfaceLanguage='uk_UA';

А так же к концу строки сортировки дописать украинский алфавит

var globalSortAlphabet=' 0123456789AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌPQRŔŘSŚŠȘșŞşẞ

TŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽaàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõōpqrŕřsśšßtťuùúûüűůūvwxyýÿzźżž

АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯЬабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';

Работает начиная с версии 0.10.0.1

Как вариант, можно скачать с сайта разработчика новую версию 0.10.0.2, в которую этот перевод уже включен

http://www.inf-it.com/open-source/clients/caldavzap/



Веб-интерфейс для сервера адресных книг CardDavMate




Скачать файл локализации

После скачивания файла нужно им заменить localization.js в корневом каталоге веб-интерфейса.

После этого в файле конфигурации config.js нужно изменить строки:

var globalInterfaceLanguage='uk_UA';

А так же к концу строки сортировки дописать украинский алфавит

var globalSortAlphabet=' 0123456789AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌPQRŔŘSŚŠȘșŞşẞ

TŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽaàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõōpqrŕřsśšßtťuùúûüűůūvwxyýÿzźżž

АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯЬабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';

Работает начиная с версии 0.11.1

Скоро разработчики обещали выпустить версию 0.12, в которую он войдет.

А пока качать старую версию http://www.inf-it.com/open-source/clients/carddavmate/]]>
Компьютерные советы https://linexp.ru?id=4861 Sat, 14 Jun 2025 10:10:48 GMT
<![CDATA[Мультиплексирование терминала при помощи tmux]]>
/uploads//images/stories/articles/tmux/tmux1.png

Все действия выполняются при помощи горячих клавиш. Вначале так называемая bind key, а потом клавиша команды. По умолчанию bind key это ctrl-b, но это значение можно переопределить в файле конфигурации tmux.



Теперь небольшой хелп по горячим клавишам (Не забывайте о bind key). В принципе можно было остановиться на первой строчке, ведь там все будет описано.

Справка по командам — ?

Увести tmux в фон — d

Создать новое окно — c

Следующее окно — n

Предыдущее окно — p

Выбрать окно под соответствующим номером — 1/2/3/4/5/6/7/8/9/0

Предыдущее окно — l

Выбрать окно из списка — w

Выбрать сессию — s

Разделить окно вертикально — "

Разделить окно горизонтально — %

Листать "слои" — Space(пробел)

Удалить фрейм — !

Переместить фрейм вверх — {

Переместить фрейм вниз — }

Следущий фрейм — o

Изменить размеры фрейма Alt + Стрелки

Удалить окно — &

Обновить клиент — r

Часы — t

Переименовать окно — ,

Изменить номер окна — .



Если данные комбинации клавиш кажутся неудобными их можно переопределить в файле конфигурации ~/.tmux.conf

unbind C-b # Отключим bind key по умолчанию

set -g prefix C-q # Новый bind key - Ctrl-z

bind-key -n C-n next # Следующий таб

bind-key -n C-p prev # Предыдущий таб

set -g base-index 1 # Начинать отсчёт окон с 1 а не с 0



# Переход на окно по F1-F10

bind-key -n F1 select-window -t 1

bind-key -n F2 select-window -t 2

bind-key -n F3 select-window -t 3

bind-key -n F4 select-window -t 4

bind-key -n F5 select-window -t 5

bind-key -n F6 select-window -t 6

bind-key -n F7 select-window -t 7

bind-key -n F8 select-window -t 8

bind-key -n F9 select-window -t 9

bind-key -n F10 select-window -t 0



unbind % # Выключаем клавишу % для горизонтального разбиения окна

bind H split-window -h # Назначаем клавишу H

unbind '"' # Выключаем клавишу " для вертикального разбиения окна

bind V split-window -v # Назначаем клавишу V



Все возможные параметры можно узнать прочитав man tmux]]>
Компьютерные советы https://linexp.ru?id=4860 Sat, 14 Jun 2025 10:08:45 GMT
<![CDATA[Создание отчетов о работе почтового сервера на основе Postfix]]>
1. Написан на перле и требует доустановки большого количества модулей Perl.

2. Результат выводит только в plain-text и html

3. Дает отчет только о письмах, прошедших через SpamAssassin

4. Не умеет отослать результаты на почту



Этого мне оказалось мало. Хотелось бы видеть отчет и по тем письмам, что были отброшены настройками самого Postfix. Готовой утилиты под мои желания не нашлось, хотя, может быть, я просто плохо искал. В общем пришлось напрячься и заняться велосипедо- и костылестроением.

В результате некоторых усилий и был написан данный скрипт.

В его работе используются:

GNUPlot — для отрисовки гистограмм статистики

Base64 — для кодирования изображения для вставки в html-страницу

Wkhtmltopdf — для создания pdf из html

Mutt — для отсылки отчета этого по почте

И сам скрипт, написан на bash



Обратите внимание! Для работы не подходит версия wkhtmltopdf из репозитория. Ей необходим X-server. Конечно, если вы на сервере готовы установить X-server, то все у вас заработает. Мне такое счастье не нужно. По этому с сайта разработчика нужно скачать готовую статически собранную версию нужной битности. Тогда и X-server будет не нужен



В результате этого скрипта на почту приходят отчеты следующего вида

/uploads/images/stories/articles/mail-report/report.png

Строить отчеты умеет или за день, или за неделю.

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

addr — адрес для отсылки отчетов

MAILFROM — адрес отправителя письма с отчетом

SUBJECT — тема письма

HTML2PDF — путь к бинарнику скачанной верии wkhtmltopdf

log — путь к файлу почтовых логов

old_log — путь к предыдущему файлу почтовых логов (после logrotate)



Кроме этого следующим блоком идут тексты сообщений, которые выводятся в отчете. Их тоже при желании можно сменить.

В функции create_gnuplot генерируется скрипт создания графической части отчета. При помощи минимальных изменений можно переделать гистограмму во что-то другое, что вам более понравится.

Скачать сам скрипт можно ЗДЕСЬ.



Большая просьба ко всем — не ленитесь оставлять комментарии или отписаться в почту по поводу данного скрипта.

Так же прошу учесть, что я далеко не ас в программировании на bash. По этому вменяемую критику с удовольствием приму.]]>
Компьютерные советы https://linexp.ru?id=4859 Sat, 14 Jun 2025 10:07:42 GMT
<![CDATA[Настройка UPS в VMWare ESXi через Ubuntu-сервер]]>
Установка VMWare tools на Ubuntu Server

Если этого не сделать, то корректного выключения виртуалки средствами ESXi просто не получится. Без VMWare tools выключение будет сродни вырубанию питания. И так, ставим VMWare tools.

Переходим в меню «Virtual Machine» — «Install VMware Tools» (или «VM» — «Install VMware Tools»).

Создаем каталог для монтирования образа:

sudo mkdir /mnt/cdrom

Монтируем образ:

sudo mount /dev/cdrom /mnt/cdrom

Распаковываем пакет во временный каталог

tar xzvf /mnt/cdrom/VMwareTools-x.x.x-xxxx.tar.gz -C /tmp/

Переходим туда

cd /tmp/vmware-tools-distrib/

И устанавливаем VMWare tools

sudo ./vmware-install.pl -d

Далее нужно перезагрузить наш сервер.

Если есть еще какие-то виртуальные сервера, то устанавливаем VMWare tools на все.



2. Установка и настройка apcupsd

Для мониторинга UPS чаще всего используется NUT, но так как у нас бесперебойник APC, то воспользуемся утилитой apcupsd, которая значительно проще в настройке. Для начала ее установим:

# apt-get install apache2 apcupsd apcupsd-cgi



Без apache2 и apcupsd-cgi в принципе можно обойтись. Непосредственно для работы они не нужны. Но вот посмотреть состояние UPS через веб-интерфейс приятно, да и быстрее, чем логиниться в консоль сервера и смотреть там. По этому ставим все три пакета.

Теперь нужно соединить UPS кабелем с сервером VMWare ESXi и пробросить USB-устройство на виртуалку с Ubuntu.

/uploads/images/stories/articles/vmware/esxi1.jpg

Обратите внимание! Для того, что бы пробросить по USB UPS на виртуальный сервер, обязательно в устройствах виртуалки должен быть установлен USB контроллер. Если его нет, но вначале необходимо его добавить, а потом перезагрузить виртуалку.

После этого, в списке USB-устройств должен появиться наш UPS. Так, как APC Smart-UPS SC1500 для соединения использует кабель типа serial-to-usb, то у нас устройство будет отображаться следующим образом:

yakim@server:~$ lsusb

Bus 002 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port



После присоединения кабеля в системе должно появиться нужное устройство с именем ttyUSBxxx. У меня это оказалось /dev/ttyUSB0. У вас, естественно, имя может оказаться немного другим. Именно его и будем использовать при настройке apcupsd.

Переходим к настройке apcupsd. Для этого в файле /etc/apcupsd/apcupsd.conf прописываем:

UPSNAME Server-UPS # Тут даем произвольное имя нашему беспередойнику

UPSCABLE smart

UPSTYPE apcsmart

DEVICE /dev/ttyUSB0 #Имя устройства соединения с UPSCABLE



Параметры выключения системы в этом файле настраиваем по собственному усмотрению. У меня это:

BATTERYLEVEL 15

MINUTES 25



Остальные настройки можно оставить по умолчанию.

Проверить доступность UPS можно командой:

$ apcaccess

Если настройки apcupsd правильные, то на выходе мы должны увидеть параметры состояния UPS:

APC : 001,049,1240

DATE : 2013-11-01 13:56:52 +0200

HOSTNAME : backup

VERSION : 3.14.10 (13 September 2011) debian

UPSNAME : Server-UPS

CABLE : Custom Cable Smart

DRIVER : APC Smart UPS (any)

UPSMODE : Stand Alone

STARTTIME: 2013-10-30 12:45:49 +0200

MODEL : Smart-UPS SC1500

STATUS : ONLINE

LINEV : 232.0 Volts

И так далее...

Будет выведено несколько страниц параметров состояния UPS'а



3. Настройка соединения с ESXi Server

На сервере ESXi нужно обязательно включить доступ по SSH, если вы этого не сделали ранее.

Для этого в консоли управления (vSphere Client) перейдем на вкладку "Configuration". Далее выберем пункт "Security Profile" и нажмем "Properties".

/uploads/images/stories/articles/esxi-ssh1-1.jpg

В появившемся списке найдем SSH и, если он не запущен (в колонке «Daemon» прописано не «Running»), то для его конфигурирования нажмем кнопку «Options».

/uploads/images/stories/articles/vmware/esxi-ssh2.jpg

Установим режим запуска сервиса SSH на ESXi и включим его кнопкой Start:

/uploads/images/stories/articles/vmware/esxi-ssh3.jpg

При критическом значении параметров бесперебойника нам будет нужно на сервере ESXi выполнить команду выключения как виртуалок, так и самого сервера. Делать это мы будем по SSH. Так, как все действия будут выполняться в фоновом режиме, то парольная авторизация нас не устраивает. Нужно сделать авторизацию по ключу. Для этого на сервере Ubuntu Генерируем ключ авторизации:

Заходим на свою машину с правами root:

$sudo su

Вводим свой пароль.

Генерируем RSA ключи:

#ssh-keygen -t rsa

Отвечаем на вопросы:

Enter file in which to save the key (/root/.ssh/id_rsa): — соглашаемся на значение по умолчанию.

Enter passphrase (empty for no passphrase): — Оставляем значение пустым. Паролем пользоваться не будем.

Enter same passphrase again: — Снова оставляем значение пустым.

Скрипт создал 2 ключа: приватный и публичный.

Your identification has been saved in /root/.ssh/id_rsa. — секретный приватный ключ для декодирования.

Your public key has been saved in /root/.ssh/id_rsa.pub. — публичный ключ для кодирования.

Будьте внимательны! Ключи нужно генерировать именно для пользователя root, так как именно с правами этого пользователя и работает демон apcupsd.

Сейчас нужно скопировать на ESXi сервер наш публичный ключ:

#ssh-copy-id -i ~/.ssh/id_rsa.pub root@server_ESXi

Обратите внимание! Даже после этого зайти на сервер ESXi без пароля мы не можем. Это связано с тем, что в настройках ssh на ESXi прописан параметр :

AuthorizedKeysFile /etc/ssh/keys-%u/authorized_keys

То есть ключи авторизации хранятся не в домашнем каталоге пользователя, а в специфическом, который прописан в настройках.

Для того, что бы авторизация по ключу все-таки заработала залогинимся на ESXi

$ ssh root@server_ESXi

И скопируем файл с ключами на нужное место

~ # cp /.ssh/authorized_keys /etc/ssh/keys-root/authorized_keys

После этого мы сможем заходить без пароля с сервера Ubuntu на сервер ESXi.

В корне файловой системы сервера виртуализации (хотя это можно сделать и в любом другом каталоге) создадим скрипт выключения всех виртуальных серверов и самого сервера ESXi:

~ # vi ups_down.sh

И запишем в него:

#!/bin/sh

# Получаем ID всех виртуалок

VMID=$(/usr/bin/vim-cmd vmsvc/getallvms | grep ^[0-9] | awk '{print $1}')

# Просматриваем все виртуалки в цикле

for i in $VMID

do

# Получаем их состояние (turned on, off, whatever)

STATE=$(/usr/bin/vim-cmd vmsvc/power.getstate $i | tail -1 | awk '{print $2}')

# Если виртуалка запущена - выключить

if [ $STATE == on ]

then

/usr/bin/vim-cmd vmsvc/power.shutdown $i

fi

done

#Делаем паузу в ожидании, пока виртуалки погаснут

sleep 180

# Теперь выключаем и сам сервер виртуализации.

/sbin/shutdown.sh

/sbin/poweroff



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

~ # chmod +x ups_down.sh



4. Окончательная настройка apcupsd

Остался последний шаг. Заставить apcupsd выполнить скрипт ups_down.sh на сервере ESXi. Для этого открываем файл /etc/apcupsd/apccontrol, ищем в нем:

doshutdown)

echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}

${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"



И в этом блоке заменяем строку

${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"

на

/usr/bin/ssh root@server_ESXi /ups_down.sh

На этом основная настройка закончена. При пропадании питания корректно выключится как сам сервер виртуализации, так и все виртуальные сервера.



5. Настройка веб-интерфейса состояния

По умолчанию веб-интерфейс apcupsd доступен по ссылке:

Пользоваться такой ссылкой не очень удобно. По этому подредактируем файл /var/www/index.html и приведем его к следующему виду:









Здесь мы сделали всего-навсего переадресацию на адрес веб-интерфейса apcupsd.

Теперь при заходе на http://Ubuntu-server/ мы увидим статистику состояния источника бесперебойного питания.

/uploads/images/stories/articles/vmware/apcupsd-web1.jpg

Перейдя по ссылке System можно увидеть подробный статус нашего устройства.

/uploads/images/stories/articles/vmware/apcupsd-web2.jpg]]> Компьютерные советы https://linexp.ru?id=4858 Sat, 14 Jun 2025 10:03:36 GMT <![CDATA[Локальное зеркало для обновлений Ubuntu]]>
Пользоваться этой программой весьма и весьма не сложно.
Для начала выбираем компьютер, на котором будет храниться кеш пакетов и устанавливаем туда Apt-Cacher
$ sudo aptitude install apt-cacher



Потом в файле /etc/default/apt-cacher значение AUTOSTART устанавливаем в 1 и стартуем сервис:

$sudo service apt-cacher start



О более тонкой настройке можно почитать в комментариях к файлу конфигурации /etc/apt-cacher/apt-cacher.conf, но и по умолчанию уже все по минимуму работает.



Осталось настроить клиентские машины для работы с нашим apt-cacher'ом.

Для этого в файле /etc/apt/apt.conf (если этого файла в системе нет — тогда предварительно его создаем) записываем две строчки:

Acquire::http::Proxy "http://192.168.0.1:3142/";

Acquire::Proxy "true";



где 192.168.0.1 — адрес нашего сервера с установленным apt-cacher, а 3142 — это порт, который он по умолчанию слушает.



Теперь даем команду

$sudo aptitude update



После этого все пакеты, которые мы будем закачивать появятся в кеше. И остальные машины, которые настроены на работу с apt-cacher уже не будут загружать их из интернета.]]>
Свободное аппаратное обеспечение https://linexp.ru?id=4857 Sat, 14 Jun 2025 09:59:41 GMT
<![CDATA[Samba и Windows 7]]>
Для того, что бы Windows 7 работать с Samba все таки смогла в ней необходимо сделатть следующие настройки:

Открываем “Панель управления”-”Система и безопасность”-”Локальная политика безопасности”

Заходим в “Параметры безопасности”-”Сетевая безопасность:Минимальная сеансовая безопасность NTLM” (при чем оба варианта — для клиентов и для серверов)

И отключаем тредовать 128-бит шифрование.

Еще необходимо очистить все закешированные пароли.

Это делается в “Панель управления”-”Диспетчер учетных данных”

После этого опять пытаемся зайти в папку общего доступа.

Теперь все должно получиться.]]>
Компьютерные советы https://linexp.ru?id=4856 Sat, 14 Jun 2025 09:59:00 GMT
<![CDATA[Установка и настройка ftp-сервера ProFTPd]]>
Установка ftp-сервера

Установим ftp-сервер proftpd

# apt-get install proftpd

Теперь отредактируем файл конфигурации:

# nano /etc/proftpd/proftpd.conf

DefaultRoot ~

RequireValidShell off

Отредактируем файл с шеллами

# nano /etc/shells

Добавим туда строку

/bin/false

перезапустим FTP-сервер

# service proftpd restart

Создание пользователей для ftp-сервера

Теперь создадим тестового пользователя с именем testuser и папку /home/ftp/testuser, которая будет являться его домашней папкой.

Создаем папку

# mkdir -p /home/ftp/testuser

Создаем пользователя testuser и назначаем ему домашний каталог home/ftp/testuser и запрещаем использовать шелл

# useradd testuser -d /home/ftp/testuser -s /bin/false

Задаем пароль для пользователя testuser

# passwd testuser

И выставляем правильного владельца и права на созданный нами каталог

# chown -R testuser /home/ftp/testuser

# chmod 755 /home/ftp/testuser

Теперь мы сможем зайти на FTP- сервер с логином testuser и паролем, который мы установили для этого пользователя



Обратите внимание на то, что ВСЕ пользователи системы могут заходить по ftp на наш сервер в свой домашний каталог.

Для того, что бы запретить некоторым пользователям логин по ftp служит файл /etc/ftpusers

В нем перечислены пользователи сервера, которым запрещен логин по FTP]]>
Компьютерные советы https://linexp.ru?id=4855 Sat, 14 Jun 2025 09:58:22 GMT
<![CDATA[Port Knocking]]>
Установим его командой:

# apt-get install knockd



Настройки сервиса делаются в файле /etc/knockd.conf

По умолчанию он выглядит так:

[options]

UseSyslog

[openSSH]

sequence = 7000,8000,9000

seq_timeout = 15

command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

tcpflags = syn

[closeSSH]

sequence = 9000,8000,7000

seq_timeout = 5

command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

tcpflags = syn



В этом файле описаны два действия — открыть порт для ssh и закрыть его же.

Описание полей:

sequence — список портов, на которые нужно «постучать»

seq_timeout — максимальное время в секундах, которое отводится на «простукивание» портов

command— команда, которая будет выполнена

tcpflags — флаги пакетов



После установки так же следует разрешить запуск демона knockd. Для этого в файле /etc/default/knockd прописать строку:

START_KNOCKD=1



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

# iptables -P INPUT DROP



И перезапустим сервис:

#service knockd restart



Теперь у нас по умолчанию все порты закрыты. Для того, что бы соединиться с сервером нужно к нему постучаться. Конечно, это можно сделать и при помощи telnet, но есть более удобный путь.

Если мы пытаемся соединиться с Linux-компьютера, то установим на нем тот же самый knockd, но не будем запускать сервис, а воспользуемся клиентской частью:

$ knock 192.168.0.140 7000 8000 9000



После чего можно соединяться с нашим сервером:

$ ssh user@ 192.168.7.140



Если мы используем Windows-компьютер, то можно скачать knock-утилиту

www.zeroflux.org/proj/knock/files/knock-cygwin.zip



И после ее запуска из командной строки (параметры такие же как и в Linux) соединиться с сервером при помощи Putty как обычно.

После того, как мы «постучались» в syslog должны появиться записи типа:

knockd: 192.168.0.5: openSSH: Stage 1

knockd: 192.168.0.5: openSSH: Stage 2

knockd: 192.168.0.5: openSSH: Stage 3

knockd: 192.168.0.5: openSSH: OPEN SESAME

knockd: openSSH: running command: /sbin/iptables -A INPUT -s 192.168.0.5 -p tcp --dport 22 -j ACCEPT



После окончания работы нужно не забыть закрыть порт:

$ knock 192.168.0.140 9000 8000 7000



После этого knockd выполнит удаление правила на открытие 22 порта.

У такого подхода есть некоторые недостатки — нельзя просто оборвать сессию с сервером и продолжить заниматься другими делами. В таком случае порт на сервере будет открыт или до перезагрузки, или пока мы не вспомним и не отменим разрешающее правило. Что бы избежать такой ситуации правило на «стук» по портам можно записать в несколько другом виде.



Приведем файл /etc/knockd.conf к следующему виду:

[options]

UseSyslog



[openSSH]

sequence = 7000,8000,9000

seq_timeout = 15

tcpflags = syn

start_command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

cmd_timeout = 10

stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT





Сейчас у нас несколько изменилось описание реакции на «стук» по портам:

start_command — команда, которая будет выполнена

cmd_timeout — время задержки в секундах

stop_command — команда, которая будет выполнена через cmd_timeout секунд после выполнения start_command.



И перезапустим сервис knockd

#service knockd restart



Если мы сейчас попробуем «постучаться» и присоединиться к серверу, то через 10 секунд наша сессия оборвется, так как сработает правило закрытия порта, и не факт, что мы успеем сделать все, что нужно.

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

# iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT



Вот после этого мы сможем «постучаться» и после этого нормально открыть сессию и поработать сколько нужно. Однако через 10 секунд новую сессию открыть мы уже не сможем.]]>
Компьютерные советы https://linexp.ru?id=4854 Sat, 14 Jun 2025 09:57:33 GMT
<![CDATA[Работа с LVM]]>
LVM увеличивает гибкость файловой системы, однако, являясь просто промежуточным слоем, не отменяет ограничения и использование других слоёв, а также усложняет работу. То есть, по-прежнему нужно создавать и изменять разделы, форматировать их; изменение размера должно поддерживаться также и самой файловой системой.

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

Создание разделов на LVM

Для начала нужно установить поддержку LVM в нашей системе.

# apt-get install lvm2



У нас есть три свободных физических диска — sdb, sdc и sdd. Создадим LVM-раздел на первых двух из них.

Сначала на этих дисках создадим физические тома LVM:

# pvcreate /dev/sdb

# pvcreate /dev/sdc



Теперь создадим группу томов с произвольным названием, например, study:

# vgcreate study /dev/sdb /dev/sdc



В результате мы должны получить вывод

Volume group "study" successfully created



После этого можно создавать логические тома:

# lvcreate -n lv1 -L 5G study

# lvcreate -n lv2 -L 6G study



Теперь у нас есть блочные устройства /dev/study/lv1 и /dev/study/lv2. С ними можно работать так же, как и с обычными разделами.

# mkfs.ext4 /dev/study/lv1

# mkfs.ext4 /dev/study/lv2



И можем их примонтировать в систему

Для этого создадим в системе точки монтирования:

# mkdir /mnt/lv1

# mkdir /mnt/lv2



И примонтируем разделы

# mount /dev/study/lv1 /mnt/lv1

# mount /dev/study/lv2 /mnt/lv2



Введя команду df -h мы увидим информацию об этих разделах

/dev/mapper/study-lv1 5,0G 138M 4,6G 3% /mnt/lv1

/dev/mapper/study-lv2 6,0G 140M 5,5G 3% /mnt/lv2



То есть их размер 5 и 6 Gb, как мы и указывали при создании.



Добавление физических томов

Если нам потребуется увеличить размер какого-то раздела внутри LVM, то для этого нам понадобится, естественно, свободное место. Добавим в LVM диск sdd.

Создадим на нем физический том:

# pvcreate /dev/sdd



И добавим его в группу томов study:

# vgextend study /dev/sdd



Теперь можно создать ещё один логический диск при помощи lvcreate или увеличить размер существующего с помощью команды lvresize.

Увеличим раздел lv1 до 15 Gb.

# lvresize -L 15 G study/lv1



Далее увеличить размер файловой системы

# resize2fs /dev/study/lv1

Если после этого посмотреть информацию о разделах командой df -h, то мы увидим

/dev/mapper/study-lv1 15G 141M 14G 1% /mnt/lv1

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



Аварийная работа с LVM

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

Замена диска налету.

Предположим, что у нас начались проблемы с диском /dev/sdd. Заменим его на диск /dev/sde без выключения системы.

Для этого создадим физический том на новом диске

# pvcreate /dev/sde



И добавим его в группу томов study:

# vgextend study /dev/sde



Теперь нам нужно переместить информацию с диска sdd на новый sde:

# pvmove /dev/sdd /dev/sde

/dev/sdd: Moved: 0,7%

/dev/sdd: Moved: 30,7%

/dev/sdd: Moved: 63,5%

/dev/sdd: Moved: 97,3%

/dev/sdd: Moved: 100,0%



Перемещение информации займет некоторое время в зависимости от объема диска.

По окончании перемещений удалим сбойный диск из группы томов:

# vgreduce study /dev/sdd

Removed "/dev/sdd" from volume group "study"

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



Создание снапшотов LVM

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

Самая интересная особенность LVM при работе со снимками — это то, что снимок может занимать меньше дискового пространства, чем оригинал. Для этого используется режим Copy-on-Write, при котором реальное использование дискового пространства начинается только при изменении данных на томе-оригинале. То есть при попытке модификации файла на томе-оригинале неизмененный файл сначала сохраняется на томе-снимке, а уж затем модифицируется.



ВНИМАНИЕ! При заполнении тома-снимка до конца, происходит его уничтожение. То есть том продолжает существовать, но ни смонтировать его, ни просмотреть его содержимое (если он был смонтирован до этого) уже не получится. Эту особенность следует обязательно учитывать при задании размера тома-снимка в момент его создания.



Создание снимка производится командой lvcreate:

# lvcreate -s -L 2M -n backup /dev/study/lv2

Rounding up size to full physical extent 4,00 MiB

Logical volume "backup" created

Ключ -s указывает, что создаем мы именно снапшот, -n указывает имя создаваемого тома, а /dev/study/lv2 показывает с какого именно тома мы делаем снимок.



Команда lvscan покажет нам, что мы создали снапшот:

# lvscan

ACTIVE '/dev/study/lv1' [15,00 GiB] inherit

ACTIVE Original '/dev/study/lv2' [6,00 GiB] inherit

ACTIVE Snapshot '/dev/study/backup' [4,00 MiB] inherit



Теперь можете убедиться в том, что изменения, происходящие с оригиналом, никак не повлияют на снапшот.



Информационные утилиты LVM

Получить информацию о группе томов

# vgdisplay



Получить информацию по созданным логическим томам

# lvdisplay



Получить информацию по физическим томам

# pvdisplay]]>
Компьютерные советы https://linexp.ru?id=4853 Sat, 14 Jun 2025 09:56:53 GMT
<![CDATA[Переконвертирование офисных документов]]>
Она позволяет конвертировать из любого в любой формат, который поддерживает OpenOffice.



Из man unoconv:

unoconv — утилита командной строки, которая позволяет конвертировать документы их любого формата, который способен импортировать OpenOffice в любой, в который он может экспортировать.

Зависит от офисного пакета OpenOffice. Для преобразования документов используется интерфейс доступа к компонентной модели OpenOffice.org - Uno.

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



Пример вызова прост:

$unoconv -f pdf mydocument.doc

И в результате работы рядом с mydocument.doc появится mydocument.pdf



Так как в пакет OpenOffice.org входит не только Writer, то возможна конвертация не только между doc и odt.

Можно, например, сделать так:

$ unoconv -f swf presentation.odp



Или даже так:

unoconv -f jpg image.png



В общем за более подробными вариантами работы стоит посмотреть man unoconv]]>
Компьютерные советы https://linexp.ru?id=4852 Sat, 14 Jun 2025 09:55:33 GMT
<![CDATA[MDAdm. Работа с RAID на Ubuntu]]>
На брендовых серверах они зачастую полностью хардварные, но тем не менее очень часто приходится сталкиваться и с софтварным рейдом.



Построение RAID

Построим на сервере RAID1.

Сначала создадим одинаковые разделы на дисках sdb и sdc



#fdisk /dev/sdb

command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1): 1

First sector (2048-16777215, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): +5G

Command (m for help): t

Hex code (type L to list codes): 83

Changed system type of partition 1 to 83



Command (m for help): w

The partition table has been altered!



Calling ioctl() to re-read partition table.

Syncing disks.

Аналогично сделаем и для диска sdc

Установим утилиту работы с RAID

# apt-get install mdadm



Теперь соберем RAID 1

# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1



После сборки состояние RAID можно просмотреть при помощи команды

# cat /proc/mdstat



В результате мы должны получить вывод что-то похожее на

personalities : [raid1]

md0 : active raid1 sdc1[1] sdb1[0]

5238720 blocks super 1.2 [2/2] [UU]

unused devices:



Теперь можно на созданном RAID-разделе создавать файловую систему и подключать ее к системе.

# mkfs.ext4 /dev/md0

# mkdir /mnt/raid

# mount /dev/md0 /mnt/raid



Так же для дальнейшей проверки корректности работы рейда создадим на RAID-разделе файл:

# touch /mnt/raid/test.txt



Ошибка при работе с RAID

После того, как мы создали RAID он у нас определяется как устройство /dev/md0, однако после перезагрузки такого устройства в системе не будет, а вместо него появится /dev/md127. Тут можно или в дальнейшем использовать именно такое имя устройства, или, что обычно удобнее, насильно объяснить системе, что наш RAID-раздел именно /dev/md0 и ни как иначе. Для этого выполним команду:

# mdadm -Db /dev/md0 > /etc/mdadm/mdadm.conf



В результате выполнения этой команды в файле /etc/mdadm/mdadm.conf будет строка

ARRAY /dev/md0 metadata=1.2 name=ub-4:0 UUID=7da67e34:3d29e3a1:bdf36edd:6be26e60



После этого необходимо обновить образ initramfs:

# update-initramfs -u

Теперь после перезагрузки наш RAID-раздел будет определяться как /dev/md0.



Деградация и восстановление RAID

Посмотрим как можно провести деградацию рейда. Естественно, в реальной системе диск обычно вылетает сам и нет необходимости специально объявлять его сбойным, но мы воспользуемся возможности утилиты mdadm и объявим часть RAID — /dev/sdb1 сбойным.

# mdadm /dev/md0 --fail /dev/sdb1

Посмотрим теперь на состояние RAID

# cat /proc/mdstat



Мы должны увидеть, что /dev/sdb1 имеет некие проблемы и рейд деградирован:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdb1[2](F) sdc1[1]

5238720 blocks super 1.2 [2/1] [_U]

unused devices:



Теперь с помощью fdisk создадим на устройстве /dev/sdd раздел такого же размера, как и /dev/sdс1. После этого удалим /dev/sdb1 из RAID

# mdadm /dev/md0 --remove /dev/sdb1



И добавим новый раздел /dev/sdd1

# mdadm /dev/md0 --add /dev/sdd1



Если мы сразу же посмотрим на состояние RAID

# cat /proc/mdstat

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

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdd1[2] sdc1[1]

5238720 blocks super 1.2 [2/1] [_U]

[=>...................] recovery = 6.2% (329984/5238720) finish=1.2min speed=65996K/sec

unused devices:

Если мы теперь примонтируем наш RAID

# mount /dev/md0 /mnt/raid/

То увидим, что файл, который мы до этого создавали на месте и ничего никуда не пропало.

# ls /mnt/raid/

lost+found test.txt]]>
Компьютерные советы https://linexp.ru?id=4851 Sat, 14 Jun 2025 09:54:35 GMT
<![CDATA[Веб-интерфейс для сканера]]>
Однако, как показала практика, для пользователей Windows-систем это непривычно и, соответственно, неудобно. По этому был применен альтернативный путь — к Sane был прикручен веб-интерфейс phpSane.

Установка этой программы очень проста и незамысловата Вначале устанавливаем веб-сервер

#apt-get install apache2 php5





Потом скачиваем сам phpSane

#wget http://garr.dl.sourceforge.net/project/phpsane/phpsane/0.7.1/phpSANE-0.7.1.zip





Создаем каталог для него

#mkdir /var/www/phpsane





перемещаем туда архив phpSane

#mv phpSANE-0.7.1.zip /var/www/phpsane/phpSANE-0.7.1.zip





и распаковываем его

#unzip phpSANE-0.7.1.zip





Далее сменим владельца данного каталога и его содержимого

#chowr -R www-data:www-data /var/www/phpsane





так же следует внести пользователя www-data в группу saned

#addgroup www-data saned





Теперь настроим Apache. Для этого в файле /etc/apache2/sites-available/default изменим директиву directoryindex

DirectoryIndex index.html index.php phpsane.php





И перезапустим apache

#service apache2 restart





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

#apt-get install netpbm gocr





Теперь после захода на страницу http://ip-address/phpsane у нас должен открыться веб-интерфейс

/uploads/images/stories/articles/phpSANE.jpg]]>
Компьютерные советы, Программы для отдела кадров, Программы для ресторанов https://linexp.ru?id=4850 Sat, 14 Jun 2025 09:51:04 GMT
<![CDATA[Перевод интерфейса BackupPC]]>
Так что пришлось упереться и сделать перевод самому.

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



И так, начали...



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

Для этого откроем файл /usr/share/backuppc/lib/BackupPC/Config/Meta.pm

и заменим в нем строку

values => [qw(cz de en es fr it nl pl pt_br zh_CN)],

на

values => [qw(cz de en es fr it nl pl pt_br zh_CN uk)],



Теперь скачаем файл поддержки украинского языка



СКАЧАТЬ



и распакуем его содержимое в /usr/share/backuppc/lib/BackupPC/Lang



Далее в файле /etc/backuppc/config.pl меняем в строке

$Conf{Language} = 'en';

язык на нужный нам. В данном случае на

$Conf{Language} = 'uk';



Теперь перечитываем конфигурацию сервера

# service backuppc reload

И все. Мы имеем украинский интерфейс.]]>
Компьютерные советы https://linexp.ru?id=4849 Sat, 14 Jun 2025 09:48:27 GMT
<![CDATA[Резервное копирование серверов и рабочих станций при помощи BackupPC]]>
Конечно существует большое количество коммерческих решений для создания резервных копий чего угодно: как отдельных файлов, так и конкретно почтовых баз, структуры AD или даже всего сервера сразу. Так же есть немало и свободных и бесплатных решений для этого. Например Bacula, Amanda, dar, BackUpPC и другие.

Наиболее мощным и универсальным решением является, конечно, Bacula. Но она же и наиболее сложная в настройках. Для большинства ситуаций будет достаточно использовать BackUpPC

BackupPC — это свободное ПО (распространяется под GNU General Public License) для резервного копирования данных с управлением через веб-интерфейс. Кроссплатформенный программный сервер может работать на любом сервере под управлением GNU/Linux, Solaris или UNIX. Нет необходимости в клиентской части, так как сервер сам по себе является клиентом для нескольких протоколов, которые поддерживаются родными службами клиентской ОС.

Например, BackupPC является SMB‐клиентом, что может использоваться для резервного копирования совместно используемых данных в сетевых папках на компьютерах с Microsoft Windows. Подобный сервер BackupPC может быть установлен за межсетевым экраном, выполняющим функции сетевой трансляции адресов (NAT), когда Windows‐компьютер имеет публичный IP адрес. Так как это не рекомендуется из за большого количества SMB трафика, то более удобным является использование веб-серверов, поддерживающих SSH и возможность работы с tar и rsync, что позволяет серверу BackupPC находиться в подсети отделённой от веб‐серверов демилитаризованной зоной.



Установка системы резервного копирования BackUpPC


Так как управление BackupPC производится через веб-интерфейс, то вначале необходимо установить веб-сервер:

# apt-get install apache2



Далее установим сам сервер резервного копирования и пакет smbclient для работы с windows-компьютерами:

# apt-get install backuppc smbclient



После окончания установки его веб-интерфейс будет доступен по адресу http://ip-addr/backuppc

Для входа в систему будем использовать логин backuppc и пароль password.



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

# htpasswd /etc/backuppc/htpasswd backuppc



Добавить нового пользователя (к примеру admin) и задать ему пароль можно командой:

# htpasswd /etc/backuppc/htpasswd admin



После первого логина в систему мы увидим окно, в котором прописана только одна клиентская машина для резервного копирования — localhost

/uploads/images/stories/articles/bc/bc1.jpg

Файлы и пути, используемые в BackupPC
Основной файл настроек данной системы резервного копирования — /etc/backuppc/config.pl

В этом же каталоге находится файл hosts, в котором прописаны все клиентские компьютеры с которых будет производится резервное копирование.

Так же в этом каталоге должны находиться файлы с расширением pl, которые называются по имени клиентских компьютеров. Именно в них и будут храниться все индивидуальные настройки резервного копирования.

В каталоге /var/lib/backuppc/pc будут храниться резервные копии всех серверов. По этому необходимо или предусмотреть достаточное количество дискового пространства по этому пути, или переопределить его в файле /etc/backuppc/config.pl

Еще один важный путь — /usr/share/backuppc/lib/BackupPC/Lang

Именно там хранятся все файлы локализации интерфейса. Перевод есть на английский, чешский, испанский и некоторые другие языки. К сожалению ни украинский, ни русский переводы туда не входят.



Исправление ошибок после установки программы
В связи с тем, что в Linux многие программы связаны между собой, после очередного обновления модулей perl при запуске BacupPC появляются ошибки:

Use of qw(...) as parentheses is deprecated at /usr/share/backuppc/lib/BackupPC/Storage/Text.pm line 302.
Use of qw(...) as parentheses is deprecated at /usr/share/backuppc/lib/BackupPC/Lib.pm line 1425.

Для их исправления нужно поправить содержимое двух файлов.

Открываем файл /usr/share/backuppc/lib/BackupPC/Storage/Text.pm

и меняем строчку

foreach my $param qw(BackupFilesOnly BackupFilesExclude) {

на

foreach my $param (qw(BackupFilesOnly BackupFilesExclude)) {



И второй файл. Открываем /usr/share/backuppc/lib/BackupPC/Lib.pm

и меняем строчку

foreach my $param qw(BackupFilesOnly BackupFilesExclude) {

на

foreach my $param (qw(BackupFilesOnly BackupFilesExclude)) {



После этого перезапуск сервиса backuppc будет проходить без ошибок.





Конфигурирование клиентского Linux-хоста
Добавим в конец файла /etc/backuppc/hosts строчку:

linuxsrv1 0 backuppc



Первое поле, это понятное нам имя хоста, второе — включение (1) или отключение (0) расписания резервного копирования, и третье — пользователь, который имеет доступ к управлению данным хостом.

Далее создадим файл конфигурации этого сервера:

#nano /etc/backuppc/linuxsrv1.pl



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

$Conf{BackupsDisable} = '1';

$Conf{ClientNameAlias} = '192.168.0.27';

$Conf{BackupFilesOnly} = {

'*' => [

'/etc'

]

};

$Conf{XferMethod} = 'rsync';

$Conf{RsyncClientPath} = '/usr/bin/rsync';

$Conf{RsyncClientCmd} = '$sshPath -q -x -l bcuser $host sudo $rsyncPath $argList+';

$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l bcuser $host sudo $rsyncPath $argList+';

$Conf{RsyncShareName} = [

'/'

];

$Conf{RsyncCsumCacheVerifyProb} = '0.01';

$Conf{XferLogLevel} = '9';

$Conf{ClientCharsetLegacy} = 'utf8';

$Conf{BackupFilesExclude} = {

'/' => [

'/etc/ssh'

]

};



В этом файле мы указываем адрес клиентского сервера

$Conf{ClientNameAlias} = '192.168.0.27';



Путь копирования

$Conf{BackupFilesOnly} = { '*' => [ '/etc' ]};



Путь исключений

$Conf{BackupFilesExclude} = { '/' => [ '/etc/ssh' ]};



И тип соединения

$Conf{XferMethod} = 'rsync';



Далее нужно сделать возможность нашему серверу резервного копирования авторизоваться на удаленной системе по протоколу ssh не по паролю, а ко ключу.

Создаем ключ для пользователя backuppc, с правами которого и работает наш сервер резервного копирования

# sudo -u backuppc ssh-keygen -t rsa

Запрошеный пароль на ключ оставляем пустым.



Далее на клиентском сервере создаем пользователя bcuser и в настройках sudo (#visudo ) прописываем:

bcuser ALL=(ALL) NOPASSWD:/usr/bin/rsync



То есть этому пользователю мы даем возможность без пароля запускать rsync с повышенными правами.

Теперь возвращаемся на наш сервер резервного копирования. Ключ для авторизации по ssh мы уже создали и теперь нужно передать его на клиентский сервер.

# sudo -u backuppc ssh-copy-id -i /var/lib/backuppc/.ssh/id_rsa.pub bcuser@192.168.0.27



где 192.168.0.27 — IP-адрес клиентского Linux-сервера

Пробуем соединиться с авторизацией по ключу:

# sudo -u backuppc ssh bcuser@192.168.0.27



Если соединение прошло успешно, значит на этом настройка завершена.

Перезапустим наш сервер резервного копирования:

#service backuppc restart



Открыв его веб-интерфейс и перейдя на закладку «Host Summary» в списке клиентских серверов мы увидели наш только что описанный сервер linuxsrv1

/uploads/images/stories/articles/bc/bc3.jpg

Через некоторое (в нашем случае около 15-20 секунд) время, перейдя на закладку «Browse backups» Мы сможем увидеть все дерево резервной копии с подчиненного сервера.

/uploads/images/stories/articles/bc/bc4.jpg

Если внимательно посмотреть на список вложенных каталогов, то мы увидим, что каталога /etc/ssh там нет, что говорит о том, что списки исключения работают корректно.





Конфигурирование клиентского Windows-хоста
Резервное копирование Windows-машин производится по протоколу SMB.

Для добавления новохо клиентского хоста в систему добавим в конец файла /etc/backuppc/hosts строчку:

winxp 0 backuppc



И создадим файл /etc/backuppc/winxp.pl с таким содержимым:

$Conf{ClientNameAlias} = '192.168.0.12';

$Conf{BackupFilesOnly} = {

'C$' => ['/Documents and Settings/User/Мои документы'],

};

$Conf{XferMethod} = 'smb';

$Conf{SmbShareName} = [ 'C$' ];

$Conf{SmbShareUserName} = 'STUDY\\admin';

# Password should be configured on client

$Conf{SmbSharePasswd} = 'admin';

$Conf{PingMaxMsec} = '900';

$Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -d 1 -c tarmode\\ full -Tc$$

$Conf{SmbClientIncrCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -d 1 -c tarmode\\ full -TcN$

$Conf{SmbClientRestoreCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -d 1 -c tarmode\\ full -$

$Conf{ClientCharset} = 'cp1252';



Принцип создания файла такой же самый, как и для Linux-сервера.

Создание расписания автоматического копирования.
Настройка расписания резервного копировния производится в свойствах конкретного хоста на закладке «Shedule»

/uploads/images/stories/articles/bc/bc5.jpg

Тут имеются следующие поля настроек:

Полная резервная копия:

FullPeriod — минимальное время в днях между полными бекапами

FullKeepCnt — сколько полных бекапов необходимо хранить

FullKeepCntMin — минимальное количество хранимых полных бекапов

FullAgeMax — максимальный возраст хранимого полного бекапа



Инкрементальная резервная копия:

IncrPeriod — минимальное время в днях между инкрементальными бекапами

IncrKeepCnt — сколько инкрементальных бекапов необходимо хранить

IncrKeepCntMin — минимальное количество хранимых инкрементальных бекапов

IncrAgeMax — максимальный возраст хранимого инкрементального бекапа

IncrLevels — уровень инкрементального бекапа

IncrFill — использовать в системе хард-линки, что бы инкрементальный бекап выглядел полным.



Вот, собственно, и все основные настройки. Ставьте, настраивайте, пользуйтесь.]]>
Компьютерные советы https://linexp.ru?id=4848 Sat, 14 Jun 2025 09:46:24 GMT
<![CDATA[Авторизация пользователей на прокси-сервере Squid через Microsoft AD]]> Настройка домена

Пусть у нас есть домен study.local и его контроллер с именем dc-study и IP-адресом 192.168.0.10

Создадим в домене группу inet. Все пользователи, которые в нее будут входить, будут иметь доступ в Интернет. И внесем в нее пользователя student.

Так же нужно создать в домене пользователя, с аккаунтом которого наш прокси-сервер будет обращаться на контроллер домена для проверки учетных данных пользователей. Для этих целей сделаем в нашем домене пользователя squid с паролем squid123



Настройка Squid

Для авторизации пользователя в LDAP, у Squid есть специальный модуль squid_ldap_auth

Для начала проверим, работает ли вообще у нас авторизация в домене

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

# /usr/lib/squid3/squid_ldap_auth -u cn -b "cn=Users,dc=study,dc=local" 192.168.0.10

squid squid123

OK

Если в результате вывелось OK — значит все нормально, и можно продолжать проверку.

Далее мы проверим, работает ли определение группы пользователя в домене.

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



# /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D squid@study.local -w "squid123" 192.168.0.10

student inet

OK



И, для проверки, повторим эту же команду, но для другой учетной записи



# /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D squid@study.local -w "squid123" 192.168.0.10

administrator inet

ERR



Как мы видим, группа пользователя определяется правильно.

Теперь откроем на редактирование файл /etc/squid3/squid.conf

И опишем наши новые acl



#Параметры авторизации в домене

auth_param basic program /usr/lib/squid3/squid_ldap_auth -u cn -b "cn=Users,dc=study,dc=local" 192.168.0.10

auth_param basic children 5

auth_param basic realm study.local

#Далее пропишем проверку на наличие пользователя в группе (все это записывается в одну строку)



external_acl_type ldapgr children=5 %LOGIN /usr/lib/squid3/squid_ldap_group -b "dc=study,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Users,dc=study,dc=local))" -D squid@study.local -w "squid123" 192.168.0.10



#Затребуем авторизацию

acl auth proxy_auth REQUIRED

#И проверим, есть ли пользователь в группе inet



acl myinet external ldapgr inet



#И далее, в разделе разрешений, пропишем разрешение выхода в интернет пользователям, которые входят в доменную группу inet.

http_access allow myinet

http_access deny all



Перезапустим Squid

#/etc/init.d/squid restart



И можно проверять.

Теперь в интернет смогут выйти только пользователи, которые входят в доменную группу inet.]]>
Компьютерные советы https://linexp.ru?id=4847 Sat, 14 Jun 2025 09:41:24 GMT
<![CDATA[Монтирование дисков в Linux]]>
Монтирование может производиться автоматически, либо вручную.

mount — утилита командной строки в UNIX-подобных системах. Применяется для монтирования файловых систем. Монтирование в ручном режиме

Наиболее часто встречающийся вариант команды монтирования будет выглядеть так:

mount -t тип_файловой_системы -o опции_монтирования что_монтируем куда_монтируем

Например, монтирование ntfs-раздела на нашем же жестком диске в папку /mnt/win будет выглядеть так:

mount -t ntfs-3g -o defaults /dev/sda5 /mnt/win

где

ntfs-3g — тип файловой системы

defaults — все опции монтирования по умолчанию

/dev/sda5 — устройство, которое монтируется

/mnt/win — папка, в которую будет произведено монтирование



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

mount -t ntfs-3g -o locale=ru_UA.utf8 /dev/sda5 /mnt/win



Зачастую утилита mount все нужные параметры (в том числе и тип файловой системы) может определить сама. В таком случае команда монтирования может выглядеть так:

mount /dev/sdb1 /mnt/new_disk



При помощи mount можно монтировать не только разделы на физических устройствах, но и просто файлы, например iso-образы дисков. В таком случае используется устройство loop:

mount -t iso9660 -o loop /home/user/ubuntu-10.04.3-server-i386.iso /home/ubuntu/



Автоматическое монтирование

Автоматическое монтирование файловых систем производится при помощи файла /etc/fstab. Именно в нем и описано монтирование устройств, которое будет осуществлено при загрузке операционной системы.

Если мы откроем этот файл в Ubuntu, то увидим примерно следующее:

proc /proc proc nodev,noexec,nosuid 0 0

UUID=87c97237-0bf0-4a62-bae2-47a850643996 / ext4 errors=remount-ro 0 1

UUID=0af767a3-c740-47fe-87ad-fb495bc1444e /home ext4 defaults 0 2

UUID=45bc8486-ed86-4a86-96db-ea34e4c0b9da none swap sw 0 0



Каждая запись в этом файле содержит 6 полей. Их формат прост:

Устройство — Точка монтирования — Тип файловой системы — опции монтирования — флаг необходимости резервного копирования — Порядок проверки раздела



Устройство может определяться не только через UUID, но и через метку тома, или просто как файл устройства, например /dev/sda1

Точку монтирования выбираем сами по необходимости. Она не обязательно должна находиться непосредственно в корневом разделе. Например у меня на почтовом сервере отдельный раздел примонтирован как /var/mail

Тип файловой системы — тут все понятно. В какой раздел отформатировали, то и пишем.

Опции монтирования — тут можно очень много чего описать. Например: монтировать устройство только для чтения, или в режиме чтения и записи, кодировку имен файлов, сохранять ли время доступа к файлам, логин-пароль для доступа (если это сетевой ресурс) и так далее.

Флаг необходимости резервного копирования — обычно не используется и устанавливается в 0.

Порядок проверки раздела (0 — не проверять, 1 — устанавливается для корня, 2 — для остальных разделов).



Теперь некоторые подробности об опциях монтирования. Все опции записываются через запятую.

async — все действия ввода/вывода будут производиться асинхронно

noatime — не обновлять время доступа к файлам

defaults — использовать опции по умолчанию: rw, suid, dev, exec, auto, nouser и async.

exec — разрешать выполнение бинарных файлов

noexec — не разрешать выполнение бинарных файлов

suid — разрешать использовать биты set-user-identifier и set-group-identifier.

nosuid — не разрешать использовать биты set-user-identifier и set-group-identifier.

ro — монтировать устройство в режиме только для чтения

rw — монтировать устройство в режиме чтения/записи

users — разрешать всем пользователям монтировать и размонтировать это устройство



Кроме этого, стоит обратить внимание, что при монтировании различных файловых систем, опции монтирования могут меняться. Особенно это относится к сетевым файловым системам, таким как sshfs, curlftpfs, smbfs и им подобным.]]>
Компьютерные советы https://linexp.ru?id=4846 Sat, 14 Jun 2025 09:40:42 GMT
<![CDATA[Настройка файлового сервера Samba]]> Samba— пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL. Начиная с третьей версии Samba предоставляет службы файлов и печати для различных клиентов Microsoft Windows и может интегрироваться с операционной системой Windows Server, либо как основной контроллер домена (PDC), либо как член домена. Она также может быть частью домена Active Directory.

Samba работает на большинстве Unix-подобных систем, таких, как Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD. Samba включена практически во все дистрибутивы Linux.

Установка сервера Samba производится командой

#apt-get install samba

Cервер Samba, который может предоставлять доступ к папкам общего доступа по протоколу SMB. Доступ может предоставляться как парольный, так и безпарольный.

Рассмотрим варианты настройки Samba-сервера.



Настройка беспарольного доступа к общим папкам.



Откроем файл /etc/samba/smb.conf и заполним его следующим образом:

[global]

workgroup = WORKGROUP

hosts allow = 192.168.7.0/24

interfaces = eth0

log file = /var/log/samba/log.%m

max log size = 1000

syslog = 0

guest account = nobody

security = share

dos charset = cp866

unix charset = UTF-8



[share]

path = /var/local

comment = share

printable = no

writable = yes

guest ok = yes

create mask = 0666

directory mask = 0777



Теперь рассмотрим подробно файл конфигурации.

В секции Global описываются общие настройки работы сервера.

workgroup — записываем имя нашей рабочей группы или домена

hosts allow — описываем подсеть, которая будет иметь доступ к нашему серверу

interfaces — перечисляем сетевые интерфейсы, на которых будут приниматься соединения (возможно значение all)

log file = /var/log/samba/log.%m

max log size = 1000

syslog = 0

В этих переменных описываются параметры ведения логов нашего Samba-сервера



guest account — задаем соответствие между пользователем Гость и системным пользователем

security = share — используется в случае настройки беспарольного доступа.



dos charset — указывает кодировку, в которой Samba будет общаться с клиентами, не поддерживающими Unicode

unix charset — указывает кодировку компьютера на котором работает Samba



Далее идут секции, которые описывают соответствующие папки общего доступа. У нас эта секция одна — [share]

path — путь к папку на сервере

comment — сетевое имя папки

writable — разрешена ли запись в папку общего доступа

guest ok — разрешен ли гостевой доступ

create mask — описываются права для вновь созданного файла

directory mask — описываются права для вновь созданного каталога



После создания нашего файла конфигурации необходимо перезапустить сервис Samba

#service smbd restart



Теперь можно проверить соединение с нашим файловым сервером с любого компьютера в сети.

Для этого в Windows открываем в explorer ссылку \\samba-ip

или в Linux выполняем в консоли команду

smbclient -L samba-ip -N

В последнем случае просто будет выведен список папок общего доступа на нашем сервере



Настройка парольного доступа к общим папкам.

Изменим некоторые параметры в секции Global.

А точнее, вместо security = share напишем security = user

Так же следует внести изменения в секцию описания папки общего доступа. Удалим строку guest ok = yes

и добавим строку

write list = user1

Где user1 пользователь, который имеет полный доступ к папке.

Теперь нужно создать пользователя user1 в системе

#adduser user1



и добавить системного пользователя в пользователи самбы

#smbpasswd -a user1



Обратите внимание! Пароль пользователя в системе и пароль пользователя к ресурсам Samba могут быть разными.

Теперь доступ к нашей папки общего доступа будет с паролем.

Если завести аналогичным образом второго пользователя, то у него доступ к данной папке будет только для чтения.



Можно полностью ограничить доступ пользователя user2 к нашей папке общего доступа. Для этого на сервере создается группа, например, share

#addgroup share



И в эту группу добавляется пользователь user1

#addgroup user1 share





Далее на папку в системе выставляются права 770

#chmod 770 /var/local



И изменяется владелец папки

#chgrp share /var/local/





Теперь пользователь user2 вообще не сможет зайти в нашу папку общего доступа.]]>
Компьютерные советы https://linexp.ru?id=4845 Sat, 14 Jun 2025 09:39:31 GMT