apparmor.service - Load AppArmor profiles Loaded: loaded (/usr/lib/systemd/system/apparmor.service; enabled; preset: enabled) Active: failed (Result: exit-code) since Thu 2025-03-20 15:14:50 UTC; 31min ago Invocation: 9ec28d200f5447cb8ce368bf74e55c18 Docs: man:apparmor(7) https://gitlab.com/apparmor/apparmor/wikis/home/ Main PID: 1940 (code=exited, status=1/FAILURE) Mem peak: 37.5M CPU: 1.179s Mar 20 15:14:49 u apparmor.systemd[2011]: /sbin/apparmor_parser: Access denied. You need policy admin privileges> Mar 20 15:14:49 u apparmor.systemd[2046]: /sbin/apparmor_parser: Unable to replace "tcpdump". /sbin/apparmor_pa> Mar 20 15:14:50 u apparmor.systemd[2041]: /sbin/apparmor_parser: Unable to replace "apt_methods". /sbin/apparmo> Mar 20 15:14:50 u apparmor.systemd[2041]: /sbin/apparmor_parser: Unable to replace "ubuntu_pro_esm_cache". /sbi> Mar 20 15:14:50 u apparmor.systemd[2036]: /sbin/apparmor_parser: Unable to replace "transmission-cli". /sbin/ap> Mar 20 15:14:50 u apparmor.systemd[1940]: Error: At least one profile failed to load Mar 20 15:14:50 u systemd[1]: apparmor.service: Main process exited, code=exited, status=1/FAILURE Mar 20 15:14:50 u systemd[1]: apparmor.service: Failed with result 'exit-code'. Mar 20 15:14:50 u systemd[1]: Failed to start apparmor.service - Load AppArmor profiles. Mar 20 15:14:50 u systemd[1]: apparmor.service: Consumed 1.179s CPU time, 37.5M memory peak.
时间: 2025-03-21 18:02:53 浏览: 48
<think>好的,我现在需要解决用户提到的AppArmor服务启动失败的问题。用户提供的错误信息包括:启动时出现“Failed to start Load AppArmor profiles”,执行systemctl restart apparmor时提示服务被masked,还有/lib/apparmor/functions文件无法打开的报错。我需要结合这些引用中的信息,逐步分析可能的原因和解决方案。
首先,用户提到在启动时出现apparmor.service失败,引用4显示服务状态是exit-code,可能是因为执行脚本时出错。引用1的错误信息是/etc/init.d/apparmor第35行无法打开/lib/apparmor/functions,这可能意味着文件缺失或权限问题。而引用3提到服务被masked,这通常是systemctl mask命令的结果,导致服务无法启动。此外,引用2中的__apparmor_restart函数可能涉及权限问题,检查是否有正确的权限。
接下来,我需要整理可能的解决步骤:
1. 检查服务是否被masked:使用systemctl unmask解除屏蔽。
2. 检查相关文件和目录的权限,尤其是/lib/apparmor/functions是否存在,以及是否可读。
3. 尝试手动执行启动脚本,查看具体错误。
4. 更新或重新安装AppArmor相关包,确保文件完整性。
5. 检查是否有其他服务冲突,比如Docker的问题(如引用5提到的snap安装可能影响)。
可能还需要查看日志文件,使用journalctl -u apparmor.service来获取详细错误信息。另外,用户是否有足够的权限执行这些操作,比如使用sudo。
需要确保每一步都清晰,并给出具体的命令示例,方便用户操作。同时,注意可能的依赖关系或配置错误导致的问题。</think>### AppArmor服务启动失败的解决方案
#### 1. 检查服务是否被屏蔽(masked)
若报错`Unit apparmor.service is masked`,说明服务被手动屏蔽。执行以下命令解除屏蔽:
```bash
sudo systemctl unmask apparmor.service
sudo systemctl start apparmor
```
该操作可恢复服务状态,常见于因误操作或配置冲突导致的服务锁定[^3]。
#### 2. 验证文件完整性
报错`Can't open /lib/apparmor/functio`可能因文件缺失或权限问题。检查关键文件:
```bash
ls -l /lib/apparmor/functions # 确认文件存在
cat /lib/apparmor/rc.apparmor.functions # 检查函数定义是否完整
```
如果文件丢失,需通过重新安装AppArmor修复:
```bash
sudo apt install --reinstall apparmor
```
#### 3. 手动执行初始化脚本
通过调试模式手动运行脚本定位错误:
```bash
sudo /etc/init.d/apparmor restart --debug
```
若出现`aa_log_failure_msg`提示权限问题,检查:
- 用户是否拥有`/sys/kernel/security/apparmor/.load`写入权限
- 是否以root身份执行命令[^2]
#### 4. 检查系统日志
通过journalctl获取详细错误日志:
```bash
sudo journalctl -u apparmor.service --since "1 hour ago"
```
重点关注`ExecStart=/lib/apparmor/apparmor.systemd reload`的执行结果,可辅助定位配置文件错误或策略冲突[^4]。
#### 5. 处理策略冲突
若存在自定义AppArmor策略,尝试禁用后测试:
```bash
sudo aa-disable /etc/apparmor.d/*
sudo systemctl restart apparmor
```
逐步恢复策略文件以排查问题配置。
#### 6. 更新内核模块
部分情况下需重新加载内核模块:
```bash
sudo modprobe -r apparmor
sudo modprobe apparmor
sudo systemctl restart apparmor
```
#### 补充说明
- 对于snap安装的软件(如Docker),需检查是否与系统级AppArmor冲突[^5]
- 建议更新系统至最新版本:`sudo apt update && sudo apt upgrade`
阅读全文
相关推荐


















