Для инженеров ИТ

Настройка apache для работы через https

1. Добавиль в настройки виртуального хоста следующее, где xxxx – номер порта, например, https://site.com:xxxx

Listen xxxx

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /var/www/html/site/site.crt
SSLCertificateKeyFile /var/www/html/site/site.key

2.Генерируем site.crt и site.key на 365 дней

cd /var/www/html/site
openssl req -x509 -days 365 -newkey rsa:2048 -keyout site.key -out site.crt

В данном случае при запуске apache будет запрашивать парольную фразу passphrase. Чтобы избежать это выполним следующее:

cp site.key site.key.org
openssl rsa -in site.key.org -out site.key

Генерирование самоподписанного сертификата (всегда untrusted) выгдядит так на 365 дней
openssl x509 -req -days 365 -in site.csr -signkey site.key -out site.crt

Обновление FreeBSD c 7.4 до 9.2 (обновление через 8.4)

Имеем рабочий сервер под управлением FreeBSD 7.4

Необходимо обновить его до последней стабильной версии – 9.2

Основная причина – окончание поддержки FreeBSD 7.x и множество нерабочих портов.

Сразу обновить с 7.4 до 9.2 не получится, для начала надо сделать промежуточное обновление до 8.4.

Поехали…

1. Обновление 7.4 -> 8.4

удаляем старые исходники:

# rm -r /usr/obj

# rm -r /usr/src

закачиваем новые:

# svn co svn://svn.freebsd.org/base/stable/8 /usr/src

# cd /usr/src

# mergemaster -p

# make -j4 buildworld

# make -j4 buildkernel

# make installkernel

# make installworld

# mergemaster -iU

и получаем ошибку:

—-

*** Creating the temporary root environment in /var/tmp/temproot

*** /var/tmp/temproot ready for use

*** Creating and populating directory structure in /var/tmp/temproot

*** FATAL ERROR: Cannot ‘cd’ to /usr/src and install files to

the temproot environment

—-

поможет перезагрузка

# reboot

повторяем еще раз

# mergemaster -iU

ошибка не повторилась,

подтверждал все вопросы системы про удаление или выполнение(y)

# reboot

проверяем версию обновленной системы:

# uname -r

8.4-STABLE

2. теперь обновляю 8.4 -> 9.2

все аналогично предыдущему обновлению:

# rm -r /usr/obj

# rm -r /usr/src

# svn co svn://svn.freebsd.org/base/stable/9 /usr/src

# cd /usr/src

# mergemaster -p

# make -j4 buildworld

# make -j4 buildkernel

# make installkernel

# make installworld

# mergemaster -iU

# reboot

ОС не поднялась, ошибка загрузки системы “gm0s1a failed with error 19″:

Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.

Loader variables:

vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a

vfs.root.mountfrom.options=rw

Manual root filesystem specification:

: [options]

Mount using filesystem

and with the specified (optional) option list.

eg. ufs:/dev/da0s1a

zfs:tank

cd9660:/dev/acd0 ro

(which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)

? List valid disk boot devices

. Yield 1 second (for background tasks)

Abort manual input

mountroot>

т.к. сервер HP ProLiant DL120 G5, то зашел в iLo и перегрузил сервер,

после чего в loader prompt и выполнены команды:

OK set kern.geom.part.check_integrity=0

OK boot

при этом с ходу зайти в iLo не удалось, вылезла ошибка:

iLO remote console crashes with error “com.serverengines.rdr.EndOfStream: EndOfStream”

проблема с iLo решена по этому мануалу.

поехали дальше…

проблема с загрузкой ОС возникает при наличии программного RAID – gmirror

проверить можно так:

# gpart status

Name Status Components

mirror/gm0s1 CORRUPT mirror/gm0

# gpart show

=> 63 488397104 mirror/gm0 MBR (232G) [CORRUPT]

63 488397105 1 freebsd [active] (232G)

=> 0 488397105 mirror/gm0s1 BSD (232G)

0 20971520 1 freebsd-ufs (10G)

20971520 8288698 2 freebsd-swap (4G)

29260218 20971520 4 freebsd-ufs (10G)

50231738 204800000 5 freebsd-ufs (97G)

255031738 233365367 6 freebsd-ufs (111G)

======================

есть три решения:

1) отключить механизм целостности разделов:

# echo “kern.geom.part.check_integrity=0″ >> /boot/loader.conf

2) временно отключить проверку и последовательно пересоздать каждую из нод зеркала

3) временно отключить проверку и загрузится в single mode и прогнать fsck

до окончания обновления выбран 1-й вариант, продолжение следует

проверяем версию обновленной системы:

# uname -r

9.2-STABLE

3. обновление портов

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

# rm -r /usr/ports

получаем новые:

# portsnap fetch

# portsnap extract

# portsnap fetch update

указываем нужную версию питона

# echo “DEFAULT_VERSIONS=python=2.7 python2=2.7 python3=3.3″ >> /etc/make.conf

сперва обновляем утилиту обновления портов:

# portupgrade -frR portupgrade

а потом и все остальные порты:

# portupgrade -farR

Взято от сюда http://www.net-adm.ru/articles/57-upgrade-freebsd-7-to-9.html

Изменение локализации в debian/ubuntu

apt-get install locales – на все вопросы вносим Y.
vi /etc/environment – открываем файл на редактирование и удаляем из него любые записи и вносим одну: LANG=”ru_RU.UTF-8″
Помощь по использованию vi находится здесь: Vi или откройте файл через WinSCP
Редактируем файл /etc/locale.gen тем же vi: vi /etc/locale.gen – В списке находим ru_RU.UTF-8 UTF-8 и удаляем
значек # перед записью. Сохраняем файл.
locale-gen – запускаем команду для генерации локали. Пример ниже:
root@test:~# locale-gen
Generating locales (this might take a while)…
ru_RU.UTF-8… done
Generation complete.
Перезаходим на сервер. В клиенте, который Вы используете для связи с сервером делаем следующее (большинство людей
использует Putty: SSH):
После того как Вы вошли на сервер, кликните на верхнюю часть окна Putty правой кнопкой мыши, выше черного. Выберите
Change Settings -> Window – Translation -> из списка выберите UTF-8 и нажмите Apply внизу.
Теперь Вы сможете видеть русский язык в окне связи с сервером при выполнении различных команд.

Подключение бесплатных репозитарий к RHEL вместо платной подписки

Чтобы пакеты устанавливать легко с помощью команды
yum install [packet]
Изменяем настройки файла /etc/yum.conf.d. Можно прям в него добавить или сделать так, как написано в конце этого файла, следующие строки:
[centos-base]
name=CentOS-5 – Base
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=os
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#released updates
[centos-updates]
name=CentOS-5 – Updates
baseurl=http://mirror.centos.org/centos/5/updates/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

И всё

Настройка доступа по ssh к консоли с помощью putty

Для настройки доступа по ssh к консоли с помощью putty необходимо в терминале сервера сгенерировать пару ключей:
1) Создать каталог в домашней папке пользователя ~user/.ssh (обычно ~user находится в /home/user)
mkdir ~user/.ssh
cd ~user/.ssh
2) Сгенерировать ключ, указав путь файла ~user/.ssh/id_rsa
ssh-keygen -t rsa -b 2048
3) Появятся два файла id_rsa и id_rsa.pub. Это файлы чачтного и публичного ключей.
На сервере хранится публичный ключ. Скопируем в тот файл, который используется sshd.
cp id_rsa authorized_keys
4) authorized_keys должен лежать в каталоге ~user/.ssh. Он будет использоваться sshd для проверки частного ключа. Частный ключ отправим безопасно пользователю:
ssh-copy-id -i private_key_file user@machine (где private_key_file это файл rsa)
или небезопасно его можно просто скопировать любым доступным способом на машину пользователя.
5) Далее, если подключение будет происходить с помощью putty, то необходимо сгенерировать специальный ключ утилитой “PUTTY Key Generator” (ее надо качать отдельно) таким образом:
Запускае утилиту. Нажимаем кнопку Load, и открываем файл private_key_file. Далее нажимаем Save private key. Сохранится файл с ключем под названием private_key_file.ppk

После этого этот файл можно использовать при подключении по ssh через Putty.
6) Осталось настроить sshd на сервере. Для этого корректируем файл sshd_config:
vim /etc/ssh/sshd_config
Закомментировать (знаком #) строки
PasswordAuthentication yes
PermitEmptyPasswords no
Параметр LoginGraceTime (время, за которое необходимо ввести пароль) установить равным 15 сек.
LoginGraceTime 15
Также можно использовать для ограничения доступа только для определенных пользователей строку:
AllowUsers user user1 user2 user3
Сохраняем файл и перезапускаем sshd. На redhat таким образом:
service sshd restart

Автозагрузка FreeBSD, RedHat

В redhat добавить в автозагрузку:

chkconfig –add [имя]

Пример

chkconfig –add postfix

Посмотреть список

chkconfig –list

 

В FreeBSD найти файл /etc/rc.conf и добавить строку

[имя]_enable=”YES”

Пример

defaultrouter=”xx.xx.xx.xx”
gateway_enable=”YES”
hostname=”freebsdhost.ru”
ifconfig_em1=”inet yy.yy.yy.yy  netmask 255.255.0.0″
inetd_enable=”YES”
keymap=”ru.koi8-r”
linux_enable=”YES”
moused_enable=”YES”
sshd_enable=”YES”
mysql_enable=”YES”
gdm_enable=”YES”
gdm_lang=”ru_RU.UTF-8″

Сами скрипты, которые запускает rc.conf лежат в директории /etc/rc.d.

Более подробно все есть в man rc.conf. Там же описывается что такое ifconfig_em1, hostname.

 

 

Горячие клавиши для Midnight Commander

Ctrl и Shift обозначают соответствующие клавиши клавиатуры, Meta – условное обозначение для набора мета-клавиш, на современном PC это обычно Alt или Esc

Горячие клавиши для файловых панелей

F3 Просмотр файла
F4 Редактирование файла
Insert Выделение текущего объекта
+ вызывает окно для выделения группы файлов (можно использовать регулярные выражения)
\ снимает отметку с группы файлов (действие, обратное тому, которое вызывается по клавише +)
Meta+Enter Вставить ‘текущий объект’1 в командную строку
Meta+. не показывать или показать скрытые файлы или каталоги (начинаются на точку ‘.’)
Meta+, Переключить режим отображения панелей (вертикально/горизонтально)2
Meta+a
Ctrl+x,p
Посылает в командную строку полный путь в текущей активной панели
Meta+c Вызывается меню быстрой смены текущего каталога на активной панели
Meta+g отмечает первый файл или каталог в отображаемом списке на панели
Meta+h Вызов меню последних выполненных команд
Meta+i Смена текущего каталога на неактивной панели, на каталог в котором вы находитесь в активной панели
Meta+j отмечает последний файл или каталог в отображаемом списке на панели
Meta+n Вернуть последующую выполненную командную строку
Meta+o неактивная панель переходит в каталог на который указывает активная панель
Meta+p Вернуть предыдущую выполненную командную строку
Meta+r отмечает средний файл или каталог в отображаемом списке на панели
Meta+t Смена режима работы панели (‘Стандартный’,'Укороченный’,'Расширенный’)
Meta+Shift+? Вызывается меню расширенного поиска файлов
Meta+Shift+A
Ctrl+x,Ctrl+p
Посылает в командную строку полный путь в нективной панели
Meta+Shift+H Отобразить историю каталогов
Ctrl+\ Вызывается меню часто используемых каталогов
Ctrl+l Перерисовать экран
Ctrl+o Скрытие/показ панелей
Ctrl+r перечитать содержимое каталога
Ctrl+s Быстрый поиск файла или каталога
Ctrl+Space Показать размер текущего каталога
Ctrl+x,a Отображается список активных соединений виртуальных файловых систем
Ctrl+x,c Просмотр/правка прав доступа текущего объекта
Ctrl+x,i Быстрый просмотр информации о текущем объекте на второй панели
Ctrl+x,j Показ фоновых задач
Ctrl+x,l Создать жесткую ссылку с текущего объекта
Ctrl+x,o Просмотр/правка владельца/группы для текущего объекта
Ctrl+x,q Быстрый просмотр содержимого файла на второй панели
Ctrl+x,s Создает символьную ссылку symlink для текущего объекта
Ctrl+x,t Вставка всех выделенных объектов в командную строку
Ctrl+x,Ctrl+s Редактировать символическую ссылку
Shift+F1 Вызывается меню быстрого перехода между точками монтирования на левой панели
Shift+F2 Вызывается меню быстрого перехода между точками монтирования на правой панели
Shift+F3 Просмотр файла raw без учета расширения
Shift+F4 Создает новый файл

Горячие клавиши для редактора

F3 Начать выделение текста. Повторное нажатие F3 закончит выделение
Shift+F3 Начать выделение блока текста. Повторное нажатие F3 закончит выделение
F5 Скопировать выделенный текст
F6 Переместить выделенный текст
F8 Удалить выделенный текст
Meta+i Переключение режима “Автовыравнивание возвратом каретки”, удобно при вставке отформатированного текста из буфера обмена
Meta+l Переход к строке по её номеру
Meta+q Вставка литерала (непечатного символа).См. таблицу ниже
Meta+t Сортировка строк выделенного текста
Meta+u Выполнить внешнюю команду и вставить в позицию под курсором её вывод
Ctrl+f Занести выделенный фрагмент во внутренний буфер обмена mc (записать во внешний файл)
Ctrl+k Удалить часть строки до конца строки
Ctrl+n Создать новый файл
Ctrl+s Включить или выключить подсветку синтаксиса
Ctrl+t Выбрать кодировку текста
Ctrl+u Отменить действия
Ctrl+x Перейти в конец следующего
Ctrl+y Удалить строку
Ctrl+z Перейти на начало предыдущего слова
Shift+F5 Вставка текста из внутреннего буфера обмена mc (прочитать внешний файл)
Meta+Enter Диалог перехода к определению функции
Meta+- Возврат после перехода к определению функции
Meta++ Переход вперед к определению функции
Meta+n Включение/отключение отображения номеров строк
tab Отодвигает вправо выделенный текст, если выключена опция “Постоянные блоки”
Meta-tab Отодвигает влево выделенный текст, если выключена опция “Постоянные блоки”
Shift+Стрелки Выделение текста
Meta+Стрелки Выделение вертикального блока
Meta+Shift+- Переключение режима отображения табуляций и пробелов
Meta+Shift++ Переключение режима “Автовыравнивание возвратом каретки”
Shift+Ins Вставить текст из буфера

Таблица литералов (непечатных символов)

HEX Dec Клавиша Описание
01 1 Meta+q,a  
02 2 Meta+q,n  
03 3 Meta+q,v  
04 4 Meta+q,d  
05 5 Meta+q,e  
06 6 Meta+q,f  
07 7 Meta+q,g  
08 8 Meta+q,h  
09 9 Meta+q,i TAB
0A 10 Meta+q,j  
0B 11 Meta+q,k  
0C 12 Meta+q,l  
0E 14 Meta+q,m  
0F 15 Meta+q,o  
10 16 Meta+q,p  
11 17 Meta+q,q  
12 18 Meta+q,r  
13 19 Meta+q,s  
14 20 Meta+q,t  
15 21 Meta+q,u  
16 22 Meta+q,b  
17 23 Meta+q,w  
18 24 Meta+q,c  
19 25 Meta+q,y  
1A 26 Meta+q,x  
1B 27 Meta+q,z
Meta+q,Esc,Esc
 

Источник: взято отсюда с изменениями

Обновление часовых поясов в linux

Сначала надо скачать базу с часовыми поясами с сайта www.iana.org/time-zones.

Далее этой базой заменим старую в системе.

Рассмотрим обновление на примере московского часового пояса.

Посмотрим расхождение с UTC

zdump -v /usr/share/zoneinfo/Europe/Moscow

Сделаем резервную копию
cp /usr/share/zoneinfo/Europe/Moscow /usr/share/zoneinfo/Europe/Moscow.bkp

Скачаем базу tzdata2013d.tar.gz в каталог /tmp
cd /tmpwget www.iana.org/time-zones/repository/releases/tzdata2013d.tar.gz
mkdir /tmp/tzdata2013d
tar xfv tzdata2013d.tar.gz -C /tmp/tzdata2013d

Компилируем и заменяем старый файл
zic -d zoneinfo europe
cp zoneinfo/Europe/Moscow /usr/share/zoneinfo/Europe/Moscow

Далее выставляем в системе часовой поясcp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Устанавливаем времяntpdate x.x.x.x

где х.х.х.х - адрес ntp, например, с сайта http://www.ntp-servers.net/servers.html

Смотрим

date

Cron

Основные настройки крона находятся в файле /etc/crontab

Структура строки конфигурации:

# *    *    *    *    *  [команда для выполнения]
# ┬    ┬    ┬    ┬    ┬
# │    │    │    │    │
# │    │    │    │    │
# │    │    │    │    └───── день недели (0 - 6) (0 to 6 are Sunday to Saturday, or use names)
# │    │    │    └────────── месяц (1 - 12)
# │    │    └─────────────── день месяца (1 - 31)
# │    └──────────────────── час (0 - 23)
# └───────────────────────── минута (0 - 59)
 # выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
 5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
 # выполнять 1 числа каждого месяца в 14 часов 15 минут
 15 14 1 * * $HOME/bin/monthly
 # каждый рабочий день в 22:00
 0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john

 23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
 5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
 0 0 1 1 * echo "С новым годом!"
 15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
 0-59 * * * * echo "Выполняется ежеминутно"
 0-59/2 * * * * echo "Выполняется по четным минутам"
 1-59/2 * * * * echo "Выполняется по нечетным минутам"
 # каждые 5 минут
 */5 * * * * echo "Прошло пять минут"

Перезапустить cron в freebsd/etc/rc.d/cron restart
Перезапустить cron в red hatservice crond restart

Пользователи и группы в linux

Для работы с пользователями используются файл /etc/group, /etc/passwd и /etc/shallow.

В последнем хранятся хэшированные пароли.

1. Структура файла /etc/group

cdrom:x:24:vivek,student13,raj
_____ _  _      _____
|    |  |        |
|    |  |        |
1    2  3        4где 1 - имя группы, 2 - показывает место пароля (не используется), 

3 - ID группы (GID), 4 - список пользователей, состоящих в группе. 

Посмотреть в каких группах состоит пользователь:

grep username /etc/group

Посмотреть в какие пользователи в группе:

grep groupname /etc/group

Чтобы добавить пользователя username в группу groupname, набираем:

usermod -a -G groupname username

(или usermod -G groupname username)

Если пользователя еще нет:

a) добавить в  существующую группу

useradd -G groupname username

б). добавить в существующую группу и группу для пользователя сделать первичной

useradd -g groupname username

Если группы нет, создать ее надо командой:

groupadd groupname

 

 2. Структура файла /etc/passwd

где 1 – имя пользователя, 2 – пароль, который в зашифрованном виде хранится в /etc/shadow,

3 – ID пользователя (UID), 4 – ID группы (GID), 5 – комментарии, 6 – путь к домашней директории, 7 -путь расположения коммандной оболочки для пользователя.

3. Удалить пользователя

userdel usrname

Удалить группу

groupdel groupname