Bonjour J'aimerais débugger un chroot avec rssh, que je n'arrive pas à mettre en place.
J'aimerais n'autoriser que scp, et qu'en upload (qu'on ne puisse pas facilement lister les fichiers uploadés et qu'on ne puisse pas faire sortir des fichiers de ma machine) à un utilisateur anonymous dont le password serait connu de tous ceux qui ont besoin de le connaître. "$CHROOT_PATH/upload" est le homedir de l'utilisateur anonymous (je value CHROOT_PATH, bien sûr, c'est juste pour avoir une vue globale que je fais comme si c'était une variable d'environnement). Pour le debug, j'ai laissé sftp. Je suis sur une Debian unstable à jour. J'essaye trois méthodes en parallèle, pour les trois, j'en suis au même résultat: l'authentification a l'air ok, mais tout de suite après, je perds la connexion ssh. 1ère méthode: tout à la main, je n'ai installé que ce qu'il me semblait nécessaire. Même si je comprends bien ce que je fais, je ne suis pas à l'abri d'un oubli. Le principe est expliqué dans la doc du package, on surveille les librairies nécessaires avec ldd, et on les recopie où il faut dans le chroot. Voilà l'arborescence actuelle: . |-- bin | `-- bash |-- lib | |-- ld-linux.so.2 | |-- libncurses.so.5 | `-- tls | |-- libc.so.6 | `-- libdl.so.2 |-- upload `-- usr `-- bin `-- rssh (Tiens, pour le coup, je me demande pourquoi j'ai mis bash...) 2ème méthode: j'ai laissé le script fourni par le package créer son arborescence Voilà ce que ça donne: . |-- bin | `-- bash |-- dev |-- etc | |-- group | |-- ld-2.3.2.so | |-- ld-linux.so.2 -> ld-2.3.2.so | |-- ld.so.cache | |-- ld.so.conf | |-- nsswitch.conf | `-- passwd |-- lib | |-- ld-linux.so.2 | |-- libncurses.so.5 | |-- libnss_files-2.3.2.so | |-- libnss_files.so.2 -> libnss_files-2.3.2.so | `-- tls | |-- libc.so.6 | |-- libcrypt.so.1 | |-- libdl.so.2 | |-- libnsl.so.1 | |-- libresolv.so.2 | `-- libutil.so.1 |-- upload `-- usr |-- bin | |-- rssh | `-- scp `-- lib |-- i686 | `-- cmov | `-- libcrypto.so.0.9.7 |-- libz.so.1 |-- openssh | `-- sftp-server `-- rssh `-- rssh_chroot_helper 3ème méthode: basée sur http://www.open-organizations.org/view/Socialtools/StandardRssh et le script make-rssh-chroot.sh, que j'ai mis à jour au niveau des chemins et des versions de librairies, mais sans toucher au reste (d'où des dossiers www) Voilà, ce n'est pas très propre: . |-- bin | |-- cp | |-- ls | |-- mkdir | |-- mv | |-- rm | `-- rmdir |-- dev | |-- null | `-- zero |-- etc |-- lib | |-- ld-2.3.2.so | |-- ld-linux.so.2 -> ld-2.3.2.so | |-- libc-2.3.2.so | |-- libc.so.6 -> libc-2.3.2.so | |-- libcrypt-2.3.2.so | |-- libcrypt.so.1 -> libcrypt-2.3.2.so | |-- libdl-2.3.2.so | |-- libdl.so.2 -> libdl-2.3.2.so | |-- libncurses.so.5 -> libncurses.so.5.4 | |-- libncurses.so.5.4 | |-- libnsl-2.3.2.so | |-- libnsl.so.1 -> libnsl-2.3.2.so | |-- libpthread-0.10.so | |-- libpthread.so.0 -> libpthread-0.10.so | |-- librt-2.3.2.so | |-- librt.so.1 -> librt-2.3.2.so | |-- libutil-2.3.2.so | `-- libutil.so.1 -> libutil-2.3.2.so |-- upload |-- usr | |-- bin | |-- lib | | |-- libcrypto.so -> libcrypto.so.0.9.7 | | |-- libcrypto.so.0.9.7 | | |-- libz.so -> libz.so.1 | | |-- libz.so.1 -> libz.so.1.2.2 | | `-- libz.so.1.2.2 | `-- local | |-- rssh | | |-- bin | | `-- libexec | `-- ssh | |-- bin | `-- libexec `-- var `-- www Dans les trois cas, mes arborescences sont la propriété de root:root (755), hormis les dossiers "upload" qui appartiennent à anonymous:anonymous (755). Pour tester les trois configurations, je touche à deux fichiers: - /etc/rssh.conf, qui contient user=anonymous:277:00011:$CHROOT_PATH - /etc/passwd, qui contient anonymous:x:1009:1009:Compte RSSH,,,:$CHROOT_PATH/upload:/usr/bin/rssh Tout ça m'a l'air correct. Si j'essaye de faire un scp sur ce compte, je peux observer plusieurs choses: `sshd -ddde` sort beaucoup d'information, la seule qui me semble intéressante étant que la phase d'authentification se déroule correctement, puis que la connexion est fermée à l'initiative du client. Côté scp, voilà le retour (légèrement adapté pour la cohérence avec ce qui précède): ~$ scp README [EMAIL PROTECTED]: Password: debug3: Normalising mapped IPv4 in IPv6 address debug3: Copy environment: [EMAIL PROTECTED] Environment: USER=anonymous LOGNAME=anonymous HOME=$CHROOT_PATH/upload PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin MAIL=/var/mail/anonymous SHELL=/usr/bin/rssh SSH_CLIENT=82.225.48.136 37030 22 SSH_CONNECTION=82.225.48.136 37030 10.0.0.1 22 [EMAIL PROTECTED] debug3: channel 0: close_fds r -1 w -1 e -1 c -1 lost connection Enfin, dans le syslog, je récupère: Jun 10 22:25:26 voracio rssh[8989]: setting log facility to LOG_USER Jun 10 22:25:26 voracio rssh[8989]: setting umask to 022 Jun 10 22:25:26 voracio rssh[8989]: line 45: configuring user anonymous Jun 10 22:25:26 voracio rssh[8989]: setting anonymous's umask to 0277 Jun 10 22:25:26 voracio rssh[8989]: allowing scp to user anonymous Jun 10 22:25:26 voracio rssh[8989]: allowing sftp to user anonymous Jun 10 22:25:26 voracio rssh[8989]: chrooting anonymous to $CHROOT_PATH Jun 10 22:25:26 voracio rssh[8989]: chroot cmd line: /usr/lib/rssh/rssh_chroot_helper "$CHROOT_PATH" 1 "/upload" scp -t . Une chose à noter: si j'utilise le chroot de la deuxième méthode (script fourni dans le paquet), j'obtiens en prime dans le résultat du scp un "unknown user 1009" dont je n'ai pas encore réussi à déterminer la cause. 1009 est bien l'uid de l'utilisateur anonymous. Mes questions sont les suivantes: - pourquoi est-ce que le client ferme la connexion ssh? - avez-vous des astuces pour m'aider à glaner plus d'informations sur les raisons de l'échec? Merci d'avoir lu tout ça et pour le coup de main :) -- Sylvain -- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]