Appendix chroot
環境
RockyLinux 9
手順
1. chrootするディレクトリを作る
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# mkdir /var/chroot
[root@lpic303-rocky34 ~]# mkdir -p /var/chroot/usr/lib
[root@lpic303-rocky34 ~]# mkdir -p /var/chroot/usr/lib64
[root@lpic303-rocky34 ~]# mkdir -p /var/chroot/usr/sin
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# tree /var/chroot/
/var/chroot/
`-- usr
|-- bin
|-- lib
|-- lib64
`-- sin
5 directories, 0 files
[root@lpic303-rocky34 ~]#
2. 環境をコピーする
ホストOSの環境から必要なファイルをコピーしてくるのでディスク容量としてはかさばってしまう。
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# rsync -a /usr/bin/ /var/chroot/usr/bin/
[root@lpic303-rocky34 ~]# rsync -a /usr/sbin/ /var/chroot/usr/sbin/
[root@lpic303-rocky34 ~]# rsync -a /usr/lib/ /var/chroot/usr/lib/
[root@lpic303-rocky34 ~]# rsync -a /usr/lib64/ /var/chroot/usr/lib64/
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# du -sh /var/chroot/
1.2G /var/chroot/
[root@lpic303-rocky34 ~]#
3. シンボリックリンクを設定する
RockyLinux 9 の場合は、"/bin"、"/sbin"、"/lib"、"/lib64" は "/usr/~" へのシンボリックリンクになっているので、同じようにシンボリックリンクを設定している。
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# cd /var/chroot/
[root@lpic303-rocky34 chroot]#
[root@lpic303-rocky34 chroot]# pwd
/var/chroot
[root@lpic303-rocky34 chroot]#
[root@lpic303-rocky34 chroot]# ls -l
total 0
drwxr-xr-x. 7 root root 64 Feb 9 00:04 usr
[root@lpic303-rocky34 chroot]#
[root@lpic303-rocky34 chroot]# ln -s usr/bin .
[root@lpic303-rocky34 chroot]# ln -s usr/sbin .
[root@lpic303-rocky34 chroot]# ln -s usr/lib .
[root@lpic303-rocky34 chroot]# ln -s usr/lib64 .
[root@lpic303-rocky34 chroot]#
[root@lpic303-rocky34 chroot]# ls -l
total 0
lrwxrwxrwx. 1 root root 7 Feb 9 00:11 bin -> usr/bin
lrwxrwxrwx. 1 root root 7 Feb 9 00:11 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Feb 9 00:11 lib64 -> usr/lib64
lrwxrwxrwx. 1 root root 8 Feb 9 00:11 sbin -> usr/sbin
drwxr-xr-x. 7 root root 64 Feb 9 00:04 usr
[root@lpic303-rocky34 chroot]#
4. chroot環境に切り替える
chroot [OPTION] NEWROOT [COMMAND [ARG]...]
[root@lpic303-rocky34 chroot]#
[root@lpic303-rocky34 chroot]# cd
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# chroot /var/chroot/
bash-5.1#
bash-5.1#
bash-5.1# pwd
/
bash-5.1#
bash-5.1# ls -la
total 0
drwxr-xr-x. 3 0 0 64 Feb 8 15:11 .
drwxr-xr-x. 3 0 0 64 Feb 8 15:11 ..
lrwxrwxrwx. 1 0 0 7 Feb 8 15:11 bin -> usr/bin
lrwxrwxrwx. 1 0 0 7 Feb 8 15:11 lib -> usr/lib
lrwxrwxrwx. 1 0 0 9 Feb 8 15:11 lib64 -> usr/lib64
lrwxrwxrwx. 1 0 0 8 Feb 8 15:11 sbin -> usr/sbin
drwxr-xr-x. 7 0 0 64 Feb 8 15:04 usr
bash-5.1#
bash-5.1# uname -a
Linux lpic303-rocky34 5.14.0-362.18.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jan 24 23:11:18 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
bash-5.1#
bash-5.1# date
Thu Feb 8 15:13:51 UTC 2024
bash-5.1#
bash-5.1# exit
exit
[root@lpic303-rocky34 ~]#
5. ユーザーを切り替える
ホストOSにある "rocky" というユーザーでchroot環境に切り替えてみる
★一般ユーザー "rocky" が存在している★
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# id rocky
uid=1000(rocky) gid=1000(rocky) groups=1000(rocky),10(wheel)
[root@lpic303-rocky34 ~]#
★一般ユーザー "rocky" で chroot する★
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# chroot --userspec rocky:rocky /var/chroot/
bash-5.1$
bash-5.1$ id
uid=1000 gid=1000 groups=1000
bash-5.1$
bash-5.1$ exit
exit
[root@lpic303-rocky34 ~]#
この記事が気に入ったらサポートをしてみませんか?