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