Workaround for uid_map error on Ubuntu 24.04
Fri May 31 2024
# Workaround for uid_map error on Ubuntu 24.04
更新到 Ubuntu 24.04 LTS 之后,我的 tun2proxy 就不能用了,准确来说,是普通用户无法通过 unshare 模式启动,报错 Operation not permitted
tun2proxy 会调用 unshare,可以用以下命令来测试 unshare 是否可以正常工作,我在容器内外均进行了测试,结果都是 Operation not permitted
由于我的 tun2proxy 在容器里,我先检查了容器的各种权限
在对比了容器内和容器外的结果之后,我发现 Capabilities 并没有什么问题(想想也是,我的容器可是加了--privileged
参数啊),所以容器应该不是导致问题的原因
我在本地的 Fedora 40 测试了一下,以及在 Fedora Toolbox 40 里进行了测试,也都没出现 Operation not permitted 的问题,又找了个 Debian 12 的服务器和 Ubuntu 22.04 LTS 的服务器测试,也都没有问题
检查了这台服务器上的/etc/shadow
的权限和/etc/subuid
/etc/subuid
的权限和内容之后,也并未发现问题,创建新用户也不能解决问题,又发现容器内外的 root 用户都可以正常使用 unshare,于是我猜测是某些内核安全设置阻止了 unshare 调用
然后我就找到了这样一个 maillist
... I have needed this workaround to fix the error "Errno 1 Operation not permitted" when disable_network (from bitbake/lib/bb/utils.py) attempts to write to the file /proc/self/uid_map...
这里给出了原因和一个 workaround,以及 Ubuntu 的 Release Notes,至此已经破案
既然这是作为一个 Feature 发布的,那必然在之后也不会解决(唉,什么叫企业级发行版啊),那就只能关闭这个特性
或者临时关闭