воскресенье, 15 апреля 2012 г.

PostgreSQL установка


PostgreSQL - СУБД с открытым исходным кодом доступна для многих платформ таких как Linux, FreeBSD, Solaris, MS Windows, MAC OS X.
Сегодня  расскажу как установить postgresql под Ubuntu. Если вы используете Ubuntu 11.10, то необходимые версии пакетов postgresql-9.0 доступны из репозиториев по-умолчанию, поэтому шаг добавления внешних репозиториев можно пропустить.
В Ubuntu 10.04 lucid 9-ая версия postgresql не доступна, нужно выполнить следующие команды для добавления репозитория из ppa:
apt-get install python-software-properties
add-apt-repository ppa:pitti/postgresql
add-apt-repository ppa:drfarina/fdr-repmgr
apt-get update

Теперь сама установка postgresql сервера, клиента.
apt-get update
apt-get install postgresql-9.0 postgresql-client-9.0
Так же рекомендую установить полезные библиотеки postgresql-contrib-9.0 postgresql-plpython-9.0 расширяющие возможности postgresql.
После завершения установки можно работать с PostgreSQL сервером. Для этого необходимо перейти в пользовательское окружение пользователя postgres:
sudo su - postgres
Команда psql это CLI интерфейс postgres, которая позволяет оперировать с базами данных, таблицами, схемами, пользователями, статистикой и многим другим.
Создадим пользователя test и базу данных test_db:
psql
create role test WITH LOGIN PASSWORD 'testpassword';
create database test_db owner test;

На этом все, оставайтесь с блого Сурового ITшника. 

вторник, 10 апреля 2012 г.

Vim: подсветка синтаксиса

Vim - свободно распространяемый текстовый редактор, основан на базе устаревшего vi. Один из мощных редакторов позволяющий автоматизировать редактирование текста. Имеет несколько режимов: командный и текстовый. Есть возможность подключения различных плагинов и расширений.
Сегодня расскажу как установить цветовую схему(подсветка синтаксиса) в vim. Для этого необходимо отредактировать файл:
vim ~/.vimrc
Нужно указать параметр colorscheme и название цветовой схемы:
syntax on
colorscheme pablo

В данном примере я установил цветовую схему подствеки синтаксиса pablo, возможно вам больше понравиться другая схема, вот список доступных:

  • blue
  • darkblue
  • default
  • desert
  • elflord
  • evening
  • koehler
  • morning
  • murphy
  • pablo
  • peachpuff
  • ron
  • shine
  • slate
  • torte
  • zellner


 Удачи в освоении сложного редактора vim :).

вторник, 27 марта 2012 г.

dig: диагностика DNS

dig - мощная CLI утилита для диагностики и проверки DNS сервера. Позволяет проверить правильность настройки сервера доменных имен. Должна быть в арсенале любого системного администратора или вебмастера.

Опросить конкретный DNS сервер:
dig @NS.example.com test.ru 

Пример опроса сервера доменных имен google на доменную зону ya.ru:
$ dig @google-public-dns-a.google.com. ya.ru

; <<>> DiG 9.7.3 <<>> @google-public-dns-a.google.com. ya.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54868
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ya.ru.    IN A

;; ANSWER SECTION:
ya.ru.   1138 IN A 77.88.21.3
ya.ru.   1138 IN A 87.250.250.3
ya.ru.   1138 IN A 87.250.250.203
ya.ru.   1138 IN A 87.250.251.3
ya.ru.   1138 IN A 93.158.134.3
ya.ru.   1138 IN A 93.158.134.203
ya.ru.   1138 IN A 213.180.193.3
ya.ru.   1138 IN A 213.180.204.3

;; Query time: 37 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Mar 26 22:40:41 2012
;; MSG SIZE  rcvd: 151

Узнать какие есть почтовые сервера имеющие MX записи в DNS:
 dig example.com MX 

Например узнать какие MX записи есть у домена ya.ru:
$ dig ya.ru MX

; <<>> DiG 9.7.3 <<>> ya.ru MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43213
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ya.ru.    IN MX

;; ANSWER SECTION:
ya.ru.   2744 IN MX 10 mx.yandex.ru.

;; Query time: 4 msec
;; SERVER: 172.16.250.1#53(172.16.250.1)
;; WHEN: Mon Mar 26 22:45:53 2012
;; MSG SIZE  rcvd: 49

Посмотреть PTR запись или обратную DNS запись:
$ dig -x 87.250.251.3

; <<>> DiG 9.7.3 <<>> -x 87.250.251.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51466
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;3.251.250.87.in-addr.arpa. IN PTR

;; ANSWER SECTION:
3.251.250.87.in-addr.arpa. 3520 IN PTR www.yandex.ru.

;; Query time: 22 msec
;; SERVER: 172.16.250.1#53(172.16.250.1)
;; WHEN: Mon Mar 26 22:53:23 2012
;; MSG SIZE  rcvd: 70
На самом деле утилите dig можно подсунуть любые аргументы, такие как A, CNAME, MX, NS, PTR, SOA, SRV, TXT и другие DNS записи. Поэксперементируйте с различными настройками.
На этом все, оставайтесь с блогом сурового ITшника и подписывайтесь на RSS.

понедельник, 26 марта 2012 г.

Дата и системное время

Иногда необходимо настроить системное время на сервере Linux, для этого можно воспользоваться утилитой date. Например если необходимо настроить текущее время и дату как 31 июля 23:16 наберите в консоли:
$ date 07312316
Если вам нужно указать год и секунды можно ввести:
$ date 073123162012.30
Чтобы узнать, что получилось, просто наберите команду date.

воскресенье, 20 ноября 2011 г.

Пользователи MySQL

Пользователи MySQL
Все пользователи MySQL хранятся в таблице user базы mysql.
Чтобы посмотреть список пользователей нужно переключиться на базу mysql и сделать выборку с помощью команды select:
mysql> use mysql;
mysql> select user,host from user;
+--------------------+------------+
| user                   | host         |
+--------------------+------------+
| root                   | 127.0.0.1  |
| root                   | testhost    |
| debian-sys-maint | localhost   |
| root                   | localhost   |
+--------------------+------------+
Из списка видно, что в базе имеются учетные данные суперпользователя root с возможностью подключаться только локально с данного сервера(адреса 127.0.0.1localhost и имя сервера testhost).
Еще есть системная учетная запись debian-sys-maint служит для внутренних системных целей СУБД MySQL.

В предыдущей части я рассказывал как настроить в конфигурационном файле /etc/mysql/my.cnf удаленное подключение к серверу баз данных MySQL. 
Напомню: для этого в параметре bind-address выставляется IP адрес 0.0.0.0 вместо 127.0.0.1, т.е. демон mysqld будет слушать не только локальный интерфейс 127.0.0.1, а все адреса имеющиеся на сервере. 
В этой части я расскажу как создать пользователя mysql, какие права выдать для различных пользователей, как выставить пароль и хост с которого будет производиться подключение.


Пользователь для веб сайта
Обычно различные веб приложения которые хранят информацию в базе mysql требуют создать отдельную учетную запись. Создадим пользователя website-user от имени которого будет работать наше веб приложение.
Пользователя можно создать через команду create user, а потом выдать права  grant select,insert..., но удобнее и быстрее сразу воспользоваться командой grant
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON website.* to 'website-user'@'localhost' IDENTIFIED BY 'website-PASSWORD;
mysql> flush privileges;
Здесь я сразу указал:
  •  выдать права GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX (возможно для вашего веб приложения список прав будет иной, обратитесь к документации веб приложения); 
  • на базу website.* - имя базы указывается по маске (все файлы с названием website). Здесь можно указать *.*, тогда пользователь будет иметь права на все базы;
  • 'websiteuser'@'localhost' - имя пользователя, и хост с которого этот пользователь может подключаться в базу;
  • IDENTIFIED BY 'website-password' - указываем пароль пользователя.
Администратор баз данных
В следующем примере создадим учетную запись администратора баз данных который будет подключаться с  IP адреса компьютера администратора 192.168.8.10
mysql> create user 'admin'@'192.168.8.10' identified by 'blahblahblah';
Query OK, 0 rows affected (0.01 sec)
Выдадим полные права пользователю admin на базу website:
mysql> grant all on website.* to 'admin'@'192.168.8.10';
mysql> flush privileges;
Теперь администратор может подключиться со своего компьютера к серверу баз данных. В этом примере я использовал команду create user, а уже потом grant в принципе разницы нет как будут создаваться пользователи.


Пользователь backup
Создадим пользователя backup для резервного копирования всех базы данных
mysql> GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD ON on *.* to 'backup'@'%' identified by 'backup-password';
mysql> flush privileges;
  • GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD - Здесь я указал необходимый набор прав для удаленного резервного копирования и в то же время достаточный для безопасного бэкапа;
  • *.* - Пользователь backup может просматривать все базы;
  • 'backup'@'%' - пользователь backup может подключаться с любого IP адреса. Обычно не требуется разрешать подключения с любого ip для целей резервного копирования, так как у сервера backup всегда постоянный IP адрес.
Как поменять пароль?
Чтобы поменять пароль можно воспользоваться командой mysqladmin эту команду нужно запускать в bash.
mysqladmin -u website-user -p password NEWPASSWORD
А так же можно воспользоваться командой (SQL синтаксис) из консоли MySQL
mysql> update user set password=PASSWORD("123") where user='website-user';


Как сбросить пароль root?
Поменять пароль root можно всеми теми же командами, что и для обычного пользователя. Но вот что делать если вы забыли пароль рута или по каким-то причинам его утеряли, тогда проделаем следующие операции.
1) Первым делом нужно остановить mysqld - демон MySQL сервера
/etc/init.d/mysql stop
2) Создать скрипт для смены пароля /root/reset.sql со следующим содержанием:
UPDATE mysql.user SET Password=PASSWORD('YOUR-NEW-MYSQL-PASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
Сохраняем файл и запускаем демон mysqld в безопасном режиме с параметром --init-file
mysqld_safe --init-file=/root/reset.sql &
Ответ будет таким
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[20970]: started
Теперь можно просто убить процесс mysqld и запустить север заново:
killall mysqld
/etc/init.d/mysql start
Пароль пользователя root успешно изменен! Логинимся и проверяем.
Есть ещё один способ сменить пароль root - это запустить mysqld c параметром --skip-grant-tables и поменять пароль, но я не рекомендую им пользоваться так как это не безопасно и есть вероятно повредить таблицы с правами.
На этом все, оставайтесь с блогом сурового ITшника, подписывайтесь на RSS и не забывайте нажать кнопочку "Мне нравиться" любой соц.сети, вам 1 клик, а мне бальзам на душу :)

среда, 16 ноября 2011 г.

Установка FTP сервера

VSFTPD - (Very Secure File Transfer Protocol Daemon) FTP сервер с поддержкой SSL, быстрый и безопасный, в последних версиях умеет работать с IPv6, обслуживает FTP хранилища таких проектов как Debian, Red Hat, FreeBSD, OpenBSD, Linux Kernel и многих других. vsftpd в установке и настройке достаточно простой FTP сервер и процесс не займет много времени. В данной статье расскажу как установить и как настроить FTP сервер vsftpd.


Установка FTP сервера
Устанавливается vsftpd в Ubuntu как любой deb-пакет командой: 
sudo apt-get install vsftpd

Настройка FTP сервера
Доступ на FTP сервер может быть двух видов: анонимный и авторизованный.
При анонимном доступе любой пользователь не имея пароля, используя логин anonymous или ftp сможет попасть на сервер.

Все основные настройки vsftpd хранятся в /etc/vsftpd.conf
По-умолчанию анонимный доступ к FTP серверу запрещен. Чтобы включить анонимный доступ на скачивание, нужно поменять параметр:
anonymous_enable=NO
на
anonymous_enable=YES
Тогда анонимные пользователи смогут скачивать файлы. Если вы хотите дать возможность загружать файлы для анонимных пользователей на FTP сервер уберите символ комментария # здесь:
#anon_upload_enable=YES
Открывая возможность для всех пользователей загружать любые файлы на ваш FTP вы осознаете все возможные риски! Я не советую разрешать анонимную загрузку файлов.
По-умолчанию включена авторизация локальных пользователей зарегистрированных в системе, за это отвечает вот этот параметр:
local_enable=YES
То есть к FTP серверу могут подключаться только локальные пользователи зарегистрированные в системе и которые не указаны в файле /etc/ftpusers
~$cat /etc/ftpusers
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
Все перечисленные в файле /etc/ftpusers пользователи не могут подключиться к FTP, но никто нам не мешает например убрать отсюда root и подключаться к FTP используя учетные данные пользователя root или наоборот если нужно закрыть доступ какому-то пользователю его можно просто добавить в этот файл.
Загрузка файлов на FTP сервер по-умолчанию запрещена, чтобы разрешить загрузку уберите символ комментария # в этой строке:
#write_enable=YES
Для большей безопасности можно ограничить каждого пользователя его домашним каталогом, для этого нужно включить вот этот параметр:
chroot_local_user=YES
Так же можно ограничить доступ только для конкретного списка пользователей:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd_chroot_list
На этом можно сказать установка и основная настройка FTP сервера vsftpd закончена. 
Перечисленные способы авторизации не панацея, если вас не устраивает авторизация под локальными учетными данными или общедоступный FTP, тогда читайте мои следующие посты о том как настроить хранение учетных данных в базе MySQL или BerkleyDB.


Оставайтесь с блогом сурового ITшника и вы будете всегда иметь под рукой самую полезную информацию о Линукс. 
Подписаться на RSS ленту

понедельник, 14 ноября 2011 г.

Часть 2:Видео курсы Linux

Вторая часть отличной подборки видео курсов об операционной системе GNU\Linux от компании Яндекс, первая часть  доступна по ссылке.


Файловые системы




Сети и протоколы



Сети и протоколы. Виртуализация


Безопасность информационных систем


Оставайтесь с блогом сурового ITшника! Подписывайтесь на RSS рассылку