見出し画像

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 ~]#

この記事が気に入ったらサポートをしてみませんか?