chroot的sudo setuid错误的处理
chroot后的容器内 使用普通用户 执行sudu 会提示
sudo: /usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
在网上搜索很久,多数是让chmod 处理/usr/bin/sudo权限,但是那个方法只适合你把权限搞乱的情况下 不适合chroot。
解决方法 其实也很简单,就是rootfs目录的所有权 需要是root用户的。而不能是普通用户所有,只要是root所有再sudo chroot
#img方法
这个方法适合需要独立管理的情况 文件放到img后先挂载到目录后 重新 sudo mount -o remount,suid <patch>
sh
dd if=/dev/zero of=test.img bs=1G count=1
mkfs.ext4 test.img
mkdir /tmp/test
sudo mount -o loop test.img /tmp/test
sudo mount --bind /tmp/test /tmp/test
sudo mount -o remount,suid /tmp/test
sudo tar -xf bookworm.tar.xz -C /tmp/test/bookworm
当然不用img也是一样,目录挂载重新remount,suid也是可以。
#直接目录
另外一个常见的处理方法 就是
sh
mkdir debian12v5
tat -xvJf bookworm.tar.xz -C ./debian12v5
这时候 你直接chroot到目录里面,普通用户是无法执行sudo的。但是只要是把rootfs改为root所有 就没有这个问题了。
sh
sudo mkdir debian12v5
sudo tat -xvJf bookworm.tar.xz -C ./debian12v5