Copyright© 1997 Hugo Cisneiros, hugo@netdados.com.br
Versão 3.3







Nesse exemplo, usaremos o diretório Web, /home/web. A conta Web é mantida
remotamente via FTP. O usuário remoto é Mortimer. O nome da conta de Mortimer é
"mort" (sem aspas) e o grupo é "client" (sem aspas).

1. "Hackeie" o /etc. Crie a entrada mort no /etc/passwd e adicione a entrada também
em /etc/group. (Ou adduser se preferir) Adicione as entradas para /etc/ftpaccess:

/etc/passwd:
mort:*:403:400:Mortimer Snerd:/home/web/mort/./:/etc/ftponly
                                            ^^^
A seqüência /./ determina onde o chroot vai atuar. Se você quer que o chroot
atue no diretório web e o chdir atue para mort, vai ficar mais ou menos assim:

mort:*:403:400:Mortimer Snerd:/home/web/./mort/:/etc/ftponly
                                       ^^^
Tenha certeza que /etc/ftponly esteja no /etc/shells.

/etc/group:
client::400:mort

Adicione o password de mort se você quiser.

Se você está usando uma versão Beta do ftpd (altamente recomendado),
você tem que fazer uma dessas coisas no uso do /etc/ftpaccess:

1. Compile o código e use o /etc/ftpaccess como padrão. Hackeie o código
   e configure o use_accessfile = 1;

OU

2. Rode o Daemon com a opção -a.

/etc/ftpaccess:
class   local   real,guest,anonymous ......
...                  ^^^^^
...                    +----------- define a propriedade da classe 'guest';
...                                 este lugar é dependente.
...
...
delete     no   anonymous,guest               # delete permission?
overwrite  no   anonymous,guest               # overwrite permission?
rename     no   anonymous,guest               # rename permission?
chmod      no   anonymous,guest               # chmod permission?
umask      no   anonymous,guest               # umask permission?
...                       ^^^^^
...                         +------ define as permissões dos usuários 
...                                 correspondentes; este lugar é dependente.
...
...
path-filter  guest      /etc/pathmsg  ^[-A-Za-z0-9_\.]*$  ^\.  ^-
...
guestgroup client
...

2. Crie o diretório home de mort e configure o dono e proteções (permissões):

mkdir /home/web/mort
chown mort.client /home/web/mort
chmod 755 /home/web/mort

3. Crie uma estrutura do diretório na conta de mort:

cd /home/web/mort
mkdir etc bin dev lib            (dev e lib são opcionais)
chown root.daemon etc bin
chmod 111 etc bin

4. Crie o conteúdo do diretório ~/bin

(Use Copias de Links estáticos para as utilidades se possível)

cp /.../bin/ls bin
chown root.bin bin/ls
chmod 111 bin/ls

Opcional para comandos de compactação e tar:

cp /.../bin/gzip bin
cp /.../bin/tar  bin
chown root.bin bin/gzip
chown root.bin bin/tar
chmod 111 bin/gzip
chmod 111 bin/tar

Se as utilidades não são estáticas, crie os devices necessários no ~/dev
e copie as libs necessárias dentro do ~/lib. Veja a man page do ftpd que
vem com seu sistema, talvez ajude.

5. Crie o conteúdo do diretório ~/etc:

Crie um passwd, edite-o para conter o seguinte:

root:*:0:0::/:/etc/ftponly
mort:*:403:400::/home/web/mort/./:/etc/ftponly

Crie um group, edite-o para conter o seguinte:

root::0:root
client::400:mort

Depois:

chown root.daemon passwd group
chmod 444 passwd group

6. Adicione segurança extra:

cd /home/web/mort
touch .rhosts .forward
chown root.root .rhosts .forward
chmod 400 .rhosts .forward

Logue-se como mort via FTP e provavelmente dará certo.
Se não, faça tudo novamente e cuidadosamente. Se você não
conseguir fazer funcionar e tentou de qualquer jeito, peça ajuda
pelo e-mail do wu-ftp: wu-ftpd@wugate.wustl.edu

**************************************************************************

DEPENDÊNCIA DE OS

LINUX:

No Linux não se precisa do diretório ~/dev/. Precisa-se do ~/lib se as
utilitades estão no ~/bin dinâmicamente linkadas.

Se você está usando Slackware, use o utilitários /home/ftp/bin/ls ao
inés de /bin/ls. /bin/ls é dinêmicamente linkado, enquando /home/ftp/bin/ls
é estaticamente linkado.

Use o comando 'ldd' para achar quais libraries são necessárias para as
utilidades dinâmicamente linkadas.

Como o que importa é o Linux, os outros sistemas estarão em inglês.


SOLARIS: 

Solaris can't handle SETPROCTITLE, so turn the compile time option off.

(The following was culled from a post by Tom Leach to the wu-ftpd list.)

>For people who are having problems with ls -al and dir on solaris 2.x
>systems, you might try the following to find out what's missing... 

>truss -f chroot ~ftp /bin/ls

>This will run the ls command in the same chroot'd environment that
>anonymous FTP runs in.  The truss will show you what
>files/libraries/devices are accessed and where the ls is looking for them. 

>Tom Leach
>leach@oce.orst.edu



SUN 4.1.x:

Create a ~dev/zero and ~dev/tcp device from the FTP directory as follows:

# cd dev
# mknod zero c  3 12
# mknod tcp  c 11 42
# cd ..
# chmod 555 dev

The resulting device should ls like this:

crw-r--r--  1 root        3, 12 Jul 27 17:48 zero
crw-r--r--  1 root       11, 42 Jul 27 17:48 tcp

Also, you probably need the following shared libraries:
~lib/ld.so
~lib/libc.so
~lib/libdl.so



BSDI:

Set 555 protections on the ~ftp/shlib and its contents if shared libraries
are used.

>From Darci Chapman (dchapmax@preview.jf.intel.com):

The following directories and files need to be created in whatever
directory/ies are being chrooted to (~ftp for anon ftp or for whatever
directory guest users are chrooted): 

dr-xr-xr-x root/wheel        0 Nov  3 01:43 1995 bin/
-r-xr-xr-x root/wheel    12288 Nov  3 01:43 1995 bin/compress
-r-xr-xr-x root/wheel    45056 Nov  3 01:43 1995 bin/gzip
-r-xr-xr-x root/wheel    12288 Nov  3 01:43 1995 bin/ls
-r-xr-xr-x root/wheel    65536 Nov  3 01:43 1995 bin/pax
dr-xr-xr-x root/wheel        0 Nov  3 01:43 1995 etc/
-r--r--r-- root/wheel      793 Nov  3 01:43 1995 etc/group
-r--r--r-- root/wheel      817 Nov  3 01:43 1995 etc/localtime
-r--r--r-- root/wheel    40960 Nov  3 01:43 1995 etc/pwd.db
dr-xr-xr-x root/wheel        0 Feb  3 12:34 1995 pub/
dr-xr-xr-x root/wheel        0 Nov  3 01:43 1995 shlib/
-r-xr-xr-x root/wheel   298407 Nov  3 01:43 1995 shlib/libc_s.2.0

**************************************************************************






Voltar ao Índice principal