在 Debian 里看到 “context 报错”,通常出现在 SELinux / AppArmor / 文件安全上下文 或 编程里的 context(如 Go、Rust、Container) 场景。下面按常见情况给你排查思路。
Debian 默认 不用 SELinux,而是用 AppArmor。
SELinux context error
type=AVC ... denied
getenforce
Disabled,基本不会是 SELinux 问题restorecon -Rv /path
或
semanage fcontext -a -t httpd_sys_content_t "/path(/.*)?"
restorecon -Rv /path
apparmor="DENIED" operation="open"
aa-status
dmesg | grep apparmor
journalctl | grep apparmor
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx
sudo nano /etc/apparmor.d/usr.sbin.xxx
sudo systemctl reload apparmor
chcon: failed to change context
chcon,但系统没开 SELinux,会报错✅ 正确做法:
# 确认是否支持
ls -Z
如果没有 context 显示,说明系统不用 SELinux。
常见:
context deadline exceeded
context canceled
解决:
context.WithTimeoutctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
报错:
docker context error
解决:
docker context ls
docker context use default
你可以把 完整报错内容 发出来,我可以精准定位,例如:
cat /etc/debian_version)只要把报错原文贴出来,我可以直接告诉你怎么修。