Linuxos FTP szerver? Naná!

Wired to FTPLehet, hogy már kezd nevetségessé válni az én linux-debian mániám, de láthatjátok, hogy rengeteg célfeladatra kiváló teljesítményt és minőséget nyújt.

Tehát arról van szó, hogyha egy dedikált ftp szervert szeretnénk üzemeltetni akkor lehet okosabb dolog lenne adatbázisban tárolni a júzerek adatait.

Az ftpd és mysql-re fog az egész épülni. Hajrá, kezdjünk neki:

apt-get install pure-ftpd-mysql mysql-server mysql-client

Létre kell hozni csoportot és egy felhasználót a rendszerben:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “pureftpd user” -g ftpgroup ftpuser

Jelentkezzünk be parancssorból mysql-be:
mysql -u root -p

Adjuk meg a root jelszót, aztán végezzük el az alábbi parancsokat:
GRANT SELECT ON ftpd.* TO vhosts@localhost IDENTIFIED BY ‘mypasswd’;
FLUSH PRIVILEGES;
CREATE DATABASE ftpd;
USE ftpd;

CREATE TABLE users (
user varchar(30) NOT NULL,
password varchar(64) NOT NULL,
home varchar(128) NOT NULL,
bandwidth_limit_upload smallint(5) NOT NULL default 0,
bandwidth_limit_download smallint(5) NOT NULL default 0,
ip_allow varchar(15) NOT NULL default ‘any’,
quota smallint(5) NOT NULL default ‘0’,
quota_files int(11) NOT NULL default 0,
active enum(‘yes’,’no’) NOT NULL default ‘yes’,
PRIMARY KEY (user),
UNIQUE KEY User (user)
) TYPE=MyISAM;

INSERT INTO users (user, password, home) VALUES (‘username’, MD5(‘mypasswd’), ‘/home/username’);

quit;

Most létrehoztuk a szükséges táblákat és egy próbarekordot, amit majd később esetleg módosíthatunk.

Futtassuk ezeket:
echo “” >> /etc/pure-ftpd/db/mysql.conf

Szerkesszük a fent kiürített file-t:
pico /etc/pure-ftpd/db/mysql.conf

Másoljuk be az alábbi sorokat a megnyitott szerkesztőbe:
MYSQLSocket /var/run/mysqld/mysqld.sock

MYSQLUser vhosts
MYSQLPassword mypasswd
MYSQLDatabase ftpd
MYSQLCrypt md5
MYSQLDefaultUID 2001
MYSQLDefaultGID 2001
MYSQLGetPW SELECT password FROM users WHERE user = “\L” AND active = “yes” AND (ip_allow = “any” OR ip_allow LIKE “\R”)
MYSQLGetDir SELECT home FROM users WHERE user = “\L”AND active = “yes” AND (ip_allow = “any” OR ip_allow LIKE “\R”)
MySQLGetBandwidthUL SELECT bandwidth_limit_upload FROM users WHERE user = “\L”AND active = “yes” AND (ip_allow = “any” OR ip_allow LIKE “\R”)
MySQLGetBandwidthDL SELECT bandwidth_limit_download FROM users WHERE user = “\L”AND active = “yes” AND (ip_allow = “any” OR ip_allow LIKE “\R”)
MySQLGetQTASZ SELECT quota FROM users WHERE user = “\L”AND active = “yes” AND (ip_allow = “any” OR ip_allow LIKE “\R”)
MySQLGetQTAFS SELECT quota_files FROM users WHERE user = “\L”AND active = “yes” AND (ip_allow = “any” OR ip_allow LIKE “\R”)

Végezzünk el néhány beállítást ismét:
echo “yes” > /etc/pure-ftpd/conf/DontResolve
echo “yes” > /etc/pure-ftpd/conf/ChrootEveryone

Ha nem tetszik az alapértelmezett 21-es port akkor meg lehet változtatni:

echo “port” > /etc/pure-ftpd/conf/Bind

Ha tűzfal van és gondok adódnak a csatlakozással (passzív mód) érdemes megadni az ftpd-nek a port range-t:

echo “porttól portig” > /etc/pure-ftpd/conf/PassivePortRange

pl.: echo “29799 29899” > /etc/pure-ftpd/conf/PassivePortRange, tehát nem kell a két portszám közé se kötőjel, se semmi, csak szóköz.

 

Ha mindennel végeztünk újraindítjuk az ftpd szervert:
/etc/init.d/pure-ftpd-mysql restart

 

Ha nem szeretnénk szívni később parancssori mysql-el a felhasználók menedzselését illetőleg telepítsük fel az alábbi csomagokat:

aptitude install apache2
aptitude install php5 libapache2-mod-php5

apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json
apt-get install phpmyadmin

/etc/init.d/apache2 restart

 

Ezek után a http://szerver-ip-címe/phpmyadmin címen tudunk a mysql root felhasználóval bejelentkezni és az ftpd táblában ügyködni.

Fontos! Ha jelszót viszünk be ne felejtsünk el md5 kódolást beállítani!

Biztonsági mentés debianon

Backup_center_iconKomplett webszerver költöztetésekor adódott a kérdés, hogy tényleg – hogy is kellene lementeni a komplett linux rendszert működés közben. Legegyszerűbb és legnagyszerűbb megoldás tar.gz-vel becsomagolni.

Mentés készítése

tar –exclude=/var/run –exclude=/var/tmp –exclude=/dev –exclude=/mnt –exclude=/proc –exclude=/tmp –exclude=/sys –exclude=/var/backups/full_backup  -czpvf /var/backups/full_backup/full_backup.tar.gz /

Az –exclude=…-ban megadott könyvtárak tömörítésből kihagyásra kerülnek (mert amúgy feleslegesek).

Visszaállítás, kicsomagolás

cd /
tar -xvf /var/backups/full_backup/full_backup.tar.gz

 

A megoldásért köszönet Lukács István kollégámnak! 🙂

NTFS partíció csatolása debian renszerbe

ntfs-1Szenvedtem vele egy sort, amikor ezzel a módszerrel próbálkoztam:

mount /dev/sdxy  /mnt/akarmi

 

Működni működik, lehet olvasni a meghajtót. De aztán szükség esetén kiderül, hogy csak olvasásra csatolódik fel az ntfs meghajtó. Ahhoz, hogy tudjuk írni – kell egy kicsit maszekolni is.

Első körben, egyszeri alkalommal toljuk fel az ntfs-3g csomagot

apt-get install ntfs-3g

aztán:

mount -t ntfs-3g /dev/sdxy   /mnt/akarmi

Hangfelismerő program Chrome-ban – tud magyarul!

speak-nowVolt egy egyetemi projektmunkánk, ami arról szólt, hogy egy közösségi oldalt terveztünk, dokumentáltunk és valamennyire le is implementáltunk. A konzulensünk külön kérése volt, hogy legyen benne egy fordítóprogram.

Tehát írok én valamit az egyik oldalon pl magyarul és a másik meg angolra lefordítva megkapja azt. Aztán még egy plusz kérés volt, hogy ne csak gépelni lehessen, hanem beszélni is lehessen a gépnek, tehát az pl gombnyomásra képes legyen értelmezni a vartyogásunkat és képes legyen úgy fordítani, stb, stb…

A lényeg az, hogy egy tök egyszerű megoldást sikerült találnunk, ami csak Google Chrome alatt megy, de rendkívül egyszerűen üzembe helyezhető és nem terheli a szervereinket sem.

Tehát egy külső Third-party cuccról van szó. Egy <input>-ba rakható bele Chrome specifikus paraméter, aminek forrása így néz ki:

<input size="50" type="text" id="uzenet" name="uzenet" 
placeholder="Írj üzenetet" lang="hu-HU" accesskey="r" 
x-webkit-speech  speech required /> 
 
 
 
Majd így működik/jelenik meg: 7bc4a95ad46377736319c0dc393d9374

Az input jobb oldalában lévő mikrofonocskára klikkelve előidézhetjük a kívánt hatást. 🙂

Enjoy

Komplett webszerver építés otthon

Az alaprendszer beszerzése

linuxLinux szerverről lesz szó, mert a linux jó. Miért jó? Szimpatikus. Najó, két éven kereszül Win 2003-on ment apache2 webszerverem. Kezdetben minden szép és jó volt, de aztán eléggé megharagudtam rá. Idővel teljesen belassult a hálózata. Teljesen mindenféle ok nélkül. Nem tudom, hogy különösebb karbantartást igényelt volna-e… Mindenesetre felüdülés volt linuxra cserélni.

 

Tételezzük fel, hogy gép már van. Egy későbbi bejegyezésben talán még írni is fogok erről, hogy milyet érdemes venni, ha újonnan tervezünk gépet venni, vagy ha óccsón akarjuk megúszni akkor össze is lehet vaterázni szervernek való PC-t.

 

Egészen különböző javaslatok vannak mindig arra, hogy mégis a linuxon belül milyen oprendszert válasszunk a mi kis webszerverünknek. Én szeretek jól támogatott, népszerű alapról építeni – ez lesz a Debian 6 oprendszer.

IspCP – így első körben őt ajánlom, mint webszerver webadmin-t. Az alap dolgokra tökéletes, stabil és ingyenes is.

Első lépés, hogy lapozzuk fel a http://www.debian.org/ weboldalt és a jobb felső sarokban egyből kattoljunk a letöltő linkre.

Netinst link

Ha olyan gépre telepítünk, amin van net akkor teljesen megfelelő a Netinst Telepítő, ha viszonylag modernebb gépre telepítesz (kb 3-4 évesnél fiatalabbra) és van kéznél néhány gigás pendrive akkor még CD-re sem kell kiírni a debiant, kirakhatod pendrive-ra is a telepítőt.

unetbootin-windows7

Ehhez unetbootin kell neked, aminek Win, Linux és Mac verziója is ingyen elérhető. Elég fent kiválasztani a disztró típusát (ezesetben ajánlom a debian 6 x64 változatot), lent kiválasztani az USB drive meghajtó betűjelét és a telepítő mindent elvégez helyetted.

 

Debian 6 telepítése

Nos, ott tartunk, hogy megvan a gép, kész a telepítő média (CD/DVD/Pendrive), kezdődhet a telepítés.

Debian 6 telepítőképernyő

Annyira nagyon részletesen nem kívánom részletezni a debian rendszer telepítését, általában minden egyértelmű.

Lényegében mindegy, hogy milyen host neveket adunk meg a telepítéskor. Véleményem szerint mehet minden egy partícióra. Idővel, később esetleg majd meglátjuk a hasznát, egyelőre nem érdemes még ezzel szívatni magunkat.

Szoftver választás

Ezt a két pontot szoktam kijelölni space-el (nem, nem enterrel 😀 ), aztán mehet tovább a telepítés: SSH server, Standard system utilities. Grafikai környezet felesleges, ha szervernek akarjuk majd használni a gépet. Ha az SSD server kimaradna akkor majd később az apt-get install openssd-server paranccsal tudjuk telepíteni.

Ezután megkérdezi a gép a teleítő a grub telepítését, itt igennel válaszoljunk.

Ha kész, reboot, bejelentkezünk root felhasználónévvel, aztán megnézzük az ip címünket:

ifconfig

Az eth0-nál nézzük  az inet addr-t. Laptopról, másik PC-ről csatlakozhatunk a szerverhez ezzel az ip címmel.

Tehát szerezzünk be egy putty-ot, majd töltsük ki a host name mezőt, illetve a translation oldalon válasszunk UTF8 kódolást, ha jót akarunk magunknak. 😀 Puttyra azért van szükség, mert rengeteg csomagot kell majd feltelepítenünk, amit másolni elég hosszadalmas volna.

Kiegészítő csomagok telepítése, beállítás

Putty-al bejelentkezés után

 

Így, hogy root módban vagyunk és minden oké, akkor jöhet a csomagok telepítgetése (aptitude helyett apt-get-et is használhatunk):

apt-get install aptitude
aptitude update && aptitude safe-upgrade
aptitude install tar bzip2 wget lsb-release nano

Szükséges az néhány repository-t hozzáadni a listához:

nano /etc/apt/sources.list

Ezeket ellenőrizzük, illetve adjuk hozzá:

deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

Ha CDROM-os sort látunk # nélkül azokat kommenteljük ki (tegyük elé a #-et)

Frissítés:

aptitude update && aptitude safe-upgrade

 

Letöltés, kicsomagolás:

mkdir -p /root/ispcp
cd /root/ispcp
wget http://freefr.dl.sourceforge.net/project/ispcp/ispCP%20Omega/ispCP%20Omega%201.0.7/ispcp-omega-1.0.7.tar.bz2

tar -xvf ispcp-omega-1.0.7.tar.bz2
cd ispcp-omega-1.0.7

 

Szükséges csomagok telepítése:

apt-get install $(cat ./docs/Debian/debian-packages-`lsb_release -cs`)

Néhány instrukció:

courier screen -> NO

postfix screen -> internet site

create directories for web-based administration -> NO

proftpd -> standalone

 

Fordítás:

make install

cp -R /tmp/ispcp/* /

 

Esetleg érdemes ránézni a MySQL szerverre is:

mysql_secure_installation

Ne használj @, $, % jeleket a jelszóban

Instrukciók:

Change the root password? [Y/n] confirm with n
Remove anonymous users? [Y/n] Enter
Disallow root login remotely? [Y/n] Enter
Remove test database and access to it? [Y/n] Enter
Reload privilege tables now? [Y/n] Enter

 

Rendszer telepítése:

cd /var/www/ispcp/engine/setup

perl ./ispcp-setup

 

Telepítés utáni takarítás:

rm -fR /tmp/ispcp

 

Van egy általános hiba, amit talán a sushoin fut – bár ebben nem vagyok egészen biztos. Lényeg, hogy a file feltöltéseknél szokott lenni 500-as hiba, amit az alábbi módon orvosolni lehet:

pico /etc/apache2/mods-enabled/fcgid_ispcp.conf
Add hozzá ezt a végéhez:
   FcgidConnectTimeout 60
   MaxRequestLen 134217728

 

Adminisztrációs alkalmazások telepítése

Egyesek szerint hülyeség ilyet telepíteni és aki ilyet használ lúzer, stbstb. Én úgy vagyok vele, hogy nem vagyok hülye, hogy saját magamat szívassam terminálon, amikor 1-2 kattintással is el tudnék valamit intézni böngészőből.

Tehát, amit telepíthetünk az a webmin.

Webmin telepítés:

cd /tmp

wget http://freefr.dl.sourceforge.net/project/webadmin/webmin/1.590/webmin_1.590_all.deb

dpkg -i webmin_1.590_all.deb

apt-get -f install

 

Telepítés ellenőrzése

Ha minden jól ment akkor böngészőben hívjuk meg a szerver ip címét. Ezt kell majd látnunk:

IspCP

 

Utána nézzünk rá a webmin-re is a https://szerver-ip-címe:10000 címen:

Webmin

 

Nem kell pánikba esni, klikk a folytatásra. Utána ugyanazokkal az adatokkal be tudunk jelentkezni, amivel ssh-n.

 

Email beállítása

Ha zugszervert szeretnénk üzemeltetni – tehát otthonról nyomatnánk, otthoni nettel, publikus, de dinamikus ip címmel – és a szolgáltatónk blokkolja a 25-ös portot akkor érdemes egy gmail fiókot beállítani email kiküldésre. Lassabb, de stabilabb.

apt-get install postfix libsasl2 ca-certificate libsasl2-modules

nano /etc/postfix/main.cf

Fűzzük a file végébe az alábbi sorokat:

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

 

Aztán a parancssorba:

echo “[smtp.gmail.com]:587    felhasználónév@gmail.com:jelszó” > /etc/postfix/sasl_passwd

chmod 400 /etc/postfix/sasl_passwd

postmap /etc/postfix/sasl_passwd

cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | tee -a /etc/postfix/cacert.pem

/etc/init.d/postfix reload

Majd a végén teszteljük le, hogy minden rendben van-e:

echo “teszt szövege” | mail saját@emailcímem.hu