пятница, 1 августа 2014 г.

Создание пользователя и установка прав в MYSQL

GRANT SELECT ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON db_name.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'username'@'localhost'

вторник, 29 июля 2014 г.

Двусторонняя синхронизация удаленных директорий (unison и incron)

Для двусторонней синхронизации двух и более директорий, размещенных на разных узлах, отлично подходит утилита unison. Основным отличием от других инструментов зеркалирования является ее способность производить синхронизацию в обе стороны на основании реплик каждого узла.
Утилита incron позволяет отслеживать события файловой системы в определенном каталоге, и по любому событию запускать определенный скрипт. Это позволяет автоматизировать синхронизацию двух каталогов, если в исполняемом скрипте запускать команду unison. Это при условии, что настроек беспарольный доступ по ssh на другую машину. Нужно уточнить, чтобы работал беспарольный доступ из скрипта, необходимо экспортировать переменную окружения HOME=dir для пользователя, от которого производится беспарольный доступ.
Подробнее в материалах ниже:
http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html
http://rbgeek.wordpress.com/2012/08/30/file-synchronization-between-two-ubuntu-servers-using-unison/
http://www.cyberciti.biz/faq/unison-file-synchronizer-tool/
http://www.cyberciti.biz/faq/linux-inotify-examples-to-replicate-directories/
http://stackoverflow.com/questions/1034243/how-to-get-a-unix-script-to-run-every-15-seconds

понедельник, 7 июля 2014 г.

Подключение к инету через прокси в eclipse

В eclipse, начиная с версии luna, изменился подход к аутентификации к прокси серверу для инета. Ранее необходимо было указывать в имени пользователя еще и домен (ELINS\serkin), теперь этого не требуется (просто имя пользователя, serkin)

пятница, 4 июля 2014 г.

Установка и настройка необходимых пакетов для чистой ubuntu или mint

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install aptitude mc ncdu zsh xneur pidgin kmail ttf-mscorefonts-installer krusader openssh-server python-svn subversion git g++-4.8 gcc-4.8 g++ gcc cmake qtcreator

chsh -s /bin/zsh

# java от oracle (необязательно, openjdk справляется)
java -version
sudo apt-get remove openjdk*
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer


ps: при наличии прокси к инету лучше зайти под sudo (например, sudo mc) и выполнять команды без предварительной sudo. Это позволит выполнить инсталляцию ttf шрифтов и java от oracle, т.к. они обращаются дополнительно к внешним ресурсам. Хотя в случае, если в /etc/sudoers настроены Defaults на окружение пользователя, то это делать необязательно

вторник, 10 июня 2014 г.

Создание deb пакета с произвольным содержимым

Частенько возникает необходимость собрать пакет с какими либо файлами, из которых скомпилировать ничего нельзя. В моём случае это чаще всего самописные bash-скрипты, файл с public ключами ssh… Ещё интересная идея так же паковать архивы.
В рассмотренном ниже примере мы создадим один deb пакет с аж тремя вкусными штуками:
1) конфигурационные файлы nginx с нашего сервера
2) файл с public ключами для авторизации обладателей закрытой части этих ключей на сервере рутом
3) скрипт /usr/bin/ourscript.sh (неважно что он делает, по сути)
Принцип одинаковый, просто мне удобно показать сразу три примера. Пакет будет называться nginxsuperconfig
Предрекая вопросы «а зачем тебе fakeroot, если всё делаешь рутом?». Удобно. А главное — просто и быстро.
Начнем-с с создания нужных каталогов и копирования в эту структуру нужных нам файлов. Каталог DEBIAN должен быть написан именно большими буквами. Остальные каталоги — воссоздание структуры необходимых нам файлов с условным корнем в виде каталога /root/builder/nginxsuperconfig/. То есть всё, что лежит в этом каталоге (кроме DEBIAN) просто распакуется в корень. Как будто вы создадите tarболл с содержимым этого каталога и распакуете его в корень.
root@builder:~# mkdir -p /root/builder/nginxsuperconfig/DEBIAN
root@builder:~# mkdir -p /root/builder/nginxsuperconfig/etc
root@builder:~# mkdir -p /root/builder/nginxsuperconfig/usr/bin
root@builder:~# mkdir -p /root/builder/nginxsuperconfig/root/.ssh
root@builder:~# cp -r /etc/nginx /root/builder/nginxsuperconfig/etc
root@builder:~# cp /usr/bin/ourscript.sh /root/builder/nginxsuperconfig/usr/bin/
root@builder:~# cp /root/.ssh/authorized_keys /root/builder/nginxsuperconfig/root/.ssh/
Теперь нам понадобится написать файлы, описывающие свойства пакета. Обязательным является только файл DEBIAN/control. Для примера я ещё напишу несколько скриптов — один из них будет выполняться перед установкой пакета, второй — по окончанию и ещё один — при удалении пакета.
Напишем файл control:
root@builder:~# editor /root/builder/nginxsuperconfig/DEBIAN/control
Я перечислю обязательные поля. На самом деле туда можно много чего написать, но это уже лучше поискать в сети:
Package: nginxsuperconfig
Version: 1.0-1
Section: misc
Priority: extra
Maintainer: inkvizitor68sl 
Architecture: all
Depends: nginx, openssh-server, bash
Description: Example package
Package with nginx configs, ssh keys, example script.
Немного прокомментирую.
Package — название пакета.
Version — версия. Через дефис пишем «номер сборки». Например, если вы слегка поправили файл в содержимом, но версия пакета не сменилась. В данном случае мы сами решаем какая у нас версия, потому можно не париться и всегда ставить версия-1
Section — для случаев рассмотренных в примере больше всего подходит misc
Priority — аналогично, подходит extra
Maintainer — ваше имя/ник и почта
Depends — в простейшем случае через запятые перечисляем имена пакетов, которые должны быть установлены, чтобы ваш пакет работал. В нашем случае — nginx (мы же для него конфиг льем), openssh-server (а зачем ключи, если ssh сервера нет?), bash, без которого не запустится наш скрипт.
Description — строка с кратким описанием пакета (не более 70 символов). Следующие строки — полное описание пакета. Перенос строки — точка.
Теперь создадим нужные скрипты.
Выполняемый перед инсталляцией:
root@builder:~# editor /root/builder/nginxsuperconfig/DEBIAN/preinst
#!/bin/bash
mv /etc/nginx /etc/nginx.bak
mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.old
Выполняемый после инсталляции:
root@builder:~# editor /root/builder/nginxsuperconfig/DEBIAN/postinst
#!/bin/bash
/etc/init.d/nginx restart
chmod +x /usr/bin/ourscript.sh
Выполняемый после удаления:
root@builder:~# editor /root/builder/nginxsuperconfig/DEBIAN/postrm
#!/bin/bash
rm -r /etc/nginx
mv /etc/nginx.bak /etc/nginx
rm /root/.ssh/authorized_keys
mv /root/.ssh/authorized_keys.old /root/.ssh/authorized_keys
Ещё можно создать выполняемый перед удалением скрипт:
root@builder:~# editor /root/builder/nginxsuperconfig/DEBIAN/prerm
В общем-то всё готово к сборке пакета:
root@builder:~# cd /root/builder/
root@builder:~# fakeroot dpkg-deb --build nginxsuperconfig

Мы получим файл nginxsuperconfig.deb. Неплохо его ещё переименовать, чтобы в названии содержалась версия:
root@builder:~# mv nginxsuperconfig.deb nginxsuperconfig_1.0-1.deb
Вот в общем-то и всё. Напоминаю, что это простейший пример. Я не ставил перед собой задачи написать очередной огромный непонятный мануал про сборку пакетов. Я постарался описать именно простейший способ собрать свой собственный deb пакет с данными. Ах да, не забудьте, что таким способ можно собрать метапакет для личного использования. То есть пакет, который сам ничего не содержит, зато по зависимостям тянет всё нужное.
Куда слать вопросы, думаю, знаете =)

ИСТОЧНИК: https://debian.pro/426