Applications, problèmes de configuration réseau
awesomeman
Hankyu
Messages : 15 Inscription : mar. 02 févr. 2016, 00:14
Message
par awesomeman » dim. 19 janv. 2020, 22:49
Bonjour,
Je rencontre des soucis pour créer un env chroot. j'ai parfaitement réussi sur ubuntu mais pas sur manjaro ...
Voici la page que j'ai suivi :
https://wiki.archlinux.fr/Environnement_chroot
j'ai crée un dossier bashjail et j'ai lancé le script de la page:
Code : Tout sélectionner
#> mkdir bashjail
#> ./autochroot bashjail bash /bin/bash bash ls cp mv rm cat more mkdir touch
++ mkdir -p bashjail/usr/lib
+ cp -a /usr/lib/libreadline.so.8.0 bashjail/usr/lib/libreadline.so.8
+ cp -a /usr/lib/libdl-2.30.so bashjail/usr/lib/libdl.so.2
+ cp -a /usr/lib/libc-2.30.so bashjail/usr/lib/libc.so.6
+ cp -a /usr/lib/libncursesw.so.6.1 bashjail/usr/lib/libncursesw.so.6
++ mkdir -p bashjail/usr/lib64
+ cp -a /usr/lib/ld-2.30.so bashjail/usr/lib64/ld-linux-x86-64.so.2
++ mkdir -p bashjail/usr/bin
+ cp -a /usr/bin/bash bashjail/usr/bin/bash
++ mkdir -p bashjail/bin
+ cp -a /usr/bin/bash bashjail/bin/bash
+ cp -a /usr/lib/libcap.so.2.29 bashjail/usr/lib/libcap.so.2
+ cp -a /usr/bin/ls bashjail/usr/bin/ls
+ cp -a /usr/lib/libacl.so.1.1.2253 bashjail/usr/lib/libacl.so.1
+ cp -a /usr/lib/libattr.so.1.1.2448 bashjail/usr/lib/libattr.so.1
+ cp -a /usr/bin/cp bashjail/usr/bin/cp
+ cp -a /usr/bin/mv bashjail/usr/bin/mv
+ cp -a /usr/bin/rm bashjail/usr/bin/rm
+ cp -a /usr/bin/cat bashjail/usr/bin/cat
+ cp -a /usr/bin/more bashjail/usr/bin/more
+ cp -a /usr/bin/mkdir bashjail/usr/bin/mkdir
+ cp -a /usr/bin/touch bashjail/usr/bin/touch
#> sudo chroot bashjail
chroot: failed to run command ‘/bin/bash’: No such file or directory
j'ai run les commandes sour /tmp/test
voici le tree du dossier:
Code : Tout sélectionner
/tmp/test
├── autochroot
└── bashjail
├── bin
│ └── bash
└── usr
├── bin
│ ├── bash
│ ├── cat
│ ├── cp
│ ├── ls
│ ├── mkdir
│ ├── more
│ ├── mv
│ ├── rm
│ └── touch
├── lib
│ ├── libacl.so.1
│ ├── libattr.so.1
│ ├── libcap.so.2
│ ├── libc.so.6
│ ├── libdl.so.2
│ ├── libncursesw.so.6
│ └── libreadline.so.8
└── lib64
└── ld-linux-x86-64.so.2
6 directories, 19 files
Peut-être que la page n'est plus à jour ? est ce que ça marche de votre coté ?
Merci beaucoup et bonne journée !
Dernière modification par
awesomeman le mar. 21 janv. 2020, 12:02, modifié 1 fois.
sukolyn
archer
Messages : 116 Inscription : mar. 11 juil. 2017, 09:56
Message
par sukolyn » lun. 20 janv. 2020, 17:39
salut,
deux choses (au moins) :
- il faut lib et lib64 à la racine du chroot
- il faut l'objet vers lequel pointe les liens (ld-linux... -> ld-2.30...)
or readlink, sur ld-linux... renvoie vers /usr/lib EDIT: parce que /lib64 est un lien vers /usr/lib
hmm, pas évident à démêler.
à suivre.
sukolyn
archer
Messages : 116 Inscription : mar. 11 juil. 2017, 09:56
Message
par sukolyn » lun. 20 janv. 2020, 18:47
ceci semble fonctionner (youhou! trop content!), mais ce n'est pas totalement automatiser (argh.) :
Code : Tout sélectionner
#!/bin/bash
progs=( bash ls cp mv rm cat more mkdir touch )
progsPaths=( $(which "${progs[@]}") )
mkdir myJail
ln -s /usr/lib{,64} myJail/
cp -a --parents -t myJail/ $(ldd "${progsPaths[@]}" | awk '/^\s+/{for(nf=1;nf<=NF;nf++){if($nf~"^/")print $nf}}' | sort -u)
cp -a --parents -t myJail/ $(readlink -f $(ldd "${progsPaths[@]}" | awk '/^\s+/{for(nf=1;nf<=NF;nf++){if($nf~"^/")print $nf}}' | sort -u)|sort -u)
cp -a --parents -t myJail/ "${progsPaths[@]}"
cp -a --parents -t myJail/ /usr/lib64/ld-2.30.so #ça, je n'arrive pas encore à le "déduire" des commandes précédentes
sudo chroot myJail/ /usr/bin/bash
awesomeman
Hankyu
Messages : 15 Inscription : mar. 02 févr. 2016, 00:14
Message
par awesomeman » lun. 20 janv. 2020, 20:06
Good job !
c'est cette ligne qu'il me manquait
:
Sinon j'ai une question:
pourquoi utilises tu "cp -t" ?
et pour tout le monde:
une idée de pourquoi cette commande
renvoie
au lieu de renvoyer
Du coup, voici le script final que je me suis fais, si vous avez des conseils pour l'améliorer, n'hésitez pas:
Code : Tout sélectionner
#!/bin/bash
if [[ -f /tmp/bashjail ]]
then
echo "already exists on your filesystem. will be removed..."
rm -rf /tmp/bashjail
else
mkdir -p /tmp/bashjail/etc
ln -s /usr/lib{,64} /tmp/bashjail/
fi
progs=(bash ls cp)
paths=$(ldd $(which "${progs[@]}") | awk '{print $3}' | tr " " "\n")
for path in $paths; do
cp -a --parents $path /tmp/bashjail/
cp -a --parents $(readlink -f $path) /tmp/bashjail/
done
for prog in ${progs[@]}; do
cp -a --parents $(which $prog) /tmp/bashjail/
done
cp -a --parents /usr/lib64/ld-2.30.so /tmp/bashjail/
echo "PS1='JAIL $> ' " | tee /tmp/bashjail/etc/bash.bashrc
sudo chroot /tmp/bashjail /usr/bin/bash
et encore merci à toi sukolyn pour ta solution magique
sukolyn
archer
Messages : 116 Inscription : mar. 11 juil. 2017, 09:56
Message
par sukolyn » lun. 20 janv. 2020, 20:13
je trouve ça plus clair d'indiquer la destination (--target-directory) avant une liste de "sources", qui peut être longue, voire dépasser la largeur de l'écran
il y a tellement de temps que je fais comme ça, j'ai oublié quel piège à motivé cette décision.
lemust83
yeomen
Messages : 206 Inscription : ven. 11 déc. 2015, 21:20
Message
par lemust83 » mar. 21 janv. 2020, 11:55
Bonjour.
Personnellement, je me sers de # systemd-nspawn -D <chemin_vers_partition_/>
après l'avoir montée.
Sinon, Manjaro a un paquet manjaro-chroot
qui avec l'option -a
détecte, monte et chroot automatiquement après validation du choix.
Tour: Arch (Xfce) 64 Testing: 6-Core: AMD Ryzen 5 2600X type: MT MCP speed: 2152 MHz min/max: 2200/3600 MH
UEFI: American Megatrends v: 3803 date: 01/22/2018
Graphics:
Device-1: AMD Baffin [Radeon RX 460/560D / Pro
450/455/460/555/555X/560/560X]
driver: amdgpu v: kernel
Display: server: X.Org 1.20.8 driver: amdgpu,ati unloaded: modesetting
resolution: 1920x1080~60Hz
OpenGL: renderer: Radeon RX 560 Series
Manjaro en Dual (grub).
awesomeman
Hankyu
Messages : 15 Inscription : mar. 02 févr. 2016, 00:14
Message
par awesomeman » mar. 21 janv. 2020, 12:04
Personnellement, je me sers de # systemd-nspawn -D <chemin_vers_partition_/> après l'avoir montée.
intéressant, je ne connaissais pas, merci !
Manjaro a un paquet manjaro-chroot qui avec l'option -a détecte, monte et chroot automatiquement après validation du choix.
en effet, mais je voulais le faire manuellement à des fins "pédagogique"