{"id":144,"date":"2016-03-31T12:52:35","date_gmt":"2016-03-31T15:52:35","guid":{"rendered":"http:\/\/www.tia-go.net\/wordpress\/?p=144"},"modified":"2016-04-13T22:39:38","modified_gmt":"2016-04-14T01:39:38","slug":"pureftpd-chroot-para-diretorios-virtuais","status":"publish","type":"post","link":"https:\/\/www.tia-go.net\/wordpress\/pureftpd-chroot-para-diretorios-virtuais\/","title":{"rendered":"PureFTPd &#8211; Chroot para diret\u00f3rios virtuais"},"content":{"rendered":"<p>Sempre que fa\u00e7o a instala\u00e7\u00e3o de um servidor PureFTPD, quando vou testar o acesso, noto que o diret\u00f3rio inicial do cliente est\u00e1 com o path f\u00edsico real sendo mostrado.. assim:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nConnected to servidor.\r\n220---------- Welcome to Pure-FTPd &#x5B;privsep] &#x5B;TLS] ----------\r\n220-You are user number 1 of 50 allowed.\r\n220-Local time is now 10:42. Server port: 21.\r\n220-This is a private system - No anonymous login\r\n220-IPv6 connections are also welcome on this server.\r\n220 You will be disconnected after 15 minutes of inactivity.\r\nName (servidor:user): usuario\r\n331 User usuario OK. Password required\r\nPassword:\r\n230 OK. Current directory is \/home\/usuario\r\nRemote system type is UNIX.\r\n<\/pre>\n<p>Como n\u00e3o quero isso, vou atr\u00e1s de fechar esse acesso&#8230;<\/p>\n<p>o Pureftpd (pelo menos no Debian) cria a seguinte estrutura para os arquivos de configura\u00e7\u00e3o:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ncd \/etc\/pure-ftpd\/conf\r\nroot@servidor:\/etc\/pure-ftpd\/conf# ls -l\r\ntotal 40\r\n-rw-r--r-- 1 root root 36 Feb 25 2015 AltLog\r\n-rw-r--r-- 1 root root 6 Feb 25 2015 FSCharset\r\n-rw-r--r-- 1 root root 5 Feb 25 2015 MinUID\r\n-rw-r--r-- 1 root root 29 Feb 25 2015 MySQLConfigFile\r\n-rw-r--r-- 1 root root 4 Feb 25 2015 NoAnonymous\r\n-rw-r--r-- 1 root root 4 Feb 25 2015 PAMAuthentication\r\n-rw-r--r-- 1 root root 28 Feb 25 2015 PureDB\r\n-rw-r--r-- 1 root root 18 Feb 25 2015 TLSCipherSuite\r\n-rw-r--r-- 1 root root 3 Feb 25 2015 UnixAuthentication\r\nroot@servidor:\/etc\/pure-ftpd\/conf#\r\n<\/pre>\n<p>Note que cada arquivo, representa o nome de um &#8216;wrapper&#8217; (pacote), que nesse caso, representa uma configura\u00e7\u00e3o opcional espec\u00edfica. A lista completa dos wrappers pode ser vista nas man pages (sim, elas ainda existem! &#8211; menos Google e mais man):<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">man pure-ftpd-wrapper<\/pre>\n<p>Os wrappers s\u00e3o divididos por tipos com valores, como Boleanos, Num\u00e9ricos, String, etc..<\/p>\n<p>Enfim, na lista, vamos procurar o whapper: &#8216;ChrootEveryone&#8217;, que possui valor boleano.<\/p>\n<p>Nesse caso, podemos usar: &#8220;Yes&#8221;,1,&#8221;On&#8221; para habilitar ou &#8220;No&#8221;,0 or &#8220;Off&#8221; para desativar.<\/p>\n<p>Vamos criar ele dentro do nosso diret\u00f3rio de configura\u00e7\u00e3o:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\r\ncd \/etc\/pure-ftpd\/conf\r\ncat Yes &gt; ChrootEveryone\r\nls -l\r\ntotal 40\r\n-rw-r--r-- 1 root root 36 Feb 25 2015 AltLog\r\n-rw-r--r-- 1 root root 4 Mar 31 10:46 ChrootEveryone\r\n-rw-r--r-- 1 root root 6 Feb 25 2015 FSCharset\r\n-rw-r--r-- 1 root root 5 Feb 25 2015 MinUID\r\n-rw-r--r-- 1 root root 29 Feb 25 2015 MySQLConfigFile\r\n-rw-r--r-- 1 root root 4 Feb 25 2015 NoAnonymous\r\n-rw-r--r-- 1 root root 4 Feb 25 2015 PAMAuthentication\r\n-rw-r--r-- 1 root root 28 Feb 25 2015 PureDB\r\n-rw-r--r-- 1 root root 18 Feb 25 2015 TLSCipherSuite\r\n-rw-r--r-- 1 root root 3 Feb 25 2015 UnixAuthentication\r\n<\/pre>\n<p>Pronto, fazemos um &#8220;restart&#8221; no servi\u00e7o e vamos testar:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\r\n# systemctl restart pure-ftpd-mysql\r\n\r\n:~# ftp servidor\r\nConnected to servidor.\r\n220---------- Welcome to Pure-FTPd &#x5B;privsep] &#x5B;TLS] ----------\r\n220-You are user number 1 of 50 allowed.\r\n220-Local time is now 10:46. Server port: 21.\r\n220-This is a private system - No anonymous login\r\n220-IPv6 connections are also welcome on this server.\r\n220 You will be disconnected after 15 minutes of inactivity.\r\nName (servidor:user): usuario\r\n331 User usuario OK. Password required\r\nPassword:\r\n230 OK. Current restricted directory is \/\r\nRemote system type is UNIX.\r\nUsing binary mode to transfer files.\r\nftp&gt; pwd\r\n257 &quot;\/&quot; is your current location\r\nquit\r\n\r\n<\/pre>\n<p>Ok, agora o usu\u00e1rio vai ficar limitado ao diret\u00f3rio espec\u00edfico configurado para ele.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sempre que fa\u00e7o a instala\u00e7\u00e3o de um servidor PureFTPD, quando vou testar o acesso, noto que o diret\u00f3rio inicial do cliente est\u00e1 com o path f\u00edsico real sendo mostrado.. assim: Connected to servidor. 220&#8212;&#8212;&#8212;- Welcome to Pure-FTPd &#x5B;privsep] &#x5B;TLS] &#8212;&#8212;&#8212;- 220-You are user number 1 of 50 allowed. 220-Local time is now 10:42. Server port:&#8230; <a href=\"https:\/\/www.tia-go.net\/wordpress\/pureftpd-chroot-para-diretorios-virtuais\/\">ler mais &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[28,27,17,26,25,29],"class_list":["post-144","post","type-post","status-publish","format-standard","hentry","category-linux","tag-configuracoes","tag-ftp","tag-linux","tag-pure-ftpd","tag-pureftpd","tag-wrapper"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts\/144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/comments?post=144"}],"version-history":[{"count":5,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts\/144\/revisions\/152"}],"wp:attachment":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/media?parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/categories?post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/tags?post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}