{"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<p>[plain]<br \/>\nConnected to servidor.<br \/>\n220&#8212;&#8212;&#8212;- Welcome to Pure-FTPd [privsep] [TLS] &#8212;&#8212;&#8212;-<br \/>\n220-You are user number 1 of 50 allowed.<br \/>\n220-Local time is now 10:42. Server port: 21.<br \/>\n220-This is a private system &#8211; No anonymous login<br \/>\n220-IPv6 connections are also welcome on this server.<br \/>\n220 You will be disconnected after 15 minutes of inactivity.<br \/>\nName (servidor:user): usuario<br \/>\n331 User usuario OK. Password required<br \/>\nPassword:<br \/>\n230 OK. Current directory is \/home\/usuario<br \/>\nRemote system type is UNIX.<br \/>\n[\/plain]<\/p>\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<p>[plain]<br \/>\ncd \/etc\/pure-ftpd\/conf<br \/>\nroot@servidor:\/etc\/pure-ftpd\/conf# ls -l<br \/>\ntotal 40<br \/>\n-rw-r&#8211;r&#8211; 1 root root 36 Feb 25 2015 AltLog<br \/>\n-rw-r&#8211;r&#8211; 1 root root 6 Feb 25 2015 FSCharset<br \/>\n-rw-r&#8211;r&#8211; 1 root root 5 Feb 25 2015 MinUID<br \/>\n-rw-r&#8211;r&#8211; 1 root root 29 Feb 25 2015 MySQLConfigFile<br \/>\n-rw-r&#8211;r&#8211; 1 root root 4 Feb 25 2015 NoAnonymous<br \/>\n-rw-r&#8211;r&#8211; 1 root root 4 Feb 25 2015 PAMAuthentication<br \/>\n-rw-r&#8211;r&#8211; 1 root root 28 Feb 25 2015 PureDB<br \/>\n-rw-r&#8211;r&#8211; 1 root root 18 Feb 25 2015 TLSCipherSuite<br \/>\n-rw-r&#8211;r&#8211; 1 root root 3 Feb 25 2015 UnixAuthentication<br \/>\nroot@servidor:\/etc\/pure-ftpd\/conf#<br \/>\n[\/plain]<\/p>\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<p>[plain]man pure-ftpd-wrapper[\/plain]<\/p>\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<p>[plain]<\/p>\n<p>cd \/etc\/pure-ftpd\/conf<br \/>\ncat Yes &gt; ChrootEveryone<br \/>\nls -l<br \/>\ntotal 40<br \/>\n-rw-r&#8211;r&#8211; 1 root root 36 Feb 25 2015 AltLog<br \/>\n-rw-r&#8211;r&#8211; 1 root root 4 Mar 31 10:46 ChrootEveryone<br \/>\n-rw-r&#8211;r&#8211; 1 root root 6 Feb 25 2015 FSCharset<br \/>\n-rw-r&#8211;r&#8211; 1 root root 5 Feb 25 2015 MinUID<br \/>\n-rw-r&#8211;r&#8211; 1 root root 29 Feb 25 2015 MySQLConfigFile<br \/>\n-rw-r&#8211;r&#8211; 1 root root 4 Feb 25 2015 NoAnonymous<br \/>\n-rw-r&#8211;r&#8211; 1 root root 4 Feb 25 2015 PAMAuthentication<br \/>\n-rw-r&#8211;r&#8211; 1 root root 28 Feb 25 2015 PureDB<br \/>\n-rw-r&#8211;r&#8211; 1 root root 18 Feb 25 2015 TLSCipherSuite<br \/>\n-rw-r&#8211;r&#8211; 1 root root 3 Feb 25 2015 UnixAuthentication<br \/>\n[\/plain]<\/p>\n<p>Pronto, fazemos um &#8220;restart&#8221; no servi\u00e7o e vamos testar:<\/p>\n<p>[plain]<\/p>\n<p># systemctl restart pure-ftpd-mysql<\/p>\n<p>:~# ftp servidor<br \/>\nConnected to servidor.<br \/>\n220&#8212;&#8212;&#8212;- Welcome to Pure-FTPd [privsep] [TLS] &#8212;&#8212;&#8212;-<br \/>\n220-You are user number 1 of 50 allowed.<br \/>\n220-Local time is now 10:46. Server port: 21.<br \/>\n220-This is a private system &#8211; No anonymous login<br \/>\n220-IPv6 connections are also welcome on this server.<br \/>\n220 You will be disconnected after 15 minutes of inactivity.<br \/>\nName (servidor:user): usuario<br \/>\n331 User usuario OK. Password required<br \/>\nPassword:<br \/>\n230 OK. Current restricted directory is \/<br \/>\nRemote system type is UNIX.<br \/>\nUsing binary mode to transfer files.<br \/>\nftp&gt; pwd<br \/>\n257 &quot;\/&quot; is your current location<br \/>\nquit<\/p>\n<p>[\/plain]<\/p>\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: [plain] Connected to servidor. 220&#8212;&#8212;&#8212;- Welcome to Pure-FTPd [privsep] [TLS] &#8212;&#8212;&#8212;- 220-You are user number 1 of 50 allowed. 220-Local time is now 10:42. Server&#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":{"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"],"_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}]}}