Короток о dpkg

понедельник, 30 марта 2009 г.
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), а также все пакеты в ошибочных состояниях.

Коротко о 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 показать описание пакета

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

Рекомендации по безопасности использования SSH

- Запрещение удаленного root-доступа.
- Запрещение подключения с пустым паролем или отключение входа по паролю.
- Выбор нестандартного порта для SSH-сервера.
- Использование длинных SSH2 RSA-ключей (2048 бит и более).
- Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файрвола).
- Запрещение доступа с некоторых потенциально опасных адресов.
- Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
- Регулярный просмотр сообщений об ошибках аутентификации.
- Установка детекторов атак (IDS, Intrusion Detection System).
- Использование ловушек, подделывающих SSH-сервис (honeypots).

Pазрешение в консоли (console resolution)

четверг, 26 марта 2009 г.
Еще один пост про консоль. Разрешение вне Иксов, в чистой консоли (например ctrl+alt+F1 - в первой консоли) или при загрузке, мягко говоря несколько неудобно. Слишком мало. Я предлагаю немного увеличить его. 

Для изменения параметров разрешения монитора в режиме консоли нужно передать ядру при загрузке параметр 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

вторник, 24 марта 2009 г.

Чтобы посмотреть текущие дату и время - date.

Если необходимо изменить их, воспользуйтесь следующим форматом команды:

date MMDDhhmmCCYY.ss

MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды

Например:

date 100615352006.30

Эта команда установит текущие дату и время на 06 октября 2006 года, 15:35:30.

Дату и время может изменять только root-пользователь.