{"id":309,"date":"2014-10-04T18:39:57","date_gmt":"2014-10-04T18:39:57","guid":{"rendered":"http:\/\/192.168.2.32:8082\/?p=309"},"modified":"2022-07-29T10:19:58","modified_gmt":"2022-07-29T10:19:58","slug":"pure-ftp-server-auf-ubuntu-server-installieren","status":"publish","type":"post","link":"https:\/\/www.dev-metal.ch\/?p=309","title":{"rendered":"Pure-FTP Server auf Ubuntu Server installieren"},"content":{"rendered":"<p>Pure-FTP ist ein einfach zu installierender und sicherer FTP-Server. Er l\u00e4sst sich jedoch nicht wie sonst gewohnt \u00fcber ein Konfig-File konfigurieren. Vielmehr wird der Server (pureftpd) \u00fcber ein Wrapper-Script aufgerufen, welches dem Server die Konfigurations-Parameter direkt beim Aufruf des Prozesses mitreicht. Die Konfiguration kann aber trotzdem recht einfach durchgef\u00fchrt werden. Im Verzeichnis<\/p>\n<pre class=\"lang:sh decode:true \">\/etc\/pure-ftpd\/conf<\/pre>\n<p>k\u00f6nnen &#8222;One-Liner&#8220; Files erstellt werden, welche vom Wrapper-Script gelesen und als Parameter verwendet werden. Siehe dazu weiter unten die Konfiguration.<\/p>\n<p>Das Wrapper-Script wird hier genauer beschreiben: https:\/\/manpages.debian.org\/experimental\/pure-ftpd-common\/pure-ftpd-wrapper.8.en.html<\/p>\n<p>Um zu \u00fcberpr\u00fcfen, welche Option aus dem Wrapper-Script gesetzt wurden:<\/p>\n<pre>pure-ftpd-wrapper --show-options<\/pre>\n<h1>Installation<\/h1>\n<p>W\u00e4hrend der Installation wird nebst dem installieren des Packete auch eine Gruppe &#8222;ftpgroup&#8220; und einen User &#8222;ftpuser&#8220; erstellt. Das Home-Verzeichnis von &#8222;ftpuser&#8220; wird das Root-Verzeichnis f\u00fcr alle virtuellen ftpuser sein. &#8222;ftpuser&#8220; dient zuk\u00fcnftig als Profil f\u00fcr alle virtuellen User (beim erstellen eines virutellen Users wird auf diesen ftpuser verwiesen).<\/p>\n<pre class=\"lang:sh decode:true\">sudo apt-get install pure-ftpd\r\n\r\nsudo groupadd ftpgroup\r\n\r\nsudo mkdir \/home\/ftpuser\r\n\r\nsudo useradd -g ftpgroup -d \/dev\/null -s \/bin\/false ftpuser\r\n=&gt; useradd: Warning: missing or non-executable shell '\/etc': Warnung ist ok\r\n\r\nsudo chown -R ftpuser:ftpgroup \/home\/ftpuser<\/pre>\n<p>Die Grundinstallation ist damit abgeschlossen. Nun kann sicher jeder Linux-User bereits einloggen, wobei das entsprechende Home-Verzeichnis als FTP-Root Verzeichnis verwendet wird. Das ganze ist in diesem Zustand auch noch nicht sehr sicher, da sich die User im gesamten Tree des Servers bewegen d\u00fcrfen (kein chroot, etc.).<\/p>\n<h1>Konfiguration<\/h1>\n<p>Jedes File in<\/p>\n<pre class=\"lang:sh decode:true\">\/etc\/pure-ftpd\/conf\/<\/pre>\n<p>entspricht einem Parameter, wobei das File dem Parameter und der Inhalt des Files dem Wert des Parameters entspricht. Verwendet wird die ausgeschriebene Variante der Parameter. Die m\u00f6glichen Parameter k\u00f6nnen mit<\/p>\n<pre class=\"lang:sh decode:true\">pure-ftpd --help\r\n<\/pre>\n<p>aufgelistet werden.<\/p>\n<p>Ich verwende folgende Konfiguration<\/p>\n<pre>sudo bash\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/ChrootEveryone\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/NoAnonymous\r\necho no &gt; \/etc\/pure-ftpd\/conf\/PAMAuthentication\r\necho no &gt; \/etc\/pure-ftpd\/conf\/UnixAuthentication \r\necho yes &gt; \/etc\/pure-ftpd\/conf\/IPV4Only\r\necho \/etc\/pure-ftpd\/pureftpd.pdb &gt; \/etc\/pure-ftpd\/conf\/PureDB\r\n<\/pre>\n<p>Da wir als Authentifizierung die PureDB nutzen wollen muss noch ein symbolischer Link gesetzt werden:<\/p>\n<pre>cd \/etc\/pure-ftpd\/auth\r\nsudo ln -s ..\/conf\/PureDB 50pure<\/pre>\n<p>Weiter m\u00f6gliche Konfigurations-Varianten:<\/p>\n<pre>echo yes &gt; \/etc\/pure-ftpd\/conf\/ProhibitDotFilesWrite\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/ProhibitDotFilesRead\r\necho 50 &gt; \/etc\/pure-ftpd\/conf\/MaxClientsNumber\r\necho 10 &gt; \/etc\/pure-ftpd\/conf\/MaxClientsPerIP\r\necho no &gt; \/etc\/pure-ftpd\/conf\/VerboseLog\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/DisplayDotFiles\r\necho no &gt; \/etc\/pure-ftpd\/conf\/AnonymousOnly\r\necho \/etc\/pure-ftpd\/pureftpd.pdb &gt; \/etc\/pure-ftpd\/conf\/PureDB\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/NoChmod\r\necho 15 &gt; \/etc\/pure-ftpd\/conf\/MaxIdleTime\r\necho 2000 8 &gt; \/etc\/pure-ftpd\/conf\/LimitRecursion\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/AntiWarez\r\necho no &gt; \/etc\/pure-ftpd\/conf\/AnonymousCanCreateDirs\r\necho 4 &gt; \/etc\/pure-ftpd\/conf\/MaxLoad\r\necho no &gt; \/etc\/pure-ftpd\/conf\/AllowUserFXP\r\necho no &gt; \/etc\/pure-ftpd\/conf\/AllowAnonymousFXP\r\necho no &gt; \/etc\/pure-ftpd\/conf\/AutoRename\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/AnonymousCantUpload\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/BrokenClientsCompatibility\r\necho ,21 &gt; \/etc\/pure-ftpd\/conf\/Bind\r\necho yes &gt; \/etc\/pure-ftpd\/conf\/Daemonize\r\n<\/pre>\n<h2>Virtuelle User<\/h2>\n<ul>\n<li>Erstelle einen User-Home-Verzeichnis (F\u00fcr jeden Benutzer kann ein solches Verzeichnis erstellt werden)\n<pre class=\"lang:sh decode:true \">sudo mkdir \/home\/ftpuser\/&lt;username&gt;\r\n<\/pre>\n<\/li>\n<li>Auf dem FTP-Verzeichnis die Rechte setzen:\n<pre class=\"lang:sh decode:true \">sudo chown -R ftpuser:ftpgroup \/home\/ftpuser\r\n<\/pre>\n<\/li>\n<li>Den Virtuellen User beim FTP-Server anlegen\n<pre class=\"lang:sh decode:true \">sudo pure-pw useradd $USERNAME -u ftpuser -d \/home\/ftpuser\/$USERNAME\r\n<\/pre>\n<\/li>\n<li>Damit Pure-FTP den neuen Benutzer mitbekommt, muss die Pure-FTP DB neu erstellen werden:\n<pre class=\"lang:sh decode:true \">sudo pure-pw mkdb<\/pre>\n<\/li>\n<\/ul>\n<p>Ich verwende auf meinem FTP Server softlinks zu weiteren Verzeichnissen\/Datenablagen. Normalerweise verbietet PureFTPd die Weiterleitung an &#8222;symlinks&#8220;. Man kann dies aber auch explizit erlauben. Dies aber nicht wie (von mir) erwartet \u00fcber ein Konfig-File &#8222;virtualchroot&#8220;. Daf\u00fcr muss man folgende Anpassung machen:<\/p>\n<pre>sudo vi \/etc\/default\/pure-ftpd-common\r\n\r\n=&gt; VIRTUALCHROOT=true<\/pre>\n<p>Anschliessend erlaubt PureFTPd das Weiterleiten an Symlinks.<\/p>\n<h2>TLS \/ SSL<\/h2>\n<ul>\n<li><\/li>\n<li>TLS\/SSL-Support aktivieren und Zertifikat erstellen:\n<pre class=\"lang:sh decode:true\">\/etc\/pure-ftpd\/conf# apt-get install openssl<\/pre>\n<pre class=\"lang:sh decode:true\">\/etc\/pure-ftpd\/conf# echo 1 &gt; TLS<\/pre>\n<pre class=\"lang:sh decode:true\">\/etc\/pure-ftpd\/conf# openssl req -x509 -nodes -newkey rsa:1024 -keyout \/etc\/ssl\/private\/pure-ftpd.pem -out \/etc\/ssl\/private\/pure-ftpd.pem\r\nGenerating a 1024 bit RSA private key\r\n.\r\n.\r\n.<\/pre>\n<pre class=\"lang:sh decode:true\">\/etc\/pure-ftpd\/conf# chmod 600 \/etc\/ssl\/private\/pure-ftpd.pem<\/pre>\n<\/li>\n<\/ul>\n<h1>pureadmin<\/h1>\n<p>Fuer Pure-FTP existiert ein GUI fuer die Administration. Hierfuer einfach das Packet pureadmin installieren.<\/p>\n<h1>User-Administration \u00fcber Konsole<\/h1>\n<p>Siehe dazu: <a href=\"https:\/\/download.pureftpd.org\/pub\/pure-ftpd\/doc\/README.Virtual-Users\" target=\"_blank\" rel=\"noopener\">https:\/\/download.pureftpd.org\/pub\/pure-ftpd\/doc\/README.Virtual-Users<\/a><\/p>\n<p><strong>Wichtig:<\/strong> nach allen User-\u00c4nderungen immer die DB neu generieren:<\/p>\n<pre>sudo pure-pw mkdb<\/pre>\n<h2>Benutzer-Management<\/h2>\n<p>View a User<\/p>\n<pre>sudo pure-pw show $USERNAME<\/pre>\n<p>Change a User\u2019s Password<\/p>\n<pre>sudo pure-pw passwd $USERNAME -m<\/pre>\n<p>Update an Existing User<\/p>\n<pre>sudo pure-pw usermod $USERNAME $OPTIONS -m<\/pre>\n<p>Deleting a User<\/p>\n<pre>sudo pure-pw userdel $USERNAME -m<\/pre>\n<p>Listing All Users<\/p>\n<pre>sudo pure-pw list<\/pre>\n<p>Update the User\/Password Database Manually<\/p>\n<pre>sudo pure-pw mkdb<\/pre>\n<h2>Managing the Pure-FTP Server<\/h2>\n<p>Start Pure-FTPd Server<\/p>\n<pre>sudo service pure-ftpd start<\/pre>\n<p>Stop Pure-FTPD<br \/>\nNote: This does not disconnect active users.<\/p>\n<pre>sudo service pure-ftpd stop<\/pre>\n<p>Disconnect All Active Users Immediately<\/p>\n<pre>sudo killall pure-ftpd<\/pre>\n<p>Pure-FTPd Status<\/p>\n<pre>sudo service pure-ftpd status<\/pre>\n<p>Restart Pure-FTPd<\/p>\n<pre>sudo service pure-ftpd restart<\/pre>\n<p>View Server Activity<\/p>\n<pre>sudo pure-ftpwho<\/pre>\n<p>&nbsp;<\/p>\n<h1>Pure-FTPd deinstallieren<\/h1>\n<pre>sudo service pure-ftpd stop\r\nsudo apt-get autoremove pure-ftpd\r\nsudo apt-get purge pure-ftpd\r\nsudo rm -r \/etc\/pure-ftpd\r\nsudo userdel ftpuser\r\nsudo groupdel ftpgroup\r\n\r\n<\/pre>\n<h1>Links<\/h1>\n<p><a href=\"https:\/\/linux.die.net\/man\/8\/pure-ftpd\" target=\"_blank\" rel=\"noopener\">https:\/\/linux.die.net\/man\/8\/pure-ftpd<\/a><\/p>\n<p><a href=\"https:\/\/www.laub-home.de\/wiki\/Ubuntu_%26_Debian_Linux_-_Installation_Pure-FTP\" target=\"_blank\" rel=\"noopener\">https:\/\/www.laub-home.de\/wiki\/Ubuntu_%26_Debian_Linux_-_Installation_Pure-FTP<\/a><\/p>\n<p><a href=\"https:\/\/help.ubuntu.com\/community\/PureFTP\" target=\"_blank\" rel=\"noopener\">https:\/\/help.ubuntu.com\/community\/PureFTP<\/a><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"op3dyvz0eh\"><p><a href=\"https:\/\/bobcares.com\/blog\/install-pure-ftpd-ubuntu\/\">Install Pure-FTPd Ubuntu &#8211; How we do it<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Install Pure-FTPd Ubuntu &#8211; How we do it&#8221; &#8212; Bobcares\" src=\"https:\/\/bobcares.com\/blog\/install-pure-ftpd-ubuntu\/embed\/#?secret=74abBmBExy#?secret=op3dyvz0eh\" data-secret=\"op3dyvz0eh\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pure-FTP ist ein einfach zu installierender und sicherer FTP-Server. Er l\u00e4sst sich jedoch nicht wie sonst gewohnt \u00fcber ein Konfig-File konfigurieren. Vielmehr wird der Server (pureftpd) \u00fcber ein Wrapper-Script aufgerufen, welches dem Server die Konfigurations-Parameter direkt beim Aufruf des Prozesses mitreicht. Die Konfiguration kann aber trotzdem recht einfach durchgef\u00fchrt werden. Im Verzeichnis \/etc\/pure-ftpd\/conf k\u00f6nnen &#8222;One-Liner&#8220; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-309","post","type-post","status-publish","format-standard","hentry","category-ubuntu"],"modified_by":"ralph","_links":{"self":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=309"}],"version-history":[{"count":28,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":1773,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions\/1773"}],"wp:attachment":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}