Пропускане към основното съдържание

UHS: Ftp сървър. Инсталиране и базова конфигурация

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

Източници:



Коментари

Популярни публикации от този блог

Проектиране на кемпер с VehiPlan

Оливер Колонж (Oliver Collonge) написва през 2011 г. втора версия на безплатната програма за дизайн на кемпери VehiPlan . Според автора тя е писана и трябва да работи под Windows 2000/Vista. Пробите показват, че работи нормално и под Windows 7 и 10. След като свалите архива (zip) можете да го разархивирате в C:\Windows\Program Files (x86)\. Програмата е с френски интерфейс и затова са необходими още няколко файла - vb6fr.dll , comdlg32.ocx & mscomctl.ocx . Тези файлове се поставят в C:\Windows\SysWOW64\. Comdlg.ocx се поставя в C:\Windows\System32\. След това е необходимо да се стартира Command Prompt (cmd - като администратор) и да се изпълни командата: regsvr32 %systemroot%\system32\comdlg32.ocx Ако възникне някакъв проблем, по-нова версия на файла може да се свали от тук . След това трябва да направим препратка към C:\Program Files (x86)\VehiPlan-2-0-0\VehiPlan.exe за по-удобно стартиране, която да поставим на работния плот или друго подходящо място. В архивния файл на програмат

Диаграма на Гант с електронна таблица

Диаграмата на Гант се състои от ленти, ориентирани успоредно на времевата ос. Всяка лента представлява отделна задача в проекта (вид работа), краищата ѝ — началния и крайния момент на изпълнението  ѝ, а дължината ѝ - продължителността на задачата. Тези диаграми могат да се използват и за други, не точно производствени, цели - например да покажат заетостта на учебна зала. Когато представянето на данните е регулярна задача може да се използва специализиран софтуер като GanttProject, но за инцидентна визуализация можем да се справим с „подръчни средства“. Сега ще покажем как с електронна таблица (LibreOffice Calc) ще визуализираме времето, за което няколко служители са работили във фирмата: Изходните данни са в няколко колони: Продължителността на трудовия стаж в дни определяме с формулата D2=C2-B2, като я копираме за всеки последващ ред. На 6-и ред съответно с функцията MIN и MAX определяме минимална и максимална дата в таблицата, а на 7-и ред - записваме начална (1.1.1989) и

MD5 и SHA-1 хеш алгоритми

MD5 (от „message-digest“) криптографският алгоритъм е създаден през 1991 г. от проф. Роналд Райвест и за първи път е публикуван през април 1992 г. Целта му е да замени компрометирания MD4 алгоритъм, който не е достатъчно сигурен. В последствие се оказва, че и MD5 не отговаря на съвременните изисквания за сигурност и може да бъде разбит. MD5 е построен върху конструкцията на Merkle–Damgård и генерира шестнайстично число със фиксиран размер от 32 символа (128 бита) за входящо съобщение с произволна дължина. Идеята е да се създаде уникален идентификатор за съобщението, който да гарантира неговата истинност. Например: MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6 Дори малка промяна, напр. добавя не точка в края на входящото съобщение би трябвало да генерира нов уникален идентификатор: MD5("The quick brown fox jumps over the lazy dog . ") = e4d909c290d0fb1ca068ffaddf22cbd0 Дължината на вход