Я люблю работать c моими серверами с помощью Putty по SSH. Я думаю, что это больше чем просто клиент SSH, сама программа очень класная!
Continue reading
Рубрика: Unix
Все по Unix-ам
Проблема с чтением ftp каталога
Недавно возникла такая проблема, после авторизации на ftp сервере, не хочет считываться каталог. Что я уже не пробовал, устанавливал различные ftp сервера, игрался с пассивным режим и многое другое, оказалось, что проблема была в iptables, все, что нужно, это включить режим nf_conntrack_ftp. Для этого открываем файл /etc/sysconfig/iptables-config идобавляем модуль:
FTP Сервер pureftpd
Взять можно отсюда:
Скачали, распаковали, далее делаем стандартные операции установки из исходников:
Для установки полного функционала сделать ./configure —with-everything
make
make install
После этого надо удостовериться какая home директория у пользователя ftp Выяснить это можно просмотрев файл /etc/passwd В разных дистрибутивах Linux домашняя директория пользователя ftp имеет разный путь.
К примеру в моем любимом дистрибутиве Centos Linux — каталог /home/ftp
Собственно я надеюсь что менять домашние директории у пользователей вы умеете, если Вам это надо.
В данной статье будет директория /home/ftp
Далее надо создать 2 директории:
mkdir /home/ftp/incoming
Создать пользователя ftpadmin , это будет админский аккаунт FTP, его домашняя директория будет /home/ftp
Далее надо назначить права на директорию incoming
Далее надо назначить права на директорию pub
Сделали.
Ну а теперь запустим сам FTP сервер.
Параметры: -4 — ipv4only, -A — chroot everyone — обязательный параметр (запирает пользователя в его домашней директории) -B — режим демона, -l unix использовать для аутентификации пароли unix, -U — выбираем маску для файлов и директорий — подробнее об этом параметре — man pure-ftpd.
Вариант анонимного FTP с поддержкой учетных записей:
Вариант только анонимного FTP:
Вариант только НЕ анонимного FTP:
Все 😉 FTP работает
Автозагрузка:
Файл автозагрузки в Centos Linux — /etc/rc.d/rc.local
Просто добавляем в конец файла строчку
Устанавливаем на Centos pure-ftpd + MySQL
Будем считать, что MySQL уже установлен. Для установки pure-ftpd нам необходимо подключить RPMForge. Далее:
Добавляем группу и пользователя к которому будут мапиться наши виртуальные пользователи:
useradd -u 2001 -s /bin/false -d /bin/null -c «pureftpd user» -g ftpgroup ftpuser
Заходим в консоль MySQL и выполняем:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;
User varchar(16) NOT NULL default »,
status enum(‘0′,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default »,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default »,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘*’,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
Добавляем пользователя
Теперь время отредактировать конфиги, в /etc/pure-ftpd/pure-ftpd.conf
[…]
MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
[…]
CreateHomeDir yes
и в /etc/pure-ftpd/pureftpd-mysql.conf
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() — md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=»\L» AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=»\L» AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
И в завершении добавляем pure-ftpd в автозагрузку и запускаем
service pure-ftpd start
Samba и sshfs
Что бы ваши Samba пользователи получили доступ к примаунчиным sshfs папкам на удаленном сервере, необходимо использовать опцию -o allow_other. Пример:
Тестируем скорость канала между серверами.
Есть много способов как это сделать, но мне больше всего нравиться использовать утилиту iperf
И так, для начала устанавливаем epel репозитарий, как это сделать можно прочесть тут. Теперь :
на одном, и на втором сервере. Далее, на машинке получателе запускаем —
а на машинке которая будет отдавать выполняем
Samba: Unable to connect to CUPS server
Если вы не собираетесь использовать на вашем Samba сервере принтеры, и в smbd.log постоянно появляется вот такая ошибка:
Для, того, что бы избавиться от этой ошибки достаточно добавить в конфиг:
show add printer wizard = no
printing = none
printcap name = /dev/null
disable spoolss = yes
Устанавливаем временную зону
Создаем ссылку на обновленную временную зону. Я живу в Киеве, поэтому моя зона Europe/Kiev:
Проверяем установленную зону в файле /etc/sysconfig/clock
Вот и все, проверяем при помощи
Подключаемся по VPN через iptables nat
Вот, столкнулся с такой ситуацией, пользователи за шлюзом, на шлюзе вся подсеть натиться без ограничений, а вот VPN работать не хочет. Решение оказалось простым, все что нужно, это подгрузить следующие модули — ip_gre, ip_nat_pptp, ip_conntrack_pptp. Подгрузить можно вот так:
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp
Бэкапы виртуальных машин в VMWare ESXi
Как не странно, но это действительно большая проблема, так как специальных утилит для этого нет, а то что есть немного мудрено, ведь можно сделать проще:
#!/bin/sh sourcedir=/vmfs/volumes/datastore1 backupdir=/vmfs/volumes/nfs-backup for i in `vim-cmd vmsvc/getallvms|awk '{print($1 "-" $2)}'`; do if [ $i != "Vmid-Name" ]; then vmid=${i%%-*} vmfs=${i#*-} mkdir $backupdir/$vmfs.`date +%d.%m.%Y` vim-cmd vmsvc/snapshot.create $vmid [email protected] [email protected] includeMemory 0 for j in `ls $sourcedir/$vmfs`; do cat $sourcedir/$vmfs/$j | gzip > $backupdir/$vmfs.`date +%d.%m.%Y`/$j.gz done vim-cmd vmsvc/snapshot.removeall $vmid fi done cd $backupdir; find . -type d -mtime +5 -exec rm -rf {} \;
/vmfs/volumes/nfs-backup – соответственно nfs диск где будут лежать бэкапы
/vmfs/volumes/datastore1 – хранилище виртуальных машин