当前位置: 首页 > news >正文

处理django.db.utils.OperationalError: attempt to write a readonly database错误

打开浏览器访问learning_log登录页面,出现如下错误:

执行如下命令:
[root@baoguo learning_log]# ll db.sqlite3
-rwxrwxrwx. 1 zhang zhang 147456 Oct 2 16:11 db.sqlite3
[root@baoguo learning_log]# ll -d .
drwxrwxrwx. 12 zhang zhang 4096 Oct 2 16:11 .
显示文件和目录权限为777,任何用户有写入的权限,问题不出在这儿。

cat /var/log/httpd/error_log
[Thu Oct 02 14:31:43.373497 2025] [wsgi:error] [pid 7466:tid 7626] [client 192.168.1.44:55482]django.db.utils.OperationalError: attempt to write a readonly database,referer: http://192.168.1.101/accounts/register/
apache日志文件显示写只读数据库被拒绝

[root@baoguo accounts]# ausearch -m AVC -ts recent
<no matches>
搜索审计信息显现找不到selinux访问拒绝记录

[root@baoguo learning_log]# man semodule
EXAMPLE
# Turn on all AVC Messages for which SELinux currently is "dontaudit"ing.
$ semodule -DB
[root@baoguo learning_log]# semodule -DB
该步是关键:-DB选项打开AVC审计信息开关

[root@baoguo learning_log]# ausearch -m AVC -ts recent
type=AVC msg=audit(1759392419.488:4923): avc: denied { setattr } for pid=8104 comm="rpm" name="rpmdb.sqlite-shm" dev="dm-0" ino=67240075 scontext=system_u:system_r:setroubleshootd_t:s0 tcontext=system_u:object_r:rpm_var_lib_t:s0 tclass=file permissive=0
有AVC记录了

[root@baoguo learning_log]# ausearch -m AVC -ts recent | audit2why
type=AVC msg=audit(1759392468.280:4934): avc: denied { net_admin } for pid=7462 comm="httpd" capability=12 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:httpd_t:s0 tclass=capability permissive=0
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
从AVC记录分析拒绝原因和解决方法

[root@baoguo learning_log]# grep httpd /var/log/audit/audit.log | audit2allow -M net_admin
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i net_admin.pp
生成允许访问策略

[root@baoguo learning_log]# semodule -i net_admin.pp
安装策略模块

[root@baoguo learning_log]# cat net_admin.te
module net_admin 1.0;
require {
type user_home_t;
type httpd_t;
class capability net_admin;
class dir write;
}
#============= httpd_t ==============
allow httpd_t self:capability net_admin;
allow httpd_t user_home_t:dir write;
显示.te(type enforement)文件定义的具体规则


解决该问题的关键步骤是执行semodule -DB命令以打开AVC审计开关

我的操作系统平台是centos stream 9

http://www.jsqmd.com/news/24895/

相关文章:

  • 10.28代码大全2
  • [GESP202509 二级] 菱形
  • 11hhs
  • linux 配置vnc
  • 2025 ICPC 成都 游记
  • 基于PSO粒子群优化算法的64QAM星座图的最优概率整形matlab仿真,对比PSO优化前后整形星座图和误码率
  • 第七周第二天7.2
  • apisix流量高峰期服务卡住问题
  • 第七周第一天7.1
  • 第六周第五天6.5
  • 在vue-markdown-render中解析LaTeX公式
  • 完整教程:IP 地址管理:IPv4 和 IPv6 地址规划、子网划分与 CIDR
  • 102302107_林诗樾_数据采集与融合技术实践作业1
  • Day25-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\Threadcase-多线程讲到等待唤醒机制的一半
  • C++primer 类的静态成员
  • CSP-S NOIP 2025 备考
  • netcore vue socket.io
  • Docker安装DPanel(docker容器管理工具)
  • 2025 年最佳AI智能企业知识管理工具推荐
  • 制造业设备管理的三个坑,90% 的工厂都踩过
  • 【硬件测试】基于FPGA的8PSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
  • 移动端性能监控探索:可观测 Android 采集探针架构与实现
  • 2025年建站AI工具TOP10盘点:从ChatGPT到Lynx的智能革命
  • KPI绩效考核系统软件:让绩效管理由“难”变“易”的核心密钥
  • CompleteMaintenance点检提交反复超时,日志显示执行中断
  • ICPC Nanjing Regional (部分题题解)
  • 为何AI反诈骗防护比以往任何时候都更重要
  • 2025 年最受欢迎的 50 款免费 AI 工具,无免费增值、无付费计划或无每日信用额度限制
  • prometheus监控体系搭建
  • 分布式锁巅峰对决:Redis RedLock vs ZooKeeper临时节点——Redission看门狗如何破解续期困局 - 教程