Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Virtuální uživetelé  (Přečteno 8612 krát)

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« kdy: 10 Dubna 2007, 12:02:21 »
Jak vytvořím vyrtuálního uživatele v ProFtpd?Poradí mi někdo?

Jan Rippl

  • Návštěvník
  • Příspěvků: 63
  • Jsme tu stále s Vámi...
    • JanRippl.eu
Virtuální uživetelé
« Odpověď #1 kdy: 15 Dubna 2007, 20:30:31 »
jak? velice jednoduše. vytvoříte uživatele v systému a automaticky bude mít i svůj účet FTP. I já dnes zprovoznil svůj veřejně přístupný server. Jen tak dál a lovu zdar...;)
Řekni, jaký software používáš, a já ti povím, jaký jsi...

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« Odpověď #2 kdy: 16 Dubna 2007, 09:17:10 »
nepoužíváš náhodou proftpd-mysql?Potřeboval bych s tím úporadit,nechce mi to nějak fongovat.Předem děkuji.

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« Odpověď #3 kdy: 16 Dubna 2007, 10:16:37 »
pro úplnost přikládám configurák proftpd

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

ServerName         "MSCNET_SERVER"
ServerType         standalone
DeferWelcome         off

MultilineRFC2228      on
DefaultServer         on
ShowSymlinks         on

TimeoutNoTransfer      600
TimeoutStalled         600
TimeoutIdle         1200

DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                   "-l"

DenyFilter         \*.*/

# Port 21 is the standard FTP port.
Port            21

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts                    49152 65534

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances         30

# Set the user and group that the server normally runs at.
User            proftpd
Group            nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask            022  022
# Normally, we want files to be overwriteable.
AllowOverwrite         on

# Uncomment this if you are using NIS or LDAP to retrieve passwords:
# PersistentPasswd      off

# Be warned: use of this directive impacts CPU average load!
#
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
# UseSendFile         off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log


TLSEngine off



QuotaEngine on



Ratios on



# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.

DelayEngine on



ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock



AdminControlsEngine on


# A basic anonymous configuration, no upload directories.

#
#  User            ftp
#  Group            nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias         anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser   on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell      off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients         10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
   DisplayLogin         welcome.msg
#   DisplayFirstChdir      .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#  
#    
#       DenyAll
#    

#  

#
#   # Uncomment this if you're brave.
#   #
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask            022  022
#   #            
#   #            DenyAll
#   #            

#   #            
#   #            AllowAll
#   #            

#   #

#
#


SQLConnectInfo ProFtpd@192.168.1.100 mira mira
SQLAuthenticate users
SQLAuthTypes backend
SQLDefaultHomedir /home/ftp
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupname gid members
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1 WHERE userid='%u'" users

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Virtuální uživetelé
« Odpověď #4 kdy: 17 Dubna 2007, 21:10:06 »
Uz ani nevim, kde jsem ten konfigurak vysmatl, ale jede dobre. Tech passive ports si moc nevsimejte, pouzivam to pro pruchod firewallem

/etc/proftpd.conf

Kód: [Vybrat]
DefaultRoot ~

ServerName "FTP server"
Port                            21                                              
PassivePorts                    5103 5189  

MultilineRFC2228                on                                              
DefaultServer                   on                                              
ShowSymlinks                    yes                                            
                                                                               
IdentLookups                    off                                            
UseReverseDNS                   off                                            
AllowStoreRestart               on                                              
AllowRetrieveRestart            on                                              
                                                                               
TimeoutNoTransfer               900                                            
TimeoutStalled                  600                                            
TimeoutIdle                     1800                                            

Umask 022 022
                                                                               
DisplayLogin                    welcome.msg                                    
DisplayFirstChdir               .message                                        
ListOptions                     "-l"                                            
                                                                               
DenyFilter                      \*.*/  

ServerType                      standalone

# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes            Crypt Plaintext
SQLAuthenticate         on


# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo  ftp@localhost proftpd prisnetajneheslopropripojenikdatabazi


# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo     ftpuser userid passwd uid gid homedir shell

# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo    ftpgroup groupname gid members

# set min UID and GID - otherwise these are 999 each
SQLMinID        500

# create a user's home directory on demand if it doesn't exist
SQLHomedirOnDemand on

# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser

# Update modified everytime user uploads or deletes a file
SQLLog  STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

SQLNamedQuery gettally  SELECT "ROUND((bytes_in_used/1048576),2) FROM ftpquotatallies WHERE name='%u'"
SQLNamedQuery getlimit  SELECT "ROUND((bytes_in_avail/1048576),2) FROM ftpquotalimits WHERE name='%u'"
SQLNamedQuery getfree   SELECT "ROUND(((ftpquotalimits.bytes_in_avail-ftpquotatallies.bytes_in_used)/1048576),2) FROM ftpquotalimits,ftpquotatallies WHERE ftpquotalimits.name = '%u' AND ftpquotatallies.name = '%u'"

SQLShowInfo   LIST    "226" "Used %{gettally}MB from %{getlimit}MB. You have %{getfree}MB available space."

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

RootLogin off
RequireValidShell off
tabulky v databazi:

--
-- Struktura tabulky `ftpgroup`
--

CREATE TABLE `ftpgroup` (
  `groupname` varchar(16) NOT NULL default '',
  `gid` smallint(6) NOT NULL auto_increment,
  `members` varchar(16) NOT NULL default '',
  PRIMARY KEY  (`gid`),
  KEY `groupname` (`groupname`)
) AUTO_INCREMENT=2004 ;

--
-- Struktura tabulky `ftpquotalimits`
--

CREATE TABLE `ftpquotalimits` (
  `name` varchar(30) default NULL,
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `per_session` enum('false','true') NOT NULL default 'false',
  `limit_type` enum('soft','hard') default 'hard',
  `bytes_in_avail` int(10) unsigned NOT NULL default '0',
  `bytes_out_avail` int(10) unsigned NOT NULL default '0',
  `bytes_xfer_avail` int(10) unsigned NOT NULL default '0',
  `files_in_avail` int(10) unsigned NOT NULL default '0',
  `files_out_avail` int(10) unsigned NOT NULL default '0',
  `files_xfer_avail` int(10) unsigned NOT NULL default '0'
)

--
-- Struktura tabulky `ftpquotatallies`
--

CREATE TABLE `ftpquotatallies` (
  `name` varchar(30) NOT NULL default '',
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `bytes_in_used` int(10) unsigned NOT NULL default '0',
  `bytes_out_used` int(10) unsigned NOT NULL default '0',
  `bytes_xfer_used` int(10) unsigned NOT NULL default '0',
  `files_in_used` int(10) unsigned NOT NULL default '0',
  `files_out_used` int(10) unsigned NOT NULL default '0',
  `files_xfer_used` int(10) unsigned NOT NULL default '0'
)
       

--
-- Struktura tabulky `ftpuser`
--

CREATE TABLE `ftpuser` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `userid` varchar(32) NOT NULL default '',
  `passwd` varchar(32) NOT NULL default '',
  `uid` smallint(6) NOT NULL default '5500',
  `gid` smallint(6) NOT NULL default '5500',
  `homedir` varchar(255) NOT NULL default '',
  `shell` varchar(16) NOT NULL default '/sbin/nologin',
  `count` int(11) NOT NULL default '0',
  `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `userid` (`userid`)
)
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« Odpověď #5 kdy: 18 Dubna 2007, 20:10:43 »
díky vyzkouším,kdyžtak se ozvu.

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« Odpověď #6 kdy: 20 Dubna 2007, 19:33:28 »
Tak mi to hází zatím tuhle chybu.

Failed to start FTP server :
 * Starting ftp server proftpd
 - Fatal: unknown configuration directive 'SQLAuthTypes' on line 31 of '/etc/proftpd/proftpd.conf'
   ...fail!

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Virtuální uživetelé
« Odpověď #7 kdy: 20 Dubna 2007, 20:33:29 »
A mate nainstalovane baliky proftpd a proftpd-mysql ?
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« Odpověď #8 kdy: 24 Dubna 2007, 08:31:40 »
ano mám.Když příslušné řídky týkající se sql zakomentuju tak se ProFtpd rozjede.

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Virtuální uživetelé
« Odpověď #9 kdy: 09 Května 2007, 20:50:24 »
Takze uz mne to trochu nebavilo, jak porad kdyz instaluji novy server marne znova patram, jak jsem to vlastne delal.
Z nejakeho duvodu mi ubunti balicky nefunguji tak, jak maji, takze davam prostor vlastni kompilaci (nebojte, nic sloziteho).
Verze proftpd 1.3.0 je pouzita kvuli dobre kompatibilite a stabilite. Mimo jine je k ni dostupna dvojice patchu umoznujici
vypis adresare v urcitem kodovani:


Pokud nemate nainstalovany zadny balik proftpd, muzete prvni krok vynechat
Kód: [Vybrat]
sudo apt-get remove proftpd* --purge

sudo apt-get install patch gcc g++ make libmysqlclient15-dev

cd /usr/src
sudo wget http://www.nanetu.eu/proftpd/proftpd-1.3.0.tar.gz
sudo wget http://www.nanetu.eu/proftpd/proftpd-1.3.0-nlst-ffftp.patch
sudo wget http://www.nanetu.eu/proftpd/proftpd-1.3.0-iconv.patch
sudo wget -O /etc/init.d/proftpd http://www.nanetu.eu/proftpd/proftpd
sudo chmod 0755 /etc/init.d/proftpd

sudo echo "RUN=yes" >>/etc/default/proftpd
sudo echo "OPTIONS=" >>/etc/default/proftpd
sudo echo "CONF=/etc/proftpd.conf" >>/etc/default/proftpd

sudo tar -zxvf proftpd-1.3.0.tar.gz
sudo patch -p0 < proftpd-1.3.0-iconv.patch
sudo patch -p0 < proftpd-1.3.0-nlst-ffftp.patch
cd proftpd-1.3.0

sudo ./configure --prefix=/usr --sysconfdir=/etc --with-modules=mod_codeconv --with-modules=mod_codeconv:mod_df:mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql --with-includes=/usr/include/mysql

sudo make

sudo make install
cat /etc/proftpd.conf:
Kód: [Vybrat]
##ServerType urcuje, zda se jedna o server bezici jako daemon (standalone), nebo jako sluzba superserveru (inetd/xinetd)
ServerType                      standalone

##DefaultRoot - kam ma byt uzivatel chrootovan (kde bude jeho "/" adresar)
DefaultRoot ~                                                                        

##CharsetLocal  - lokalni znakova sada (pravdepodobne UTF-8)
##CharsetRemote - znakova sada vzdaleneho klienta, pokud predpokladate wokna, pak CP1250
CharsetLocal                    UTF-8                                                                                                  
CharsetRemote                   UTF-8

##AllowOverwrite - zda lze prepisovat soubory
##AllowRetrieveRestart - zda lze navazat na castecne stazeny soubor
##AllowStoreRestart - zda lze navazat na castecne nahrany soubor
AllowOverwrite                  on                  
AllowRetrieveRestart            on                                                                                                  
AllowStoreRestart               on
                                                                   
##ServerName - vpodstate hlaska po pripojeni k serveru
##Port - kde ma server poslouchat - 21 je vychozi (a bezny) port pro FTP
##PassivePorts
##------------
##FTP pouziva vychozi port 21 pro "prikazovou radku", kudy posila informace jako je stor, put, ls ... proste bezne prikazy
##Dale pak pouziva datovy kanal, kudy tecou vlastni data (obsah vypisu adresare, up/download vlastniho souboru
##Existuji dve moznosti, jak datovy kanal muze fungovat
##
##1) Active - znamena, ze server ma otevren jen port 21 a 20 (datovy port),
##Komunikace mezi klientem a serverem pak probiha tak, ze klient z libovolneho portu (N>1023) vysle pozadavek na komunikacni kanal (port 21),
##pokud se mu dostane odpovedi, zacne poslouchat na dalsim (volnem) portu (N+1) a posle toto cislo serveru. Server se pak pripoji ke klientovi
##na oznameny port z portu 20 a zacne odesilat data. Z hlediska serveru je to nejjednodussi mozna konfigurace, protoze ve firewallu staci povolit
##prichozi porty 20 a 21, ale z hlediska klienta uz to tak snadne neni - problem nastava u klientu s neverejnou IP (za NAT nebo PROXY) a zapnutym
##firewallem, ktery neumi povolit prichozi smer pro vsechny porty otevrene FTP klientem. Osobne active mod u serveru nepouzivam, uz jen proto, ze
##hodne nejbeznejsich www klientu (napr. firefox, ie) odesila ihned po prihlaseni prikaz PASV (prepni mne do passive modu) a navic se nelze spolehat
##na to, ze uzivatel bude vzdy "prvni na rane" tj. ze bude mit verejnou IP a pruchozi firewall
##
##2) Passive - znamena, ze server ma otevreny port 21 a urcite mnozstvi dalsich portu, ktere nasledne pouziva pro prenos dat mezi klientem a
##serverem tj. kdy klient po prihlaseni na server obdrzi od serveru cislo prideleneho otevreneho port, na kterem data na klienta cekaji. Z hlediska
##konfigurace firewallu na serveru je to pomerne problem, nastesti proftpd podporuje vynuceni urciteho bloku volnych portu, kdy se uz firewall
##da upravit tak, aby propustil presne a jen toto mnozstvi. Doporucuji otevrit i port 20, protoze pak bude server fungovat v obou modech
ServerName                      "My ProFTPd server"                                                                              
Port                            21                                                                                                  
PassivePorts                    5103 5189                                                                                            


##MultilineRFC2228 - Jedna se o urcitou "kompatibilitu rozsirujici" featuru. Vpodstate pri komunikaci klienta se serverm
##kazdy radek zacina urcitym kodem (2xx,4xx,6xx) ktery urcuje o jakou hlasku se jedna - diky tomu je zaruceno, ze klientska
##aplikace bude vedet, co je spatne(nebo dobre) a zaroven to server dokaze rici i cloveku srozumitelnou formou
##Standardne server posle kod odpovedi a pak vysype spousty radku bez kodu, coz muze vest k tomu, ze je protejsi klient zmateny,
##proto je MultilineRFC2228 dulezity - kazdy radek ma svuj jednoznacny kod
MultilineRFC2228                on                                                                                                  

##DefaulServer je zalezitost pouzivana hlavne v pripade VirtualServeru, kdy pokud prijde pozadavek na IP (a ne na dns nazev), nevi
##server, kam jej priradit, pokud by tato direktiva chybela, klient obdrzi hlasku "no server available to service your request"
DefaultServer                   on                                                                                            

##ShowSymlinks - Rekne, zda maji byt zobrazeny (a zda jsou aktivni) symbolicke odkazy. Muze to byt uzitecne v pripade, ze pozadujete nejaky
##ucet, skrz ktery se lze podivat treba do adresaru dalsich uzivatelu bez toho, aby bylo nutne pouzivat nejakou obecnejsi variantu (napr. mount --bind)
ShowSymlinks                    on                                                                                                

##IdentLookups urcuje, zda ma byt uzivatelske jmeno ziskano pres ident (RFC1413), defaultne je on, vypinam to, protoze to znacne zpomaluje
##prihlasovaci proces
IdentLookups                    off                                                                                                  

##Jedna se o zalezitost, kdy server po navazani spojeni zjistuje reverzni DNS zaznam klienta, pouziva se to treba pro
##bezpecnejsi autorizaci (dany uzivatel se smi prihlasit jen z dane domeny), default je on, vypinam to --> pomale
UseReverseDNS                   off                                                                              

##TimeoutNoTransfer urcuje, jak dlouho (v sekundach) muze byt uzivatel necinny bezprostredne po prihlaseni na server bez pozadavku
##TimeoutStalled urcuje, jak dlouho (v sekundach) bude proces prenosu dat (bez prenosu dat) povazovan za aktivni
##TimeoutIdle urcuje, jak dlouho (v sekundach) muze uzivatel zustat necinny (po prenosu dat)
TimeoutNoTransfer               900                                                                                                  
TimeoutStalled                  600                                                                                                  
TimeoutIdle                     1800                                                                                                

##Vpodstate klasicky linuxovy umask noveho adresare a souboru (maska se odecita od plne hodnoty tj. 777-022=755 ~ rwxr-xr-x)
Umask                           022     022                                                                                          

##DisplayLogin rika, ze ktereho souboru se nacte uvodni hlaska po prihlaseni na server (Vitejte na serveru blablablablabla)
##Zajimava je snad jen moznost, ze si uzivatel hlasku definuje sam - tj. tato konfigurace, kdy se soubor hleda v chrootu
##uzivatele, pokud soubor neexistuje, nevznikne zadna chyba, jen se uzivateli nic nevypise
DisplayLogin                    welcome.msg

##DisplayFirstChdir definuje, ktery soubor bude po prvnim otevreni adresare vypsan jako hlaska (neco ve smyslu "V tomto adresari se nachazi to
##a to a nelze mazat"), tato direktiva je oznacena za zastaralou, castecne ji nahrazuje DisplayChdir, ale asi stejne nema moc smysl, protoze vetsina
##www prohlizecu (nejcastejsi navstevnici FTP - alespon u mne) tyto hlasky stejne ignoruje
DisplayFirstChdir               .message        

##ListOptions ma jako hodnotu parametr, ktery udava, jak bude vypadat vypis adresare (v klasickem terminalu). Moznosti jsou
## -l Jedna radka pro jeden soubor
## -A Vypis vsechny soubory vyjma "." a ".."
## -a Vypis vsechny soubory vcetne tech skrytych (tj. zacinajicich "." - napriklad .htaccess)
## -C Vypis do kolonek
## -d Vypis jen adresare (misto jejich obsahu)
## -F V pripade, ze dany soubor obsahuje identifikator souboru ("*", "/", "=", "@" or "|"), vypise jej take
## -h Vypisuje velikosti souboru v "citelnejsi" podobe (1K, 10MB, 2,4GB atd.)
## -L Vypisuje soubory, na ktere ukazuje symbolicky odkaz
## -l Pouzije tzv. "podrobny vypis"
## -n Pri vypisu ukaze jen cisla GID a UID pro skupiny/uzivatel misto jejich nazvu
## -R Bude prochazet adresare rekurzivne
## -r Vypise soubory v obracenem poradi
## -S Seradi a vypise soubory podle velikosti
## -t Seradi a vypise soubory podle data posledni upravy
ListOptions                     "-l"                                                                                                
             
##RootLogin rika, zda uzivatel root muze pristoupit na server pres FTP, tak jak tak by to melo byt vypnuto pomoci /etc/ftpusers, ale jistota je jistota
##RequireValidShell - normalne proftpd pouziva uzivateli definovany shell, v tomto pripade ale vlastne nechceme, aby uzivatel shell mel, takze jej
##nepozadujeme
RootLogin off                                                                                                                      
RequireValidShell off        
             
##DenyFilter - zabezpeceni proti nastaveni nebezpecnych filtru na masku regularniho vyrazu
DenyFilter                      \*.*/                                                                                                


##AuthOrder rika v jakem poradi se ma pristupovat k overeni daneho uzivatele, pokud je nastavena takto,
##dojde k overeni jen na zaklade mysql (virtual user), tj. zadny bezny uzivatel (vlastnici shell) nebude overen
AuthOrder mod_sql.c                                                                                                                  
               

##SQLAuthenticate povoluje modul SQL overeni uzivatele
SQLAuthenticate         on

##SQLAuthTypes urcuje, jak jsou hesla ulozena v databazi
SQLAuthTypes            Crypt Plaintext                                                                                              

##SQLConnectInfo obsahuje informace potrebne pro prihlaseni k databazi, je dobre mit pro proftpd vlastniho uzivatele
SQLConnectInfo  databaze@localhost uzivatel_proftpd prisne_tajne_heslo                                                              
                                                                                                                                     
##SQLUserInfo rika, ktera tabulka a ktere zaznamy budou pouzity pro operace s uzivateli
SQLUserInfo     ftpuser userid passwd uid gid homedir shell                                                                          
                                                               
##SQLGroupInfo rika, ktera tabulka a ktere zaznamy budou pouzity pro operace se skupinami
SQLGroupInfo    ftpgroup groupname gid members                                                                                      
                                                                                                                                     
##Minimalni UID A GID uzivatele v SQL databazi, ktery ma opravneni se prihlasit
SQLMinID        500                                                                                                                  
                                                                                                                                     
##Umoznuje zalozit domovskou slozku uzivatele (definovanou v databazi) v pripade jeji neexistence
SQLHomedirOnDemand on                                                                                                                
                                                                                                                                     
##Pricteme pocet prihlaseni uzivatele po kazdem jeho prihlaseni (prikaz PASS)
SQLLog PASS updatecount                                                                                                              
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser                                          
                                                                                                                                     
##Definice posledniho up/downloadu/smazani souboru uzivatele v databazi (prikaz STOR,DELE,GET)
SQLLog  STOR,DELE,GET modified                                                                                                          
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser                                                            

## Uzivatelske kvoty
## =================                                                                                                                        
QuotaEngine on #Zapnuti kvot
QuotaDirectoryTally on #Maji se zapocitavat i adresare
QuotaDisplayUnits Mb #Zobrazovane jednotky
QuotaShowQuotas on #A maji se zobrazovat kvoty uzivatelum

##Nacita z databaze kvoty daneho uzivatele
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"                    

##Pocita jiz zaplnenou kvotu
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"                                                  

##Aktualizuje kvotu
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

##Vytvareni zaznamu kvoty pro uzivatele
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies                            

##Toto je pouzito pro zobrazeni hlasky uzivateli, kolik z kvoty mu jeste zbyva
SQLNamedQuery gettally  SELECT "ROUND((bytes_in_used/1048576),2) FROM ftpquotatallies WHERE name='%u'"                              
SQLNamedQuery getlimit  SELECT "ROUND((bytes_in_avail/1048576),2) FROM ftpquotalimits WHERE name='%u'"                              
SQLNamedQuery getfree   SELECT "ROUND(((ftpquotalimits.bytes_in_avail-ftpquotatallies.bytes_in_used)/1048576),2) FROM ftpquotalimits,ftpquotatallies WHERE ftpquotalimits.name = '%u' AND ftpquotatallies.name = '%u'"                                                    

##Zobrazime hlasku do pri prikazu LIST
SQLShowInfo   LIST    "226" "Used %{gettally}MB from %{getlimit}MB. You have %{getfree}MB available space."                          

##Tady definujeme, ze se kvoty pro uzivatele budou nacitat z databaze                                          
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
tabulky v databazi:
Kód: [Vybrat]
--
-- Struktura tabulky `ftpgroup`
--

CREATE TABLE `ftpgroup` (
  `groupname` varchar(16) NOT NULL default '',
  `gid` smallint(6) NOT NULL auto_increment,
  `members` varchar(16) NOT NULL default '',
  PRIMARY KEY  (`gid`),
  KEY `groupname` (`groupname`)
) AUTO_INCREMENT=2004 ;

--
-- Struktura tabulky `ftpquotalimits`
--

CREATE TABLE `ftpquotalimits` (
  `name` varchar(30) default NULL,
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `per_session` enum('false','true') NOT NULL default 'false',
  `limit_type` enum('soft','hard') default 'hard',
  `bytes_in_avail` int(10) unsigned NOT NULL default '0',
  `bytes_out_avail` int(10) unsigned NOT NULL default '0',
  `bytes_xfer_avail` int(10) unsigned NOT NULL default '0',
  `files_in_avail` int(10) unsigned NOT NULL default '0',
  `files_out_avail` int(10) unsigned NOT NULL default '0',
  `files_xfer_avail` int(10) unsigned NOT NULL default '0'
)

--
-- Struktura tabulky `ftpquotatallies`
--

CREATE TABLE `ftpquotatallies` (
  `name` varchar(30) NOT NULL default '',
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `bytes_in_used` int(10) unsigned NOT NULL default '0',
  `bytes_out_used` int(10) unsigned NOT NULL default '0',
  `bytes_xfer_used` int(10) unsigned NOT NULL default '0',
  `files_in_used` int(10) unsigned NOT NULL default '0',
  `files_out_used` int(10) unsigned NOT NULL default '0',
  `files_xfer_used` int(10) unsigned NOT NULL default '0'
)
       

--
-- Struktura tabulky `ftpuser`
--

CREATE TABLE `ftpuser` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `userid` varchar(32) NOT NULL default '',
  `passwd` varchar(32) NOT NULL default '',
  `uid` smallint(6) NOT NULL default '5500',
  `gid` smallint(6) NOT NULL default '5500',
  `homedir` varchar(255) NOT NULL default '',
  `shell` varchar(16) NOT NULL default '/sbin/nologin',
  `count` int(11) NOT NULL default '0',
  `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `userid` (`userid`)
)
Samosebou je potreba do databaze najekeho toho uzivatele zavest (jeho home bude v /home/ftp, uid i gid je 2001 - dobre se na to navazuje primo treba v sambe a nema nastaveny zadne kvoty), jmeno i heslo je "test" :)
Kód: [Vybrat]
INSERT INTO `ftpgroup` VALUES ('ftpgroup', 2001, '');
INSERT INTO `ftpuser` VALUES (1, 'test','test', 2001, 2001, '/home/ftp', '/sbin/nologin', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
INSERT INTO `ftpquotalimits` VALUES ('test', 'user', 'false', 'hard', 0, 0, 0, 0, 0, 0);
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

mira_mo

  • Aktivní člen
  • *
  • Příspěvků: 244
Virtuální uživetelé
« Odpověď #10 kdy: 16 Května 2007, 09:54:22 »
Tyto příkazy mi píší  Permission denied

sudo echo "RUN=yes" >>/etc/default/proftpd
sudo echo "OPTIONS=" >>/etc/default/proftpd
sudo echo "CONF=/etc/proftpd.conf" >>/etc/default/proftpd

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Virtuální uživetelé
« Odpověď #11 kdy: 16 Května 2007, 13:33:18 »
A uzivatel, pod kterym se snazite proftpd instalovat je sudoers?
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

dan

  • Návštěvník
  • Příspěvků: 63
Virtuální uživetelé
« Odpověď #12 kdy: 15 Července 2007, 18:19:07 »
merlin - paráda. Měl jsem sice ty samé problémy jako mira_mo, ale prostě jsem to udělal ručně. Ještě jednou díky.

 

Provoz zaštiťuje spolek OpenAlt.