Показаны сообщения с ярлыком HOWTO. Показать все сообщения
Показаны сообщения с ярлыком HOWTO. Показать все сообщения

понедельник, 28 декабря 2009 г.

HOW-TO`s

Русский шрифт в /etc/rc.d/rc.font

#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/share/kbd/consolefonts.
#
unicode_start LatArCyrHeb-16
for i in 1 2 3 4 5 6;do
echo -ne "\033%G" >/dev/tty$i
done

Примечание: если вам понравился шрифт, который стоял по-умолчанию, вместо LatArCyrHeb-16 пропишите cyr-sun16

Раскладка клавиатуры в /etc/rc.d/rc.keymap

#!/bin/sh
# Load the keyboard map. More maps are in /usr/share/kbd/keymaps.
if[ -x /usr/bin/loadkeys ]; then
/usr/bin/loadkeys /usr/share/kbd/keymaps/i386/qwerty/ru-utf.map.gz
fi

Локаль в /etc/profile.d/lang.sh

#!/bin/sh
# Set the system locale. (no, we don't have a menu for this ;-)
# For a list of locales which are supported by this machine, type:
# locale -a

# en_US is the Slackware default locale:
#export LANG=en_US
export LANG=ru_RU.UTF-8

# 'C' is the old Slackware (and UNIX) default, which is 127-bit
# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
# it's better to use en_US or another modern $LANG setting to
# support extended character sets.
#export LANG=C

# There is also support for UTF-8 locales, but be aware that
# some programs are not yet able to handle UTF-8 and will fail to
# run properly. In those cases, you can set LANG=C before
# starting them. Still, I'd avoid UTF unless you actually need it.
#export LANG=en_US.UTF-8

# Another option for en_US:
#export LANG=en_US.ISO8859-1

# One side effect of the newer locales is that the sort order
# is no longer according to ASCII values, so the sort order will
# change in many places. Since this isn't usually expected and
# can break scripts, we'll stick with traditional ASCII sorting.
# If you'd prefer the sort algorithm that goes with your $LANG
# setting, comment this out.
export LC_COLLATE=C

# End of /etc/profile.d/lang.sh

и /etc/profile.d/lang.csh

#!/bin/csh
# Set the system locale. (no, we don't have a menu for this ;-)
# For a list of locales which are supported by this machine, type:
# locale -a

# en_US is the Slackware default locale:
##setenv LANG en_US
setenv LANG ru_RU.UTF-8

# 'C' is the old Slackware (and UNIX) default, which is 127-bit
# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
# it's better to use en_US or another modern $LANG setting to
# support extended character sets.
#setenv LANG C

# There is also support for UTF-8 locales, but be aware that
# some programs are not yet able to handle UTF-8 and will fail to
# run properly. In those cases, you can set LANG=C before
# starting them. Still, I'd avoid UTF unless you actually need it.
#setenv LANG en_US.UTF-8

# Another option for en_US:
#setenv LANG en_US.ISO8859-1

# One side effect of the newer locales is that the sort order
# is no longer according to ASCII values, so the sort order will
# change in many places. Since this isn't usually expected and
# can break scripts, we'll stick with traditional ASCII sorting.
# If you'd prefer the sort algorithm that goes with your $LANG
# setting, comment this out.
setenv LC_COLLATE C

# End of /etc/profile.d/lang.csh


*****************************************
AIDE
1. Установка пакета aide-0.11-1.2.el4.rf.i386.rpm
2. Правка конфигурационного файла /etc/aide.conf по типу:
/etc p+i+u+g
!/etc/mtab
3. Создание снимка указанной ф.с:
# aide --init
4. Копируем базу из /var/lib/aide/aide.db.new.gz в /var/lib/aide/aide.db.gz
5. Создаём скрипт проверки:
#!/bin/bash
ReportDir=/usr/local/stat/report
LogFile=/var/log/aide.log
Hostname="www"
Mail='unix@domain.kz'
Date=`date '+%Y-%m-%d'`
cd $ReportDir
/usr/sbin/aide --check
SZ=`ls -l /var/log/aide.log | awk {'print $5'}`;
if [ $SZ -eq 0 ]; then
/bin/logger -p local0.info "Integrity Check was succesfull complete. Nothing changes."
else
# service sendmail start; sleep 15;
mail -s "Integrity Checking Warning from ${HOSTNAME}" $Mail < $LogFile # sleep 15; service sendmail stop; fi exit 0 6. Далее можно сделать снапшот системы и забакапить его на CD к примеру, для дальнейшей сверки в случае непрошенного вторжения:
# mkisofs -V Aide_DB`date +%F` -J -R -o aide.iso /Aide/directory

# cdrecord -v -eject aide.iso


Всё! Всем удачи и целостности в НГ !!!

четверг, 11 июня 2009 г.

DB bases.

1.MySql
#mysql -u user -ppass base_name <> base_dump.sql #export
#mysqlshow -u user -ppass #show bases
Flash password RH:
#mysqld_safe --skip-grant-tables --user=root &
#mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd‘) WHERE User=’root’;
mysql> FLUSH PRIVILEGES;
Show DB:
#mysql> show databases;
Clead DB:
#mysql> drop database basename;


среда, 10 июня 2009 г.

Bash bases.

6.3.1 Общее

![numb] — запуск строки из истории (history);
!str — запуск ближайшей строки соответствующей маске str из истории (history);
\ — продолжение текущей строки на другой строке или экранирование специального символа после данного символа (\$);
; — разделитель команд;
() — выполнения сценария в скобках в другой подоболочке;
(()) — включение выражений с «С» синтаксисом;
[] — включение условных операций с синтаксисом команды test;
“pwd” — определение строки с разрешением подстановки значений переменных;
'pwd' — определение строки с запрещением подстановки значений переменных;
`pwd` — результат выполнения команды pwd;
$(x) — выполнение команды x и возврат результата (подобно `x`);
x=pwd — определение переменной окружения x и присвоение ей строки pwd;
x='34' — определение переменной окружения x и присвоение ей строки '34';
x[2]=pwd — определение массива x и присвоение его элементу 2 строки pwd;
x=(zero one two three) — определение массива x и заполнение четырех его элементов;
x=([0]=zero [3]=three [2]=two [1]=one) — определение массива x и заполнение четырех его элементов по выбору;
$(( 100/3 )), $[100/3] — выполнение простых целочисленных операций.

Примеры:
a=4; echo $[a=$a+4] $[a+=4] $[a=a+4]
a=4; echo $[a=$a+4, a+=4, a=a+4]
$[2!=2] $[2!=3]
$[a=2<3] $a
Операции:
id++, id-- — постфиксное увеличение/уменьшение значения переменной на 1
++id, --id — префиксное увеличение/уменьшение значения переменной на 1
-, + — унарные минус и плюс
!, ~ — логическое и побитовое отрицание
** — возведение в степень
*, /, % — умножение, деление, получение остатка от деления
+, - — сложение, вычитание
< <, > > — побитовый сдвиг влево и вправо
<=, >=, <, > — сравнение
==, != — равенство и неравенство
& — побитовое И
^ — побитовое исключающее ИЛИ НЕ a^b – это а или с… но не в
| — побитовое ИЛИ
&& — логическое И
|| — логическое ИЛИ
выр1?выр2:выр3 — условное вычисление
=, *=, /=, %=, +=, ?=+ — присваивание
выр1,выр2 — запятая
() — выделение более приоритетного участка выражения

$x, ${x} — подстановка значения переменной/параметра x
${!x} — косвенная подстановка значения переменной/параметра указанного в x;
${#x} — косвенная подстановка значения переменной/параметра указанного в x,

если параметр – * или @, подставляется количество позиционных параметров,
если параметр – массив с индексом * или @, подставляется количество элементов массива;

${x:?»Error, no bar»} — генерировать ошибку если x не определена или равна нулю;
${x?»Error, no bar»} — -//-;
${x:="foose"} — присвоить значение по умолчанию если x не определена или равна нулю;
${x="foose"} — -//-;
${x:offset:lenght}, ${x:offset} — возвращает часть от x начиная с offset длиной lenght;

В качестве длины и смещения могут выступать:

  • арифметические выражения;
  • смещение отрицательное число – отсчитывается с конца значения параметра;
  • параметр – @, результат – позиционных параметров, начиная с параметра ;
  • параметр – массив с индексом @ или *, результат – элементов массива, начиная с ${параметр[m]};

${x:+"foose"} — если переменная определена то вместо неё используется “foose”;
${x+"foose"} — -//-;
${x:-"foose"} — если переменная определена то она используется иначе используется “foose”;
${x-"foose"} — -//-;
${пар#шабл} — ??
${пар##шабл} — ??
${пар%шабл} — ??
${пар% %шабл} — ??
${пар/шабл/стр} — заменяется первая, самая длинная подстрока значения параметра, на указанную строку;
${пар/ /шабл/стр} — заменяются все самые длинные подстроки значения параметра, на указанную строку;
${array[@]} — обращение сразу ко всему массиву;
$'\n' — вставка управляющего символа в строку;
Comm && — выполняет действие после выражения если команда неудачна;
Comm || — выполняет действие после выражения если команда удачна;
MYVAR#*fo — отсекает от начала переменной MYVAR самую короткую часть удовлетворяющую маске *fo;
MYVAR##*fo — отсекает от начала переменной MYVAR самую длинную часть удовлетворяющую маске *fo;
MYVAR%fo* — отсекает от конца переменной MYVAR самую короткую часть удовлетворяющую маске fo*;
MYVAR% %fo* — отсекает от конца переменной MYVAR самую длинную часть удовлетворяющую маске fo*;
MYVAR:2:5 — возвращает часть строки MYVAR которая начинается с 2 символа и заканчивается 5;

6.3.2 Служебные переменные языка

$# — количество фактических аргументов;
$- — флаги (однобуквенные), указанные при запуске shell или установленные посредством set.
$? — код возврата последней команды;
$$, $PPID — PID текущего процесса (скрипта);
$! — PID последнего запущенного фонового процесса;
$* — раскрывает единственное слово, содержащее список всех позиционных парам;
$@ — ссылка на все аргументы команды отделенные пробелами;
$0 — имя команды в командной строке;
$n, ${n} — аргумент n командной строки (n = 1...);

6.3.3 Основные переменные окружения оболочки

PWD — текущий рабочий каталог;
UID — цифровой идентификатор текущего пользователя;
umask — содержит маску прав доступа по которой создаются новые файлы;
BASH — полный путь вызова BASH;
BASH_VERSION — версия данного экземпляра BASH;
EDITOR — содержит имя редактора используемого для редактирования некоторых конфигурационных файлов;
PAGER — содержит имя программы для отображения информационных страниц (типа more);
SHLVL — количество запущенных BASH;
REPLY — содержит последнюю строку ввода;
RANDOM — содержит случайное число в диапазоне 0..32767;
SECONDS — время в секундах от запуска BASH;
HISTCMD — номер текущей команды в истории;
IFS — цепочка символов разделителей полей;
PATH — пути поиска команд;
HOME — домашний каталог текущего пользователя;
MAIL — имя файла в который поступает электронная почта;
LOGNAME — имя пользователя использованное для входа в систему;
SHELL — имя интерпретатора команд;
LD_LIBRARY_PATH — описания пользовательских путей к динамическим библиотекам;
DISPLAY — описывает адрес дисплея для X-приложений;
LANG — переменная локали;
TERM — тип пользовательского терминала;
INPUTRC — содержит имя файла параметров для библиотеки readline, определяющей параметры ввода с клавиатуры;
PS1,PS2 — описывает вид приглашения в командной строке;
TZ — информация о часовом поясе;
MALLOC_CHECK_ — указывает что делать с ошибками в функциях malloc, free:

= 0 — молча игнорировать все ошибки;
= 1 — сообщить об ошибке и продолжить работу;
= 2 — прервать (без сообщения);
= 3 — прервать и сообщить об ошибке.

MALLOC_TRACE — определяет путь для команды mtrace и функции в программе mtrace;

6.3.4 Основные операторы

& — выполнить команду до него в фоновом режиме;
if [ Condition ] — условный оператор ( if ( Condition ) – tch);
then — тело выполнения условия;
else — тело невыполнение условия;
elif [ Condition ] — совмещенная команда else if;
fi — окончание условного оператора;
for x in 1 2 3 4 — оператор цикла, в x перебираются значения за in ( foreach x (1 2 3 4) – tch ). Общая структура циклов:

for x in 1 2 3 4

do #тело цикла

done

while [ Condition ] — выполняет цикл пока верно условие Condition ( while ( Condition ) -tch );
until [ Condition ] — выполняет цикл до равенства условия Condition;
(repeat x expression – tch ) — выполняет повторение выражения x раз;
select x in list; — запрашивает выбор из списка и присваивает выбранное значение переменной ;
do — начало тела цикла определенного for, while, until;
done — конец тела цикла определенного for, while, until;
break — завершение цикла;
continue — продолжение цикла сначала;
case x in — команда выбора. Имеет структуру:

case "${x##*.}" in
gz) gzunpack ${SROOT}/${x} ;;
bz2) bz2unpack ${SROOT}/${x} ;;
*) echo «Неизвестный формат архива» exit ;;
esac

function func() { } — определяет функцию с именем func;
func a1 a2 a3 — вызов функции;

6.3.5 Встроенные команды

. file — выполнить все команды в файле после точки;
eval [attr] — выполнить команду заданную аргументами;
exec [prog] — сменить программу текущего процесса указанной, т.е. выполнить в данном процессе новую программу;
exit n — выход из сценария с кодом ;
shift [n] — сдвиг параметров командной строки на единицу (для доступа к параметрам с номером > 9 );
cd [dir] — сменить директорию;
pwd — получение имени текущей директории;
read x y — ввод строки из двух слов;
set x = str — инициализация переменной и установка различный настроек интерпретатора;
-A Name_A 1 2 3 4 5 — инициализация массива;
-V,-X — включение отладочного режима;
+V,+X — выключение отладочного режима;
unset x — отмена инициализации переменной;
export x — создает переменную окружения x и экспортирование её в систему;
-p — вывод всех экспортированных переменных.
local x — создает локальную переменную окружения которая не перекрывает глобальной (часто используется для функций);
declare — декларирование переменных и изменение их атрибутов;
trap — установка обработчиков сигналов в скрипте;
alias [имя=синоним] — создание псевдонимов или альтернативных имен команд;
unalias — удаление псевдонима;
test — проверка условий, используется в циклах;
getopts — разбор опций.

6.3.6 Операторы сравнения файлов

-e — существует;
-d — каталог;
-f — обычный файл;
-c — специальный файл;
-b — специальный блочный файл;
-p — специальный файл именованного канала;
-L — символическая ссылка;
-r — для чтения;
-w — для записи;
-x — исполняемый;
-z — файл пуст;
-s,(-z) — имя файла не нулевой длины;
(-o) — пользователь является владельцем файла;
fname1 -nt fname2 — fname1 новее fname2;
fname1 -ot fname2 — fname1 старше fname2;

6.3.7 Операторы сравнения цепочек символов, арифметических выражений и логические операторы

-z — строка пуста;
-n — строка не пуста;
=, (==) — строки равны;
!= — строки неравна;
-eq — равно;
-ne — неравно;
-lt,(< ) — меньше;
-le,(<=) — меньше или равно;
-gt,(>) — больше;
-ge,(>=) — больше или равно;
! — отрицание логического выражения;
-a,(&&) — логическое «И»;
-o,(||) — логическое «ИЛИ»

6.3.8 Перенаправления вывода

| — перенаправление вывода в канал;
< file — file записать в STDIN;
> file — STDOUT записать в file;
<> file — чтение и запись в файл;
>> file — STDOUT добавить в file;
<< str — определяет слово как признак окончания ввода;
2> file — STDERR записать в file (могут указываться дескрипторы других файлов);
1>&2 — STDOUT записать в STDERR;
2>&1 — STDERR записать в STDOUT;
&> file — STDOUT и STDERR записать в file;

6.3.9 Специальные символы (экранирование)

\n — новая строка
\b — возврат на один символ
\c — печать строки без символа новой строки
\f — переход к новой странице/экрану
\r — возврат каретки
\t — табуляция
\v — табуляция по вертикали
\\ — обратная косая черта
0nnn — восьмеричное число
xNN — шестнадцатеричное число

6.3.10 Маски (подстановка, может быть отключена опцией -f или set)

* — производная цепочка символов;
? — производный символ;
[...] — символ в скобках [A-Z]; "! и ^" – исключение символа.

6.3.11 Представление численных значений

045 — восьмеричное число (начинается с 0)
0x45, 0X32 — шестнадцатеричное число
[основание#]n — число с основанием (по умолчанию основание 10)

Примеры:
$[2#101] $[10#101] $[16#101]
$[16#FF] $[16#ff] $[0xFF]
$[64**2] $[64#@@]
$[64#z] $[64#Z]

вторник, 21 апреля 2009 г.

LVM

Описание

LVM (свежая версия LVM2) - это система управления дисковым пространством, абстрагирующаяся от физических устройств. Она позволяет эффективно использовать и легко управлять дисковым пространством. LVM обладает хорошей масштабируемостью, уменьшает общую сложность системы. У логических томов, созданных с помощью LVM, можно легко изменить размер, зашифровать, скопировать, переместить, а их названия могут нести большую смысловую нагрузку, в отличие от традиционных /dev/sda, /dev/hda...

Как это выглядит

LVM позволяет объединить несколько физических партиций в единую группу томов (или несколько групп). Внутри этой группы, независимо от количества входящих в нее физических партиций, можно создавать логические тома (logical volumes).

Проще говоря внутри LVM-партиций (pv), объединенных в одну группу (vg) вы можете создать сколько нужно логических томов (lv), причем размер их можно будет менять динамически внутри группы даже не отмонтируя тома!

Наглядно эту цепочку можно представить так:

Жесткий диск -> Физические партиции -> Группа томов -> Логическая партиция -> Файловая система

Жесткий диск разбивается на Физические партиции (hda3, hd5), они помечаются как pv (команда pvcreate), потом они все объединяются в логическую Группу томов vg (volume group) и все их место становится доступным местом внутри этой группы. Далее в группе уже создаются логические тома lv (logical volume), разделяющие между собой пространство внутри vg (Группы томов), они будут представлять собой устройства монтирования для /home, /usr и т.п. Затем Логическая партиция форматируется в конечную файловую систему (reiserfs, ext3), и монтируется в систему. Эти логические тома можно изменять в размере внутри группы, а можно расширить место в самой группе, добавив туда еще несколько физических партиций. Также потом эти тома можно зеркалировать, переносить, делать бекапы, шифровать и многое другое.

Зачем это нужно

Позже по мере работы можно добавлять новые физические партиции (отформатированные под LVM). То есть к примеру при покупке нового винчестера или создании нового раздела на старом - его можно будет отформатировать под LVM и подключить к уже существующим томам. Место для этих томов увеличится и размер любого из томов (или сразу нескольких) можно будет изменить.

Разбиение на много логических томов полезно как для защиты от переполнения (при переполнении одного раздела - вся система не становится, а продолжает работать), так и для безопасности (к примеру /tmp подмонтировать как noexec, а /etc к примеру как ro).

Более того, при LVM вы совершенно можете не заботиться о размере раздела, т.к. его можно изменить в любое время, а еще можно подключать новое "свободное место" для этих разделов даже с другого физического носителя по типу RAID-систем. А внутри создавать уже логические тома на любимой для вас файловой системе(ext2, ext3, reiserfs и пр.).

Пример работы с LVM

Загрузка модуля

modprobe dm-mod

Подготовка партиций

Подготовка физических партиций hda3 и hda6 для работы в LVM2:

pvcreate /dev/hda3 /dev/hda6

(физические разделы должны существовать и иметь тип 8E)

Создание Группы томов

Создаем группу томов с именем vg, и включаем туда физическую партицию hda3

vgcreate vg /dev/hda3

Теперь группа vg содержит ровно столько места, сколько имеет hda3

Расширение группы томов

Добавить физическую партицию hda6 к примеру к уже существующей группе vg можно так:

vgextend vg /dev/hda6

Теперь группа vg содержит уже суммарное место разделов hda3 и hda6.

Вообще авторы LVM не советуют подключать и расширять группы без надобности. Они советуют разбить винчестер на много небольших партиций (к примеру 160ГБ на 8 разделов по 20ГБ). И подключать их в группы по мере необходимости в увеличении тома, т.к. увеличить раздел всегда проще чем уменьшить его. Посему и логические тома (logical volumes) лучше начинать с малых размеров, а при необходимости - подключать новые партиции и увеличивать размер томов.

Создание логических томов

Создать логические тома для разделов к примеру:

/home 2G
/opt 2G
/tmp 1G

можно командами:

lvcreate -L2G -nhome vg
lvcreate -L2G -nopt vg
lvcreate -L1G -ntmp vg

В результате позже появятся устройства /dev/vg/home, /dev/vg/opt, /dev/vg/tmp, которые можно будет уже форматировать в файловые системы.

Увеличение размера

Увеличение размера тома

Увеличить к примеру раздел /var можно будет командой

lvextend -L+1G /dev/vg/var

если конечно вам позволяет место. Узнать о свободном месте можно командами pvs, vgs. Увеличение размера уже после отформатирования можно будет делать даже неотмонтируя устройства. Для этого надо будет собрать пакет для работы с reiserfs (или reiser4).

Увеличение размера файловой системы

После увеличения размера логического тома, следует увеличить размер файловой системы:

для ext3:
resize2fs -f /dev/vg/var

Уменьшение размера

Уменьшить размер значительно сложнее чем увеличить. По этому-то и рекомендуется изначально делать все разделы маленькими, а потом их увеличивать.

Уменьшение размера файловой системы

Тут нет online-изменения, как при увеличении. Для уменьшения размера придется файловую систему отмонтировать:

umount /dev/vg/usr

Внимание! Ни в коем случае не используйте umount -f или umount -l, если система говорит что раздел занят! Это может повредить данные при изменении размера. Лучше подождите пока он освободиться, переведите систему в readonly (mount -o remount,rw /dev/vg/var), или даже перезагрузитесь.

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

resize_reiserfs -s-2G /dev/vg/usr

Этот процесс достаточно долгий, зависит от размера и количества файлов на файловой системе.

Уменьшение размера тома

Теперь уменьшаем сам том:

lvreduce -L-2G /dev/vg/usr

Все. Файловую систему можно примонтировать обратно:

mount -treiserfs /dev/vg/usr /usr

После уменьшения размера рекомендуется делать проверку fsck файловой системы.

Поиск существующих томов

Для поиска существующих томов (при подключении новых, или перезагрузке), можно воспользоваться командами:

vgscan
vgchange -a y
vgmknodes vg


успешно скопировано с : http://belgorod.lug.ru/wiki/index.php/LVM