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>

1
2
3
4
5
6
7
8
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也是可以。

# 直接目录

另外一个常见的处理方法 就是

1
2
mkdir debian12v5
tat -xvJf  bookworm.tar.xz  -C ./debian12v5 

这时候 你直接chroot到目录里面,普通用户是无法执行sudo的。但是只要是把rootfs改为root所有 就没有这个问题了。

1
2
sudo mkdir debian12v5
sudo tat -xvJf  bookworm.tar.xz  -C ./debian12v5 

本文参考:https://www.cnblogs.com/ztguang/p/12644320.html

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计