Chroot problèmes de droits et de programmes

Bonjour,
Encore moi… :mrgreen:
Ce post fait suite à celui-ci, mais comme il est marqué résolu… Je n’ai pas de réponses… (j’ose espérer que c’est la raison…)

L’installation :
Une Lenny amd64
Un chroot Sid i386 crée comme ceci :

spider:~# mkdir /var/chroot
spider:~# mkdir /var/chroot/sid-ia32
spider:~# debootstrap --arch=i386 sid /var/chroot/sid-ia32 http://192.168.0.1:9999/ftp.fr.debian.org/debian
spider:~# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/passwd >> /var/chroot/sid-ia32/etc/passwd
spider:~# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/group >> /var/chroot/sid-ia32/etc/group[/code]

le fstab de la lenny amd64[code]
/tmp    /var/chroot/sid-ia32/tmp        none    bind    0       0
/dev    /var/chroot/sid-ia32/dev        none    bind    0       0
/proc   /var/chroot/sid-ia32/proc       none    bind    0       0
# mount -a 

J’ai des problèmes de droits sur les programmes… C’est le “binz” dans les users/groups pour les programmes installés dans le chroot !

Par exemple

spider:/var/run# ls -la
drwxr-xr-x  2 statd       mlocate     4096 oct  8 11:47 freeradius

Freeradius devrait appartenir à… freerad
Le programme ne se lance pas car il n’a pas les droits pour écrire son pid… Génant

Ce problème est en partie résolu, j’ai changé les droits à la main. Je voudrais juste comprendre mon erreur…

Le deuxième problème, est pour lancer les programmes… Je n’y arrive pas.

J’ai créé un srcipt que j’ai placé dans mon init.d et dans les différents /etc/rc adhoc

#!/bin/sh
case "$1" in
'start')
        #! /bin/sh
        ### BEGIN INIT INFO
        # Provides:          chillispot et freeradius dans le chroot
        # Required-Start:    $local_fs $network
        # Required-Stop:     $local_fs $remote_fs
        # Default-Start:     2 3 4 5
        # Default-Stop:      0 1 6
        # Short-Description: Wireless & LAN Access Point Controller
        # Description:       ChilliSpot is an open source captive portal
        #                    or wireless LAN access point controller.
        ### END INIT INFO

        chroot /var/chroot/sid-ia32
        /etc/init.d/chillispot start
        /etc/init.d/freeradius start

        exit 0
        ;;
'stop')
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

Mais ça ne marche pas… :cry:

spider:~# /etc/init.d/chroot start spider:/# exit exit /etc/init.d/chroot: 29: /etc/init.d/freeradius: not found spider:~#

J’ai essayé avec “schroot” les commandes suivantes :

schroot -c sid32 -p /etc/init.d/chillispot start schroot -c sid32 -p /etc/init.d/freeradius start

Pas de message d’erreur, retour à la ligne… Programme non lancés…

Bref je suis un peu paumé, je ne sais pas par quel bout prendre ça :confused:

[quote=“lol”][…]mais comme il est marqué résolu… Je n’ai pas de réponses… (j’ose espérer que c’est la raison…)[/quote]Ce n’était pas ça alors :mrgreen:

J’ai réussi, je ne comprend pas vraiment pourquoi… Ce qui n’est pas intellectuellement satisfaisant !

ICI ils utilisent ces paramètres :[sid32] description=Debian Sid i386 (sid32) location=/var/chroot/sid-ia32 priority=3 groups=zumsel,root root-groups=root aliases=default,unstable,ia32 personality=linux32 type=plain run-exec-scripts=true run-setup-scripts=true Marche pas…

J’ai utilisé ceux-ci :[sid32] description=Debian sid i386 (sid32) location=/var/chroot/sid-ia32 priority=3 groups=root root-groups=root aliases=unstable,default,1a32 personality=linux32 #type=plain #run-exec-scripts=true #run-setup-scripts=true Et ça fonctionne…

Je ne comprend pas… Avec “true” ça devrait fonctionner pourtant… mais non !

[quote=“man schroot.conf”]run-setup-scripts=true|false
Set whether chroot setup scripts will be run. The default is not to run setup scripts
(‘false’), for safety reasons (so it won’t clobber your passwd and other critical files).
The default for session-managed chroots (‘file’ and ‘lvm-snapshot’) is to run setup scripts.
If type is set to a value other than ‘plain’ or ‘directory’, setup scripts are required to
mount and configure the chroot environment. If enabled for a ‘plain’ or ‘directory’ chroot,
the chroot will support simple session management (not true session management, because it
does not make a copy of the chroot). If your chroots are exclusively controlled by schroot,
set to ‘true’.

   run-exec-scripts=true|false Set whether chroot
          execution   scripts  will  be  run.   The  default  is  the  same  as  the  default  for  the
          run-setup-scripts key.  This option was  called  run-session-scripts  in  versions  prior  to
          0.2.5.

[/quote]

[*] Pour les droits, j’ai eu moi-même des problèmes avec un chroot, c’était surtout des messages d’erreurs d’aptitude, qui disait que tel ou tel groupe n’existait pas. J’ai résolu le problème en copiant l’intégralité des fichiers passwd et group dans le chroot. Mais il y a sûrement une meilleure méthode.

[*] Pour le service :

chroot /var/chroot/sid-ia32 /etc/init.d/chillispot start /etc/init.d/freeradius start
ne fonctionnera pas. chillispot start ne sera lancé qu’après chroot, i.e quand tu seras sorti du chroot (implicitement, chroot /var/chroot/sid-ia32 équivaut en fait à chroot /var/chroot/sid-ia-32 /bin/bash).

La solution, c’est de lancer faire un script qui lancera les deux, et de lancer ce script avec chroot. Par exemple :

  • /var/chroot/ia32/etc/init.d/ch_fr

[code]#!/bin/sh

case “$1” in
start)
/etc/init.d/chillispot start
/etc/init.d/freeradius start
;;

stop)
/etc/init.d/freeradius stop
/etc/init.d/chillispot stop
;;
esac
[/code]

  • /etc/init.d/chroot

[code]#!/bin/sh

start)
chroot /var/sid/ia-32 “/etc/init.d/ch_fr start”

je suis pas sûr pour les guillemets

;;

stop)
chroot /var/sid/ia-32 “/etc/init.d/ch_fr stop”

un kill serait peut-être plus approprié, à voir

;;
esac
[/code]
(je te laisse améliorer la syntaxe comme il faut)

On peut peut-être mieux s’en sortir avec dchroot ou schroot, mais je ne connais pas…

[quote=“kna”][…]
(je te laisse améliorer la syntaxe comme il faut)
On peut peut-être mieux s’en sortir avec dchroot ou schroot, mais je ne connais pas…[/quote]
Cool, merci j’ai compris pourquoi ça ne fonctionnais pas avec mon script…
Avec schroot ça fonctionne bien maintenant que j’ai commenté les lignes avec run-exec et run-setup. Le “man” ne m’a pas apporté d’explication, mais bon, ça fonctionne.
Merci !

Pour les droits users/groups, j’ai déja fait ça[quote=“lol”]

spider:~# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/passwd >> /var/chroot/sid-ia32/etc/passwd
spider:~# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/group >> /var/chroot/sid-ia32/etc/group[/code]

[/quote]
Alors je ne vois pas trop ou est le problème… J’ai réglé ça coups de chown… Pas très pratique, il faut débusquer tous les fichiers à “chowner”, mais ça fonctionne aussi alors… :wink:

:smt006

J’arrive après la bagarre mais comme tu imposes les UID et les GID des utilisateurs, il faut les créer avant d’installer tes programmes; si tu mets un mysql par exemple, tu commences par créer l’utilisateur mysql PUIS tu installes mysql-server afin que les initialisations soit faites avec le bon UID. Vérifie que dans le /etc/passwd du chroot, il n’y ait pas des doublons (un utilisateur avec deux uid)…

Bonjour,

Je n’avais pas vu ton message, mon esprit est rempli de mes soucis de dhcp et redirection…
Mon cerveau n’a plus tout à fait la vivacité qu’il avait il y a 20 ans… Il ne trouve plus les solutions tout seul, le feignant !

Pour le problème de UID/GID, c’est pourtant ce je croyais avoir fait… La première chose faite après la création su chroot, c’est la copie des fichiers /etc/passwd et /etc/group.
Le problème ne se pose que pour les programmes installés après…
Je n’ai pas pris la peine de vérifier dans les fichiers comme tu le préconise maintenant.
Je vais faire ça tout de suite,

Penses-tu que je peux modifier à la main les UID/GID dans le chroot sans prendre trop de risques si je trouve des différences ?

Merci !

Oui, tu penses bien que ce genre de gags m’est arrivé. En fait les fichiers appartenant à un utilisateur précis sont localisés (par exemple: mysql -> /var/lib/mysql et /var/log/mysql) il suffit donc de changer dans ce répertoire tous les fichiers appartenant au mauvais utilisateur (souvent ceux qui n’appartiennent pas à root) en les rendant au bon.

C’est bon, j’ai vérifié.
Je n’avais de problème qu’avec freeradius et chillispot.
Les autres étaient ok…
Merci !