Ftp сървърът може да бъде важна част от домашния сървър: хранилище на файлове, които да бъдат достъпни, на нас и на хората, с които ги споделяме, по всяко време. Особено ако работата ни изисква споделянето на големи обеми данни, които не могат да бъдат прекачени към традиционната електронна поща. Разбира се, могат да се ползват безплатните услуги на Google Drive, Dropbox или dox.bg, но понякога, без да е параноичен, човек е добре да държи нещата в свои ръце.
Нашият избор е ProFTPD, не по-лош от останалите възможности.
Инсталация
При нашата инсталация направихме първо опит „по лесния начин“ - инсталация чрез Webmin:
За съжаление, вероятно поради нашата некомпетентност, нещата се „омазаха“ - не всичко работеше според желанията ни. Затова изтрихме инсталацията и започнахме по „класическия“ начин - ръчна инсталация и конфигуриране. Инсталацията започва с командата:
$ sudo apt-get install proftpd
|
По време на инсталацията трябва да отговорим дали това да бъде inetd и stanalone сървър, като ние избрахме втората опция.
Базова конфигурация
След инсталацията трябва да направим някои настройки:
$ sudo nano /etc/proftpd/proftpd.conf
|
Можем да променим много опции, като:
Името на нашия сървър (ServerName), напр. “mysite.com” или “My FTP Server”
ServerName "User's FTP Server"
|
Определяме директориите, в които потребителите ще могат да влизат. Ако откоментираме този реда, започващ с DefaultRoot, всеки потребител ще може да влиза само в собствената си домашна директория. Това е добра практика, защото в противен случай всеки ще може да разглежда (и сваля файлове от) чуждите папки.
Указването на друга директория, напр. /srv/ftp, ще насочва всички регистрирани потребители към нея. Въпреки това при отваряне в браузър всеки потребител получава своето представяне, напр. Index of ftp://user@mysite.eu/
#DefaultRoot ~
DefaultRoot /srv/ftp
|
Това може да стане и чрез добавяне на секция:
<Global>
DefaultRoot /srv/ftp
</Global>
|
При включване и на двете опции предимство има DefaultRoot ~.
Порт 21 е портът по подразбиране на ftp. Ако само вие ще използвате този ftp сървър можете да го смените на някакъв друг, нестандартен. Но ако ще го използвате и за споделяне на файлове с трети лица, то промяната може би ще е свързана с прекалено много обяснения и настройки, които те не биха били склонни да приемат.
Port 21
|
Определяме името и групата на потребителя, под които ще се стартира сървърът. Необходимо е да прибавим съществуващите потребители към групата nogroup, както и да настроим правата, ако искаме те да пишат и четат от директорията на анонимните потребители:
User proftpd
Group nogroup
|
Можем да променим мястото, където ще влизат “анонимните” потребители. При мен по подразбиране директорията беше /srv/ftp:
<Anonymous ~ftp>
|
Можем да изредим всички имена, които ще бъдат валидни за анонимните потребители, в случая anonymous е синоним на съществуващия потребител ftp:
UserAlias anonymous ftp
|
В нашия случай задачите бяха:
- всеки потребител има собствена папка, в която държи личните си файлове и в която само той има възможност да пише;
- папката на всеки потребител няма директна връзка с /home папката, за да бъдат избегнати нежелани грешки с изтриването, презаписването или повреждането на конфигурационни файлове;
- всички потребители имат обща папка, в която поставят файловете за общо ползване;
- съществува папка, в която могат да пишат всички регистрирани потребители, но отвън достъп само за четене ще имат нерегистрираните потребители;
- в папката на нерегистрираните потребители трябва да има папка, в която те да могат да качват файлове, но без да могат да видят какви файлове са вече качени; тези файлове обаче трябва да могат да се виждат от регистрираните потребители;
- Някои от потребителите могат да имат достъп и до други папки, извън определената за ftp достъп.
Изпълнението им е както следва:
- Използваме за основна директория вече създадената /srv/ftp, като създаваме за регистрираните потребители собствени директории, както и такава (anonymous) за анонимните:
user@users-server:/srv/ftp$ ls -al
total 1244
drwxrwxr-x 5 ftp nogroup 4096 Mar 13 17:24 .
drwxr-xr-x 4 root root 4096 Oct 2 20:20 ..
drwxr-x--- 2 user user 4096 Mar 13 17:30 user
drwxrwx--- 2 ftp nogroup 4096 Mar 13 12:42 anonymous
drwxr-x--- 2 user2 user2 4096 Mar 13 17:24 user2
|
В случая регистрирани потребители са user и user2.
- В proftpd.conf задаваме DefaultRoot /srv/ftp и <Anonymous /srv/ftp/anonymous>. Всички регистрирани потребители могат да четат и пишат в /svr/ftp, както и в своите „лични“ папки и в папката /svr/ftp/anonymous, където „оставят“ файлове за сваляне от анонимни потребители.
- В папката на анонимните потребители създаваме папка upload, в която те имат право да качват файлове, но без да могат да ги разглеждат:
user@users-server:/srv/ftp/anonymous$ ls -al
total 8076
drwxrwx--- 4 ftp nogroup 4096 Apr 17 19:24 .
drwxrwxr-x 5 ftp nogroup 4096 Mar 21 18:31 ..
drwxr-xr-x 8 user2 user2 4096 Mar 23 18:48 ruma
-rw-r--r-- 1 user2 user2 8238189 Mar 21 18:31 snimki.zip
drwxrwxr-x 2 ftp nogroup 4096 Apr 25 17:56 upload
|
Съответните настройки на конфигурационния файл са:
<Anonymous /srv/ftp/anonymous>
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 5 "Sorry, max %m users -- try again later"
#
# # We want 'welcome.msg' displayed at login, and '.message' displayed
# # in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory /srv/ftp/anonymous/upload/*>
# # # Umask 022 is a good standard umask to prevent new files and dirs
# # # (second parm) from being group and world writable.
Umask 022 022
<Limit LIST NLST MLSD MLST STAT>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>
|
- Когато потребителите са „затворени“ в собствената си директория, то не могат, или по-точно не виждат, връзките към други директории, които са извън структурата ѝ. С други думи създадената връзка няма да работи. Но за радост съществува и друга възможност - определена директория да бъде монтирана на повече от едно място:
# mkdir /srv/ftp/user/www
# mount --bind /var/www /srv/ftp/user/www
|
По този начин потребителят user получава ftp достъп до директорията /var/www, която се намира извън структурата на chroot(). За да бъде тази промяна трайна, можем да запишем новото монтиране в /etc/fstab.
След редакцията трябва да рестартираме сървъра:
# service proftpd restart
|
Коментари
Публикуване на коментар