Probléme de connexion rssh chrooté

tiens je viens de voir que je n’avais pas /usr/bin/sftp, je l’ai rajouté.

Sinon ta question n’est pas bête du tout.

/CHROOT_RSSH
|-- [drwxr-xr-x root     root            4096]  dev
|   `-- [crw-rw-rw- root     root               0]  null
|-- [drwxr-xr-x root     root            4096]  etc
|   |-- [-rw-r--r-- root     root           13288]  ld.so.cache
|   |-- [-rw-r--r-- root     root              33]  ld.so.conf
|   |-- [-rw-r--r-- root     root              53]  ld.so.hwcappkgs
|   |-- [-rw-r--r-- root     root             475]  nsswitch.conf
|   `-- [-rw-r--r-- root     root              48]  passwd
|-- [drwxr-xr-x root     root            4096]  home
|   `-- [drwxr-xr-x User1    User1           4096]  User1
|-- [drwxr-xr-x root     root            4096]  lib
|   |-- [-rw-r--r-- root     root            5820]  libcom_err.so.2
|   |-- [-rw-r--r-- root     root           26332]  libnss_compat-2.3.6.so
|   |-- [lrwxrwxrwx root     root              22]  libnss_compat.so.2 -> libnss_compat-2.3.6.so
|   |-- [-rw-r--r-- root     root           34276]  libnss_files-2.3.6.so
|   |-- [lrwxrwxrwx root     root              21]  libnss_files.so.2 -> libnss_files-2.3.6.so
|   `-- [drwxr-xr-x root     root            4096]  tls
|       `-- [drwxr-xr-x root     root            4096]  i686
|           `-- [drwxr-xr-x root     root            4096]  cmov
|               |-- [-rw-r--r-- root     root         1241392]  libc.so.6
|               |-- [-rw-r--r-- root     root           21868]  libcrypt.so.1
|               |-- [-rw-r--r-- root     root            9592]  libdl.so.2
|               |-- [-rw-r--r-- root     root           76548]  libnsl.so.1
|               |-- [-rw-r--r-- root     root           67364]  libresolv.so.2
|               `-- [-rw-r--r-- root     root            9656]  libutil.so.1
`-- [drwxr-xr-x root     root            4096]  usr
    |-- [drwxr-xr-x root     root            4096]  bin
    |   |-- [-rwxr-xr-x root     root           20100]  rssh
    |   |-- [-rwxr-xr-x root     root           43600]  scp
    |   `-- [-rwxr-xr-x root     root           70152]  sftp
    `-- [drwxr-xr-x root     root            4096]  lib
        |-- [drwxr-xr-x root     root            4096]  i686
        |   `-- [drwxr-xr-x root     root            4096]  cmov
        |       `-- [-rw-r--r-- root     root         1270520]  libcrypto.so.0.9.8
        |-- [-rw-r--r-- root     root          111708]  libgssapi_krb5.so.2
        |-- [-rw-r--r-- root     root          151252]  libk5crypto.so.3
        |-- [-rw-r--r-- root     root          508328]  libkrb5.so.3
        |-- [-rw-r--r-- root     root           14504]  libkrb5support.so.0
        |-- [-rw-r--r-- root     root           78500]  libz.so.1
        |-- [drwxr-xr-x root     root            4096]  openssh
        |   `-- [-rwxr-xr-x root     root           36280]  sftp-server
        `-- [drwxr-xr-x root     root            4096]  rssh
            `-- [-rwsr-xr-x root     root           19412]  rssh_chroot_helper

il te manque également des librairies car plus haut tu dis dans ton ldd de sftp que tu as :

=== /usr/bin/sftp === linux-gate.so.1 => (0xffffe000) libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7f66000) libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e2c000) libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7e27000) libz.so.1 => /usr/lib/libz.so.1 (0xb7e13000) libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7dfd000) libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7dcf000) libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7db3000) libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7d37000) libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7d11000) libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7d0e000) libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7d09000) libedit.so.2 => /usr/lib/libedit.so.2 (0xb7cee000) libncurses.so.5 => /lib/libncurses.so.5 (0xb7cad000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7b7c000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7b77000) /lib/ld-linux.so.2 (0xb7f80000)

Je vois par exemple que tu as :
libncurses.so.5 => /lib/libncurses.so.5 (0xb7cad000)

mais je ne vois pas de libncurses.so.5 dans ton post ci-dessus qui décrit tes répertoires …

Tu as un oeil de lynx, je vais regarder ça de plus près.

En fait quand je regarde dans “/lib” pour trouver “libncurses.so.5”, je vois que c’est un lien qui pointe sur un fichier juste en dessous qui est “libncurses.so.5.5

Mon listing des fichiers n’a sans doute pas fait attention s’il s’agisait de liens ou de fichiers.

C’est bizarre, dans mon log de controle des librairies, j’ai bien

------------------------------------------ /lib/libncurses.so.5 OK ------------------------------------------

Par contre dans le repertoire “/CHROOT_RSSH/lib” je n’ai effectivement ni libncurses.so.5, ni libncurses.so.5.5

[quote]Tu as un oeil de lynx, je vais regarder ça de plus près.

[/quote]
Ben c’est que j’essai de voir ce que tu as pu oublier, et c’est pas facile !!!

Déjà, je me pose des questions sur mon script “comparaison_chroot_rssh” qui est censé controler si les librairies listées dans le fichier “log_ldd_fin.rtf” sont bien présentes dans le répertoire “/CHROOT_RSSH”

Je ne maitrise pas du tout et j’ai dû ecrire n’importequoi.

#! /bin/bash

while read line
do
        {
        echo "$line";
        if [ -f "$line" ] ;
        then echo "OK";
        else echo "XXX";
        fi;
        echo '------------------------------------------';
        }

done < log_ldd_fin.rtf

Nan j’en suis sure maintenant. Ce script c’est n’importequoi. Ca ne fait pas ce que je voulais.

je l’ai modifié de la façon suivante :

Et j’obtiens un nouveau fichier “log_compare_rep.rtf”

=== /usr/bin/rssh ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/ld-linux.so.2
XXX
------------------------------------------
=== /usr/bin/scp ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libresolv.so.2
OK
------------------------------------------
/usr/lib/i686/cmov/libcrypto.so.0.9.8
OK
------------------------------------------
/lib/tls/i686/cmov/libutil.so.1
OK
------------------------------------------
/usr/lib/libz.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libnsl.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libcrypt.so.1
OK
------------------------------------------
/usr/lib/libgssapi_krb5.so.2
OK
------------------------------------------
/usr/lib/libkrb5.so.3
OK
------------------------------------------
/usr/lib/libk5crypto.so.3
OK
------------------------------------------
/lib/libcom_err.so.2
OK
------------------------------------------
/usr/lib/libkrb5support.so.0
OK
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/tls/i686/cmov/libdl.so.2
OK
------------------------------------------
/lib/ld-linux.so.2
XXX
------------------------------------------
=== /usr/bin/sftp ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libresolv.so.2
OK
------------------------------------------
/usr/lib/i686/cmov/libcrypto.so.0.9.8
OK
------------------------------------------
/lib/tls/i686/cmov/libutil.so.1
OK
------------------------------------------
/usr/lib/libz.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libnsl.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libcrypt.so.1
OK
------------------------------------------
/usr/lib/libgssapi_krb5.so.2
OK
------------------------------------------
/usr/lib/libkrb5.so.3
OK
------------------------------------------
/usr/lib/libk5crypto.so.3
OK
------------------------------------------
/lib/libcom_err.so.2
OK
------------------------------------------
/usr/lib/libkrb5support.so.0
OK
------------------------------------------
/usr/lib/libedit.so.2
XXX
------------------------------------------
/lib/libncurses.so.5
XXX
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/tls/i686/cmov/libdl.so.2
OK
------------------------------------------
/lib/ld-linux.so.2
XXX
------------------------------------------
=== /usr/lib/openssh/sftp-server ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libresolv.so.2
OK
------------------------------------------
/usr/lib/i686/cmov/libcrypto.so.0.9.8
OK
------------------------------------------
/lib/tls/i686/cmov/libutil.so.1
OK
------------------------------------------
/usr/lib/libz.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libnsl.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libcrypt.so.1
OK
------------------------------------------
/usr/lib/libgssapi_krb5.so.2
OK
------------------------------------------
/usr/lib/libkrb5.so.3
OK
------------------------------------------
/usr/lib/libk5crypto.so.3
OK
------------------------------------------
/lib/libcom_err.so.2
OK
------------------------------------------
/usr/lib/libkrb5support.so.0
OK
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/tls/i686/cmov/libdl.so.2
OK
------------------------------------------
/lib/ld-linux.so.2
XXX
------------------------------------------
=== /usr/lib/rssh/rssh_chroot_helper ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/ld-linux.so.2
XXX
------------------------------------------

Il me manque donc les librairies suivantes :

/lib/ld-linux.so.2
/usr/lib/libedit.so.2
/lib/libncurses.so.5

Comment est-ce possible ?
Le script fourni dans “/usr/share/doc/rssh/examples/mkchroot.sh” ne serait pas bon ?
Je l’avais pourtant modifié

J’ai dû oublier de modifier une ligne !? mais je ne vois pas laquelle…
Quoi qu’il en soit, crois tu qu’il me suffit de rajouter les 3 librairies manquantes à la main ?

Par contre il y a une question que je me pose.

Quand tu créer ton “user”, tu déclare bien son “/repertoire_chrooté/home/user” dans le repertoire chrooté !?

Ensuite tu copie le fichier “/etc/passwd” dans “/repertoire_chrooté/etc/passwd” ?

Ensuite tu edite ce fichier “/repertoire_chrooté/etc/passwd” pour enlever le “/repertoire_chrooté” pour ne laisser que “/home/user” ?


Sinon maintenant que j’ai rajouté à la main les 3 fichiers, les choses évoluent.

CA MAAAARRRRCCCHHE !!!

Merde, il se connecte mais il n’est pas chrooté comme je voudrais.

Il peut remonter jusqu’à /CHROOT_RSSH (ce qui est normal puisque c’est ce qui a été déclaré) mais il voit tout :
/dev
/etc
/home
/lib
/usr

je préfèrerait qu’il reste dans son “/home/~”

Je me demande si ça marche si je met “/CHROOT_RSSH/home/~” dans les fichiers de conf.

zut, ça marche pas.

Il faut copier tout le “/CHROOT_RSSH/…” dans le “/home/~” de l’utilisateur qu’on veut cantoner dans son repertoire individuel.

Y aurait une solution pour simplifier cette réplication.
Ca serait de faire un “tar” de “/CHROOT_RSSH” et de le déployer par un script dans le repertoire de chaque nouvel utilisateur au moment de la création mais bon …

Si vous avez une astuce pour éviter de recopier tout à chaque creation de compte je suis preneur.

J’ai peur que si je jongle avec les ACL (rwx) pour cantoner l’utilisateur dans son “/home/~” il ne puisse plus se connecter du tout.

Voici ce que j’ai pour l’utilisateur chrooté :

Mon répertoire Chroot racine est /donnees sur ma machine.

dans /etc/passwd :

monuser:x:1007:1006:Info user,,,:/donnees/partage:/usr/bin/rssh

le répertoire /donnees/partage correspondant au répertoire de partage des utilisateurs sftp, c’est donc le répertoire par défaut dans lequel ils sont dirigés lors de leur connexion.

dans /donnees/etc/passwd :

monuser:x:1007:1006::/partage:/usr/bin/rssh

c’est normal que ton user voit les répertoire system de son chroot.

Mais quoi il fasse, il ne peut pas remonter vers le / de ta machine.

ce que tu peux faire c’est mettre le répertoire racine Chroot en droit x pour ton user sftp. De cette façon si il redescend jusqu’a son “/”, c’est à dire le répertoire chrooté, il ne peux pas lire ce qui est dedans.
Le but de mettre les droits “x” permet aux users de pouvoir passer dans le répertoire, mais si il s’arréte il n’a pas le droit de regarder ce qui est dedans. Et du coup, il ne voit pas les répertoire system du chroot.

oui, sauf que les utilisateurs peuvent se balader partout, meme dans les repertoires des autres users.

Et puis un petit malin comprendra vite où il se trouve.

Ca va etre lourd à gérer toutes les ACL.

J’ai fais un “tar” de “/CHROOT_RSSH/” que j’ai décompressé dans “/etc/skel_rssh” (le “skel/” que j’ai paramétré dans mon “adduser.conf”).
Seulement ça bloque à cause du “/dev/null” et la commande “adduser” est annulé.

hobbit:/# adduser toto2
Ajout de l'utilisateur « toto2 »...
Ajout du nouveau groupe « toto2 » (1002)...
Ajout du nouvel utilisateur « toto2 » (1001) avec le groupe « toto2 »...
Création du répertoire personnel « /CHROOT_RSSH/home/toto2 »...
Copie des fichiers depuis « /etc/skel_rssh »...
Interrompu : Impossible de traiter /etc/skel_rssh/./CHROOT_RSSH/dev/null.
Ce n'est ni un répertoire, ni un fichier, ni un lien symbolique.

Suppression du répertoire « /CHROOT_RSSH/home/toto2 »...
Suppression de l'utilisateur « toto2 »...
Suppression du groupe « toto2 »...
groupdel : le groupe toto2 n'existe pas
adduser : « groupdel toto2 » a renvoyé le code d'erreur 6.
Abandon.

Au pire il reste makejail :
http://packages.debian.org/fr/sarge/admin/makejail

J’ai l’impression que ça serait plus simple de faire du FTPS et de chrooter par Proftpd.

Sinon y en a qui ont trouvé encore plus simple pour le sftp
http://www.pcinpact.com/forum/index.php?s=a4dce8fa3f7751e2924ef095e9f4717c&showtopic=122314

Plus une réponse interressante dans celui-ci :
http://lea-linux.org/pho/read/5/330209/330231

Une autre bonne adresse :
http://www.trustonme.net/didactels/318.html

Quoique c’est pas mal ton astuce de permissions x

Je me suis mis dans “/CHROOT_RSSH/” et j’ai fait un

Ca chroot bien le user dans son home avec un client Filezilla, et un User pas trop bidouilleur :smiley:

Il reste un gros risque si le user est plus débrouillard et navigue dans les répertoires en ligne de commande …

A la rigueur on peut faire un petit réglage dans “/etc/adduser.conf” et mettre

Comme ça même si un utilisateur recupère le fichier “/CHROOT_RSSH/etc/passwd” ou s’il fait un “ls” il ne devrait pas pouvoir aller dans les repertoires de ses voisins (créé après la modif du adduser.conf)

Arf … après test, je peux me promener avec User1 dans le repertoire de User2 en ligne de commande.

Je vais essayer de chmoder en 700.

Tiens ! un autre truc etrange.
J’ai supprimé le fichier “/CHROOT_RSSH/etc/passwd” et je peux me connecter avec User1 !

effectivement étrange ton truc.

Moi mon /REP_CHROOT/etc/passwd j’ai mis un chmod 600

c’est le system qui le lit, l’utilisateur n’a pas besoin de droits dessus.