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

вторник, 14 мая 2013 г.

Установка FTP-сервера для CloudStorage на CentOS 6

Необходимо выкладывать часть файлов на clodo-хранилище. Краткая версия для CentOS 6.

Теория.
Управление файлами и контейнерами в Облачном хранилище можно осуществлять посредством API, различных приложений-клиентов и веб-интерфейса панели Clodo. Чтобы не устанавливать на ваш компьютер дополнительных программ, а управлять файлами в хранилище с помощью обычного FTP-клиента, можно на вашем сервере (или любом другом компьютере) установить FTP-сервер, который будет служить ретранслятором стандартных команд FTP в понятное Облачному хранилищу API.

Практика.
1. Установка пакетов
yum install python-daemon python-setuptools git

2. Скачать и установить библиотеку языка Python для работы с облачным хранилищем; расширение для работы с FTP-серверами/клиентами и сам FTP-сервер.

# Установка python-cloudfiles
git clone git://github.com/ClodoCorp/python-cloudfiles.git
cd python-cloudfiles && python setup.py install && cd ..

# Установка pyftpdlib, версия имеет значение - более новая не запустится
wget http://pyftpdlib.googlecode.com/files/pyftpdlib-0.7.0.tar.gz 
tar xf pyftpdlib-0.7.0.tar.gz
cd pyftpdlib-0.7.0 && python setup.py install && cd ..

# Установка ftp-cloudfs
git clone git://github.com/ClodoCorp/ftp-cloudfs.git

3. Запуск
ftpcloudfs -b 127.0.0.1 -p 2021 -a http://api.clodo.ru -l  /var/log/ftpcloudfs.log --workers=2 --pid-file=/var/run/ftpcloudfs.pid, где

-b 127.0.0.1 указывает IP-адрес, который будет прослушивать сервер
-p 2021 указывает порт, прослушиваемый сервером
-l  /var/log/ftpcloudfs.log путь к лог-файлу FTP-сервера
-a http://api.clodo.ru адрес API
--workers=2 количество рабочих процессов FTP-сервера
--pid-file=/var/run/ftpcloudfs.pid путь к файлу, в котором будет
записан номер главного процесса FTP-сервера

4. Подключение к серверу:
ftp -n 127.0.0.1 2021
> user API_USER_FROM_CLODO_PANEL
> password API_KEY_FROM_CLODO_PANEL

Литература:
http://lib.clodo.ru/cloud-storage/ftp_to_cs.html

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

Samba и пользователи в ldap

Небольшая заметка для себя, скорее несколько моментов, на которые стоит обратить внимание. Итак, имеется ldap-сервер с логинами/паролями пользователей и прочей информацией. Нужно, чтоб пользователи хранили важные данные на отдельном samba-сервере, причем использовать имеющуюся базу пользователей из ldap.
Сервер с samba на CentOS 6.2 обновлен до версии 6.4, в которой samba уже версии 3.6.

1. Вообщем, ставим или обновляем:
sudo yum install samba nss-pam-ldapd

2. Правим /etc/nsswitch.conf (конфигурационный файл cистемных баз данных и переключателя сервисов имен). Т.е. искать информацию о пользователях/паролях/группах не только в файлах, но и ldap
*****
passwd:     files ldap
shadow:     files ldap
group:      files ldap
*****

3. Правим /etc/nslcd.conf (конфигурационный файл демона, который будет проверять/искать информацию в ldap)

uri ldap://LDAP_SRV_IP
base dc=DOMAIN,dc=local
binddn cn=admin,dc=DOMAIN,dc=local
bindpw SOMEPW
scope sub
base   group  ou=Groups,dc=DOMAIN,dc=local
base   passwd ou=Users,dc=DOMAIN,dc=local
base   shadow ou=Users,dc=DOMAIN,dc=local

# На данном моменте происходит подмена параметра homeDirectory на homeDirectory2 или подстановку известного пути. В моем случае у пользователей в атрибуте homeDirectory хранится путь к почтовой папке (по историческим причинам, конечно). У части пользователей был ранее заведен атрибут homeDirectory2 с путем к домашней samba-директории. Это нужно мне, чтоб изменить путь к домашней директории пользователя (/home/vmail/e-mail -> /samba/homes/uid)
map    passwd homeDirectory    "${homeDirectory2:-/samba/homes/$uid}"

4. Правим /etc/samba/smb.conf. Особо расписывать не буду, должно быть более менее понятно.
*******
        security = user
        passdb backend = ldapsam:ldap://LDAP_SRV_IP
        ldap suffix = dc=DOMAIN,dc=local
        ldap user suffix = ou=Users
        ldap group suffix = ou=Groups
        ldap machine suffix = ou=Computers
        ldap admin dn = "cn=smbadmin,dc=DOMAIN,dc=local"
        ldap delete dn = no
        ldap passwd sync = yes
        ldap ssl = off
# Важный параметр, без него не будет использоваться pam, а значит не будут автоматически создаваться домашние папки пользователей при первом входе.
        obey pam restrictions = yes

[homes]
        comment = Home Directories
        ;path = /samba/homes/%S
        browseable = no
        writable = yes
        valid users = %S
****************

5. Вводим 2 раза пароль пользователя smbadmin
smbpasswd -W

6. Правим /etc/pam.d/samba. Перед session    include      password-auth вставляем
session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0077

7. Запуск/перезапуск сервисов
service nslcd restart
service smb restart
service nmb restart

суббота, 22 декабря 2012 г.

CentOS 6 и KVM. Запуск виртуалки.

Необходимо было запустить виртуалку с Ubuntu на хосте с CentOS6 (64 bit). Собственно, небольшое описание того, что было сделано. Во-первых, хочу отметить, что при настройке надо быть внимательным, иначе получаются весьма забавные вещи. В моем случае, не обратил внимание на вывод команды ip addr show, где было state DOWN для интерфейса в составе моста - из-за чего и было потрачено много времени впустую. Виртуалка была поднята на хосте с Gentoo и переезжала на хост с CentOS ввиду загруженности машины с Gentoo.

1. Проверяем, что процессор поддерживает необходимые инструкции:

egrep '(svm|vmx)' /proc/cpuinfo

2. Проверяем загружены ли необходимые модули:

lsmod | grep kvm

3. Сервер имеет 2 сетевых интерфейса (на самом деле есть еще один, но он отдан под IPMI). Подключаем оба в сеть, копируем /etc/sysconfig/network-scripts/ifcfg-eth0 в /etc/sysconfig/network-scripts/ifcfg-br0. Приводим ifcfg-eth0 к виду (mac-адрес, ip-адрес, маску, шлюз, адрес днс-сервера поменяйте на свои):

DEVICE="eth0"
BRIDGE="br0"
NM_CONTROLLED="no"
ONBOOT=yes
HWADDR=00:25:90:78:74:8C

Файл ifcfg-br0 в таком виде:

DEVICE="br0"
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Bridge"
DELAY=0
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br0"
IPADDR=192.168.1.XX
NETMASK=255.255.255.0
GATEWAY=192.168.1.Z
DNS1=192.168.1.XY

Файл ifcfg-eth1:

DEVICE="eth1"
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Ethernet"
UUID="7a455c42-2ceb-4cf2-a13c-a86baf7d42ef"
HWADDR=00:25:90:78:74:8D
PEERDNS=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
IPADDR=192.168.1.XZ
NETMASK=255.255.255.0


В данном случае eth1 будет использоваться под нужды сервера, eth0 будет входить в состав моста br0 и обслуживать виртуалку(и).

4. Устанавливаем нужные пакеты для работы с мостом и виртуальными TUN/TAP интерфейсами:
sudo yum -y install tunctl bridge-utils

5. Рестартуем сеть командой:
sudo service network restart

6. Проверяем состояние интерфейсов (должны быть в UP):
ip addr show | grep eth | grep state

2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

7. Проверяем загружен ли модуль tun:
lsmod | grep tun
Если нет - то:
modprobe tun

Модуль tun - это универсальный TUN/TAP драйвер, позволяющий создавать программные сетевые устройства (программная сетевая карта). TAP симулирует Ethernet устройство и работает на канальном уровне, а TUN работает на сетевом уровне. 
Пакет, посылаемый операционной системой через TUN/TAP устройство, обрабатывается программой, которая контролирует это устройство, в данном случае qemu (см. команду в конце заметки).

Создаем виртуальное устройство tap0:
tunctl -b

8. Поднимаем устройство tap0:
ifconfig tap0 up

9. Проверить/установить параметры в файле sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

10. Проверить правила iptables, чтоб не блокировали нужный трафик (в моем случае iptables не использовался). Например, командой:

iptables -I RH-Firewall-1-INPUT -i br0 -j ACCEPT

11. Добавляем интерфейсы в состав моста:

brctl addif br0 eth0
brctl addif br0 tap0

12. Стартуем виртуалку:
/usr/libexec/qemu-kvm -hda /some/path/ubuntu10.04_2.img -m 6144 \
-net nic,macaddr=00:1a:dd:d8:bc:b6 -net tap,ifname=tap0,script=no,downscript=no \
-vnc :0 -name ubuntu -smp 4 -daemonize 

Литература:
http://www.linux-kvm.org/page/Networking
https://wiki.archlinux.org/index.php/QEMU#Networking
https://wiki.archlinux.org/index.php/KVM