你这个问题里的 “Debian context” 有点模糊,需要结合具体场景来判断。下面我按最常见的几种含义分别说明,你可以对照看看你指的是哪一种,或者补充更多上下文,我再精准帮你。
Debian 默认 不使用 SELinux,而是使用 AppArmor。
sestatus
如果提示 command not found 或 disabled,说明 Debian 没用 SELinux。
查看 AppArmor 状态:
sudo aa-status
查看某个进程的 context(近似概念):
ps auxZ
调试 AppArmor 日志:
sudo dmesg | grep apparmor
sudo journalctl -k | grep apparmor
比如调试 systemd service 的环境变量、用户、目录等。
systemctl show your-service-name
重点关注:
User=WorkingDirectory=Environment=sudo systemctl status your-service-name
sudo journalctl -u your-service-name -xe
sudo systemd-run --pty --uid=用户名 --service-type=oneshot bash
比如 debuild / dpkg-buildpackage 失败。
dpkg-buildflags
debuild -us -uc
或
dpkg-buildpackage -us -uc -b
查看失败日志:
less ../*.build
sudo chroot /path/to/rootfs
检查:
ls /proc /sys /dev
docker run -it debian bash
查看系统信息:
cat /etc/os-release
uname -a
locale
sudo dpkg-reconfigure locales
查看上下文切换次数:
vmstat 1
或:
pidstat -w 1
为了给你精确答案,你可以补充一句类似:
我在 Debian 上调试 systemd 服务 / SELinux / AppArmor / 容器 / 编译 / 程序运行环境,遇到的问题是 XXX
这样我可以直接给你一步一步的调试命令和解决方案。
如果你愿意,也可以直接把报错信息贴出来,我可以帮你逐行分析。