Дамп базы данных в файл
mysqldump --opt database > backup-file.sql
Восстановление из файла
mysql database
Дамп базы данных на удаленный хост
mysqldump --opt database | mysql --host=remote-host -C database
Дамп нескольких баз в файл
mysqldump --databases database1 [database2 ...] > my_databases.sql
Дамп всех баз в файл
mysqldump --all-databases > all_databases.sql
Перенос базы в кодировке ср1251
- сделать дамп на старом хостинге в кодировке CP1251, для этого необходимо выполнить команду mysqldump с параметром --default-character-set=cp1251
- в самое начала файла дампа вставить строку: SET NAMES cp1251;
- восстановить этот файл дампа в базу
Зеркальный програмный рейд
Просотр таблицы разделов диска /dev/hda
#sdfisk -l /dev/hda
Копирование таблицы разделов диска /dev/hda на диск /dev/hdc
#sfdisk -d /dev/hda | sfdisk /dev/hdc
, либо вручную создаем необходимый раздел
Создание зеркального раздела /dev/md0
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdc1
Создание файловой системы
# mkfs.ext3 /dev/md0
Сохраняем конфигурацию
cd /etc/mdadm
echo ’DEVICE /dev/hd[a-z] /dev/sd*[a-z]’ > mdadm.conf
echo 'MAILADDR root' >> mdadm.conf
mdadm --examine --scan --config=mdadm.conf >> mdadm.conf
#sdfisk -l /dev/hda
Копирование таблицы разделов диска /dev/hda на диск /dev/hdc
#sfdisk -d /dev/hda | sfdisk /dev/hdc
, либо вручную создаем необходимый раздел
Создание зеркального раздела /dev/md0
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdc1
Создание файловой системы
# mkfs.ext3 /dev/md0
Сохраняем конфигурацию
cd /etc/mdadm
echo ’DEVICE /dev/hd[a-z] /dev/sd*[a-z]’ > mdadm.conf
echo 'MAILADDR root' >> mdadm.conf
mdadm --examine --scan --config=mdadm.conf >> mdadm.conf
Два swap-файла на разных дисках
Для повышения производительности разместим файл подкачки на различных дисках /dev/hda1 & /dev/hdc1
отключаем своп
или создаем
mkswap /dev/hda1
mkswap /dev/hdc1
Подключаем с одинаковым приоритетом
swapon -a /dev/hda1 -p 1
swapon -a /dev/hdc1 -p 1
Просмотр состояния
#swapoff -s
или
#cat /proc/swaps
Добавляем в /etc/fstab для автоматического подключения при загрузке
/dev/hda1 none swap sw,pri=1 0 0
/dev/hdc1 none swap sw,pri=1 0 0
Grub + raid1
Setting up GRUB:
------------------------------------------------------------------
# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
------------------------------------------------------------------
/boot/grub/menu.lst
------------------------------------------------------------------
# Boot automatically after 5 secs.
timeout 5
# By default, boot the first entry.
default 0
# Fallback to the second entry.
fallback 1
title Debian GNU/Linux, kernel 2.6.18-4-686 /dev/sda
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/md0 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefault
title Debian GNU/Linux, kernel 2.6.18-4-686 /dev/sdb
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/md0 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefault
------------------------------------------------------------------
# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
------------------------------------------------------------------
/boot/grub/menu.lst
------------------------------------------------------------------
# Boot automatically after 5 secs.
timeout 5
# By default, boot the first entry.
default 0
# Fallback to the second entry.
fallback 1
title Debian GNU/Linux, kernel 2.6.18-4-686 /dev/sda
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/md0 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefault
title Debian GNU/Linux, kernel 2.6.18-4-686 /dev/sdb
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/md0 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefault
Настройка шифрования файлов под Linux с помощью Crypto-loopback устройств
Ниже, краткий пересказ самого главного (для Debian GNU/Linux) :
Установка пакетов:
apt-get install cryptsetup
Подгрузка модулей:
modprobe loop
modprobe aes
echo -e "naes\ncryptoloop" >> /etc/modules
Создаем образ будущего шифрованного раздела:
dd if=/dev/urandom of=/home/marco/crloop bs=1M count=640
Способ 1 (устарел, лучше использовать dm-crypt):
modprobe cryptoloop
losetup -e aes /dev/loop0 /home/marco/crloop
mkfs -t ext2 /dev/loop0
mount /dev/loop0 /media/cryptovolume
.....
umount /media/cryptovolume
losetup -d /dev/loop0
Способ 2:
modprobe dm-crypt
losetup /dev/loop0 /home/marco/crloop
cryptsetup -c aes -y create crloop /dev/loop0
mkfs.ext3 /dev/mapper/crloop
mount /dev/mapper/crloop /media/cryptovolume
.....
umount /media/cryptovolume
cryptsetup remove crloop
losetup -d /dev/loop0.
##########Bug##############
modprobe: WARNING: Error inserting padlock_aes (/lib/modules/2.6.24/12-generic/kernel/drivers/crypto/padlock-aes-.ko): No such device
# FIX
echo "alias aes aes_generic" >> /etc/modprobe.d/aliases
Установка пакетов:
apt-get install cryptsetup
Подгрузка модулей:
modprobe loop
modprobe aes
echo -e "naes\ncryptoloop" >> /etc/modules
Создаем образ будущего шифрованного раздела:
dd if=/dev/urandom of=/home/marco/crloop bs=1M count=640
Способ 1 (устарел, лучше использовать dm-crypt):
modprobe cryptoloop
losetup -e aes /dev/loop0 /home/marco/crloop
mkfs -t ext2 /dev/loop0
mount /dev/loop0 /media/cryptovolume
.....
umount /media/cryptovolume
losetup -d /dev/loop0
Способ 2:
modprobe dm-crypt
losetup /dev/loop0 /home/marco/crloop
cryptsetup -c aes -y create crloop /dev/loop0
mkfs.ext3 /dev/mapper/crloop
mount /dev/mapper/crloop /media/cryptovolume
.....
umount /media/cryptovolume
cryptsetup remove crloop
losetup -d /dev/loop0.
##########Bug##############
modprobe: WARNING: Error inserting padlock_aes (/lib/modules/2.6.24/12-generic/kernel/drivers/crypto/padlock-aes-.ko): No such device
# FIX
echo "alias aes aes_generic" >> /etc/modprobe.d/aliases
web server scanners
# Nikito
www.cirt.net
# Paros proxy
http://parosproxy.org/index.shtml
# WebScarb
http://www.owasp.org/index.php/Main_Page
# WebInspect
hp.com
# Burp Scanner
http://portswigger.net/
#Wikto
http://www.sensepost.com/research/wikto/
#Acunetix Web Security Scanner
http://www.acunetix.com/
# Rational AppScan
ibm.com
# N-stalker
http://nstalker.com/products/free/
www.cirt.net
# Paros proxy
http://parosproxy.org/index.shtml
# WebScarb
http://www.owasp.org/index.php/Main_Page
# WebInspect
hp.com
# Burp Scanner
http://portswigger.net/
#Wikto
http://www.sensepost.com/research/wikto/
#Acunetix Web Security Scanner
http://www.acunetix.com/
# Rational AppScan
ibm.com
# N-stalker
http://nstalker.com/products/free/
Короток о dpkg
dpkg --get-selections [образец...] Выдает список состояний выбора пакетов.
dpkg -p | --print-avail имя пакета Выводит детальную информацию о пакете, которую извлекает из файла /var/lib/dpkg/available.
dpkg -l | --list <образец имени пакета>... Показывает пакеты, соответствующие данному образцу. Если образец имени пакета не задан, показывает все пакеты в /var/lib/dpkg/available. В образце имени пакета можно указывать обычные символы шаблона командной оболочки.
dpkg -L | --listfiles <имя пакета> ... Показывает файлы, установленные на вашей системе из пакета с указанным именем. Заметьте, однако, что файлы, созданные установочными скриптами пакета, не будут показаны.
dpkg -S | --search <образец имени файла для поиска> ... Ищет в установленных пакетах файл по заданному образцу. В образце допустимы стандартные символы шаблонов командной оболочки.
dpkg --audit команда покажет частично установленные (Half-Installed) пакеты, пакеты, настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях.
dpkg -p | --print-avail имя пакета Выводит детальную информацию о пакете, которую извлекает из файла /var/lib/dpkg/available.
dpkg -l | --list <образец имени пакета>... Показывает пакеты, соответствующие данному образцу. Если образец имени пакета не задан, показывает все пакеты в /var/lib/dpkg/available. В образце имени пакета можно указывать обычные символы шаблона командной оболочки.
dpkg -L | --listfiles <имя пакета> ... Показывает файлы, установленные на вашей системе из пакета с указанным именем. Заметьте, однако, что файлы, созданные установочными скриптами пакета, не будут показаны.
dpkg -S | --search <образец имени файла для поиска> ... Ищет в установленных пакетах файл по заданному образцу. В образце допустимы стандартные символы шаблонов командной оболочки.
dpkg --audit команда покажет частично установленные (Half-Installed) пакеты, пакеты, настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях.
Коротко о apt
apt-get update обновление репозитария
apt-get dist-upgrade полное обновление ОС
apt-get check проверить текущее состояние системы
apt-get install установить пакет. Всё скаченное apt-get лежит в /var/cache/apt/archives
apt-get -f install исправить зависимости
apt-get install -d скачать пакет не устанавливая. Лежать будет в /var/cache/apt/archives
apt-get source скачать исходный текст пакета
apt-get remove удалить пакет. Результаты можно посмотреть в /var/log/user/info
apt-cache search поиск пакета по описанию
apt-cache showpkg показать описание пакета
apt-get dist-upgrade полное обновление ОС
apt-get check проверить текущее состояние системы
apt-get install
apt-get -f install
apt-get install -d
apt-get source
apt-get remove
apt-cache search
apt-cache showpkg
Mysql tips
- Проверить целостность базы данных можно командой:
# /usr/bin/mysqlcheck -a DBName
- Выгрузить базу MySQL можно командой:
# mysqldump -u root -p DBName > mydb.sql
Если mysqldump не запускается, то нужно указать полный путь до этого файла, который можно узнать командой:
# find / -name mysqldump
/usr/local/mysql-3.23.54a-pc-linux-i686/bin/mysqldump
Сами базы MySQL хранит в /var/lib/mysql/db/, здесь можно посмотреть какие базы созданы.
Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности предварительно удалить старую:
# mysql -u root -p
mysql> drop database if exists DBName;
mysql> create database DBName;
mysql> quit
а затем в неё загрузить данные:
# mysql -u root -p DBName < mydb.sql
Если для пользователя root в MySQL нет пароля, то параметр -p не нужен, также можно задать пароль явным образом, только без пробела, например -pPassWord. Далее нужно убедиться, что в новой базе есть тот пользователь, от имени которого происходило обращение к базе. Если пользователя нет, то чтоб создать в точности такого пользователя с соответствующими правами, выгружаем базу mysql и выбираем все строки, касающиеся этого пользователя:
# mysqldump -u root -p mysql > mysqldb.sql
В файле mysqldb.sql останется приблизительно следующее:
INSERT INTO db VALUES ('%','DBName','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO host VALUES ('localhost','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES ('localhost', 'UserName', '','N','N','N','N','N','N','N','N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0);
При переходе с одной версии MySQL на другую нужно учитывать, что количество параметров скорее всего будет разным, поэтому команду INSERT придётся подредактировать. Также может изменится алгоритм шифрования паролей. Сколько именно параметров можно узнать выполнив:
mysql> SHOW COLUMNS FROM db;
Загружаем базу командой:
# mysql -u root -p mysql < mysqldb.sql
- Внести запись в базу данных из bash можно таким образом (определив, конечно, переменные):
echo "INSERT INTO table_name (\`in\`,\`out\`) VALUES ('$delta_in', '$delta_out');" > $tmp_dir/temp.sql
`mysql -u$db_user -p$db_pass $db_name < $tmp_dir/temp.sql`
Несколько полезных команд: SHOW TABLES; # показать таблицы в БД
SHOW COLUMNS FROM db; # показать поля таблицы db
USE mysql; # перейти в БД mysql
SELECT host,user FROM user; # показать поля host, user таблицы user
DROP TABLE transport; # удалить таблицу transport
DELETE FROM user WHERE user='acct' AND host='%'; # удалить конкретную запись
UPDATE db SET Delete_priv='Y' WHERE user='acct'; # изменить значение поля в записи
FLUSH PRIVILEGES; # применить внесённые изменения
mysql -u root -p12345 postfix < DB.sql # пакетное выполнение SQL выражений для базы данных postfix
ALTER TABLE mailbox ADD (uid int(10) unsigned DEFAULT '107' NOT NULL); # добавляем в таблицу mailbox обязательное поле uid со значением по умолчанию = 107
ALTER TABLE mailbox DROP uid; # удаляем поле uid из таблицы mailbox
GRANT ALL PRIVILEGES ON DBName.* TO UserName@localhost IDENTIFIED BY '12345'; # дать все права на базу DBName пользователю UserName, подключающемуся с localhost с паролем 12345
# /usr/bin/mysqlcheck -a DBName
- Выгрузить базу MySQL можно командой:
# mysqldump -u root -p DBName > mydb.sql
Если mysqldump не запускается, то нужно указать полный путь до этого файла, который можно узнать командой:
# find / -name mysqldump
/usr/local/mysql-3.23.54a-pc-linux-i686/bin/mysqldump
Сами базы MySQL хранит в /var/lib/mysql/db/, здесь можно посмотреть какие базы созданы.
Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности предварительно удалить старую:
# mysql -u root -p
mysql> drop database if exists DBName;
mysql> create database DBName;
mysql> quit
а затем в неё загрузить данные:
# mysql -u root -p DBName < mydb.sql
Если для пользователя root в MySQL нет пароля, то параметр -p не нужен, также можно задать пароль явным образом, только без пробела, например -pPassWord. Далее нужно убедиться, что в новой базе есть тот пользователь, от имени которого происходило обращение к базе. Если пользователя нет, то чтоб создать в точности такого пользователя с соответствующими правами, выгружаем базу mysql и выбираем все строки, касающиеся этого пользователя:
# mysqldump -u root -p mysql > mysqldb.sql
В файле mysqldb.sql останется приблизительно следующее:
INSERT INTO db VALUES ('%','DBName','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO host VALUES ('localhost','UserName','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES ('localhost', 'UserName', '','N','N','N','N','N','N','N','N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0);
При переходе с одной версии MySQL на другую нужно учитывать, что количество параметров скорее всего будет разным, поэтому команду INSERT придётся подредактировать. Также может изменится алгоритм шифрования паролей. Сколько именно параметров можно узнать выполнив:
mysql> SHOW COLUMNS FROM db;
Загружаем базу командой:
# mysql -u root -p mysql < mysqldb.sql
- Внести запись в базу данных из bash можно таким образом (определив, конечно, переменные):
echo "INSERT INTO table_name (\`in\`,\`out\`) VALUES ('$delta_in', '$delta_out');" > $tmp_dir/temp.sql
`mysql -u$db_user -p$db_pass $db_name < $tmp_dir/temp.sql`
Несколько полезных команд: SHOW TABLES; # показать таблицы в БД
SHOW COLUMNS FROM db; # показать поля таблицы db
USE mysql; # перейти в БД mysql
SELECT host,user FROM user; # показать поля host, user таблицы user
DROP TABLE transport; # удалить таблицу transport
DELETE FROM user WHERE user='acct' AND host='%'; # удалить конкретную запись
UPDATE db SET Delete_priv='Y' WHERE user='acct'; # изменить значение поля в записи
FLUSH PRIVILEGES; # применить внесённые изменения
mysql -u root -p12345 postfix < DB.sql # пакетное выполнение SQL выражений для базы данных postfix
ALTER TABLE mailbox ADD (uid int(10) unsigned DEFAULT '107' NOT NULL); # добавляем в таблицу mailbox обязательное поле uid со значением по умолчанию = 107
ALTER TABLE mailbox DROP uid; # удаляем поле uid из таблицы mailbox
GRANT ALL PRIVILEGES ON DBName.* TO UserName@localhost IDENTIFIED BY '12345'; # дать все права на базу DBName пользователю UserName, подключающемуся с localhost с паролем 12345
Рекомендации по безопасности использования SSH
- Запрещение удаленного root-доступа.
- Запрещение подключения с пустым паролем или отключение входа по паролю.
- Выбор нестандартного порта для SSH-сервера.
- Использование длинных SSH2 RSA-ключей (2048 бит и более).
- Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файрвола).
- Запрещение доступа с некоторых потенциально опасных адресов.
- Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
- Регулярный просмотр сообщений об ошибках аутентификации.
- Установка детекторов атак (IDS, Intrusion Detection System).
- Использование ловушек, подделывающих SSH-сервис (honeypots).
- Запрещение подключения с пустым паролем или отключение входа по паролю.
- Выбор нестандартного порта для SSH-сервера.
- Использование длинных SSH2 RSA-ключей (2048 бит и более).
- Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файрвола).
- Запрещение доступа с некоторых потенциально опасных адресов.
- Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
- Регулярный просмотр сообщений об ошибках аутентификации.
- Установка детекторов атак (IDS, Intrusion Detection System).
- Использование ловушек, подделывающих SSH-сервис (honeypots).
Pазрешение в консоли (console resolution)
Еще один пост про консоль. Разрешение вне Иксов, в чистой консоли (например ctrl+alt+F1 - в первой консоли) или при загрузке, мягко говоря несколько неудобно. Слишком мало. Я предлагаю немного увеличить его.
Для изменения параметров разрешения монитора в режиме консоли нужно передать ядру при загрузке параметр vga , Значение параметра - число, подбираемое по следующей таблице:
По горизонтали - разрешение, по вертикали - глубина цвета.
Например, на мониторе с Иксовым разрешением 1280*1024 подойдет консольное разрешение 1024*768, если больше - то текст будет выглядеть слишком уж мелко, как для консоли. Значение vga=0x305.
А на 15-дюймовом мониторе с обычным разрешением 1024*768 отлично подойдет консольное разрешение 800*600. То есть значение vga=0x303.
Теперь, куда и как это прописывается:
Открываем файлик /boot/grub/menu.lst и добавляем в загрузку ядра выбранное значение нашего параметра.
sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.bak
sudo vi /boot/grub/menu.lst
Находим блок загрузки, похожий на
И в строку загрузки ядра дописываем (см. Текстовый редактор vi) параметр vga:
kernel /boot/vmlinuz-2.6.15-25-386 root=/dev/hda6 vga=0x305 ro quiet splash.
Значение подбираете сами в зависимости от своих потребностей.
Перегружаете машину, получаете разрешенное счастье в консоли :)
Для изменения параметров разрешения монитора в режиме консоли нужно передать ядру при загрузке параметр vga , Значение параметра - число, подбираемое по следующей таблице:
640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B
По горизонтали - разрешение, по вертикали - глубина цвета.
Например, на мониторе с Иксовым разрешением 1280*1024 подойдет консольное разрешение 1024*768, если больше - то текст будет выглядеть слишком уж мелко, как для консоли. Значение vga=0x305.
А на 15-дюймовом мониторе с обычным разрешением 1024*768 отлично подойдет консольное разрешение 800*600. То есть значение vga=0x303.
Теперь, куда и как это прописывается:
Открываем файлик /boot/grub/menu.lst и добавляем в загрузку ядра выбранное значение нашего параметра.
sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.bak
sudo vi /boot/grub/menu.lst
Находим блок загрузки, похожий на
title Ubuntu, kernel 2.6.15-25-386
root (hd0,5)
kernel /boot/vmlinuz-2.6.15-25-386 root=/dev/hda6 ro quiet splash
initrd /boot/initrd.img-2.6.15-25-386
savedefault
boot
И в строку загрузки ядра дописываем (см. Текстовый редактор vi) параметр vga:
kernel /boot/vmlinuz-2.6.15-25-386 root=/dev/hda6 vga=0x305 ro quiet splash.
Значение подбираете сами в зависимости от своих потребностей.
Перегружаете машину, получаете разрешенное счастье в консоли :)
Восстановление md RAID1 массива
Диспозиция следующая 2-а HDD диска, один из которых на момент работы полностью обнулён, а второй содержит актуальный данный разрушенного RAID1 массива. Условимся, что:
/dev/hda - содержит актуальные данные;
/dev/hdc - свободен.
1. Создание аналогичной таблицы разделов:
sfdisk -ld /dev/hda | sfdisk /dev/hdc
2. Визуальная проверка таблицы разделов:
sfdisk -l /dev/hdc
3. Добавление партиции к /dev/md0
mdadm --add /dev/md0 /dev/hdc1
4. Восстановление менеджера загрузки grub
grub> device (hd0) /dev/hdc
grub> root (hd0, 0)
grub> setup (hd0)
grub> quit
Дата в Linux
Чтобы посмотреть текущие дату и время - date.
Если необходимо изменить их, воспользуйтесь следующим форматом команды:
MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды
Например:
Эта команда установит текущие дату и время на 06 октября 2006 года, 15:35:30.
Дату и время может изменять только root-пользователь.
Подписаться на:
Сообщения (Atom)