Chroot sftp - rssh

hi,

Juste un complément d’information.

J’ai installé rssh, histoire d’apprendre à chrooter avec. j’ai ensuite vidé le fichier de conf pour y mettre :

logfacility = LOG_USER
allowsftp
umask = 022

L’idée étant d’accéder à un répertoire de test /home/test, pour l’instant.
J’ai donc fait un chrootpath="/home/test".

Puis, dans ce répertoire, j’y ai donc copié /usr/bin/rssh/usr/bin/sftp et /usr/bin/ssh.

En fait, c’est après que j’ai un doute : en principe, il faut copier rssh_chroot_helper et sftp-server dans le système de fichier (disons usr/bin) qui sera cloisonné dans le répertoire de connexion (futur répertoire racine). Il faut aussi faire pareil pour sftp, scp, rssh, mais pour ceux-là, ce n’est pas un souci.

Le truc, c’est que rssh_chroot_helper et sftp-server sont décrit comme faisant partie d’un /usr/lib/libexec, à la base. Moi, si je fais un slocate dessus :

sh-3.1# slocate sftp-server
/usr/share/man/man8/sftp-server.8.gz
/usr/lib/sftp-server
/usr/lib/openssh/sftp-server
/home/vsftpd/usr/lib/openssh/sftp-server
/home/test/usr/libexec/sftp-server

sh-3.1# slocate rssh_chroot_helper
/usr/lib/rssh/rssh_chroot_helper
/home/vsftpd/usr/lib/rssh/rssh_chroot_helper
/home/test/usr/libexec/rssh_chroot_helper
De plus :

sh-3.1# pwd
/usr/lib
sh-3.1# ls -l | grep sftp-server
lrwxrwxrwx 1 root root 19 2008-08-11 01:40 sftp-server -> openssh/sftp-server

Autrement dit: /usr/lib/sftpd-server est un lien symbolique qui pointe vers /usr/lib/openssh/sftp-server

Alors, je dois copier “quoi”, vers usr/bin? (pour ceux qui l’ont déjà fait). Personnellement, je suis parti sur une copie de /usr/lib/openssh/sftp-server et /usr/lib/rssh/rssh_chroot_helper.

Ensuite, il faut copier les dépendances dans le répertoire à chrooter. On s’en tire donc avec ldd pour les repérer :

Monstre:/home/test# ldd /usr/bin/sftp
linux-vdso.so.1 => (0x00007fff20ffe000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00002b4089e08000)
libutil.so.1 => /lib/libutil.so.1 (0x00002b408a1a3000)
libz.so.1 => /usr/lib/libz.so.1 (0x00002b408a3a6000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00002b408a4bd000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x00002b408a6d5000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00002b408a90d000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00002b408ab22000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00002b408ad4e000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00002b408afef000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x00002b408b216000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00002b408b318000)
libedit.so.2 => /usr/lib/libedit.so.2 (0x00002b408b520000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00002b408b644000)
libc.so.6 => /lib/libc.so.6 (0x00002b408b79f000)
libdl.so.2 => /lib/libdl.so.2 (0x00002b408baf2000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00002b408bcf7000)
/lib64/ld-linux-x86-64.so.2 (0x00002b4089beb000)

Pour copier les librairies, il faut utiliser ce résultat comme ceci: il faut copier les dépendances qui sont dans /lib dans /home/lib et celles de /usr/lib dans /home/usr/lib en respectant l’arborescence.

Ma question, cette fois, est : quesako de /lib64/ld-linux-x86-64.so.2 ou de linux-vdso.so.1??

Pour l’instant, je n’ai que des connexions closed, et d’après mes recherches, c’est parce que je n’aurais pas tout copié dans le répertoire d’arrivé.

Merci d’avance!

Ben en fait, sftp-server suffit.
Donc il n’y a rien à copier dans usr/bin
Du moins chez moi, ca a suffit…

Je ne sais pas, elles apparaissent toujours quand tu fais un ldd,mais tu n’as pas besoin de les copier…
Par contre, tu as besoin de copier /lib/libnss_files.so.2, qui n’apparait pas dans ldd…

Tu peux t’inspirer de mon script : viewtopic.php?f=8&t=3548&st=0&sk=t&sd=a&start=100#p155529

Ah! merci pour la précision.

Je vais voir pourquoi il me manque la biblio dont tu me parles. J’espère qu’elle ne manque pas quelque part. je l’ai sans doute oublié tout bêtement.

En ce qui concerne sftp-server, j’ai copié le bon fichier, au moins? (/usr/lib/openssh/sftp-server) - vu qu’il y en a plusieurs…

Quand à ton script… Y a plein de script tout partout, sur la toile, d’utilisable pour ce faire. J’avoue que j’aimerai bien écrire le mien, en perl, dès que j’aurais du temps pour ça. Je garde précieusement le lien, thx.

Juste un autre truc, en complèment de ma précédente réponse :

Monstre:/home/test# ldd /usr/bin/sftp
linux-vdso.so.1 => (0x00007fff20ffe000)
(…)
/lib64/ld-linux-x86-64.so.2 (0x00002b4089beb000)

L’une ne pointe sur rien, l’autre, c’est le contraire. Pouquoi? A quoi ça correspond, par rapport aux autres bibliothèques?

yo, personne ne sait? :open_mouth:

d’après http://www.trilithium.com/johan/2005/08/linux-gate/
ca serait des librairies chargés en RAM à une adresse mémoire fixe, par le noyau
(vdso = virtual dynamic shared object)

Elles seraient utilisées par tout binaire au format ELF, si j’ai bien compris…
voir http://www.fr.freebsd.org/doc/fr_FR.ISO8859-1/books/handbook/binary-formats.html et http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

Apparement ca s’appelle linux-vdso.so.1 sur les 64bits, et linux-gate.so.1 sur les 32bits…

Bon, je ne suis pas spécialiste en la matière, donc à prendre avec des pincettes…

Ooookay… vu la présentation de la choooose… je pense que tu as raison t(quand à savoir comment et pourquoi ça fonctionne ainsi… on verra ça plus tard). Merci pour l’information!

Ok, je vais regarder ça ce soir ou ce week end. Je te dirai ce que j’ai et si ça marche.

Yo, moi, dans lib, j’ai :

sh-3.1# ls
ld-linux-x86-64.so.2 libcrypt.so.1 libkeyutils.so.1 libnss_files.so.2
lib libc.so.6 libncurses.so.5 libresolv.so.2
libcom_err.so.2 libdl.so.2 libnsl.so.1 libutil.so.1

Toi, avec ton script, tu dois avoir :

A faire
libresolv.so.2 ok
libcrypto.so.0.9.8 Absent chez moi
libutil.so.1 ok
libz.so.1 Absent chez moi
libnsl.so.1 ok
libcrypt.so.1 ok
libgssapi_krb5.so.2 Absent chez moi
libkrb5.so.3 Absent chez moi
libk5crypto.so.3 Absent chez moi
libcom_err.so.2 ok
libc.so.6 ok
libdl.so.2 ok
libkrb5support.so.0
libkeyutils.so.1 ok
ld-linux.so.2 ok
libnss_files.so.2 lib ok

Ceux qui sont “absents chez moi”, sont nécessaire?

Pour l’instant j’ai toujours un accès denied.
:frowning:

Ben tu fais un ldd /usr/lib/openssh/sftp-server pour voir les différences.
Et tu rajoutes ce foutu libnss_files…

D’autant que j’avais fait ce script sur un x86, apparemment tu as un amd64.

Ah ! oui, c’est vrai: la différence vient peut-être de la plateforme. Effectivement, je suis sur une 64 bits.

Je vais voir ça. Tu as raison, bien sûr.
:slightly_smiling: