执行apt update或sudo apt-get update报权限相关错误该如何解决?
报错信息如下:
Reading package lists... Done W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operation not permitted) E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) E: Unable to lock directory /var/lib/apt/lists/ W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied) W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
问题原因
- 报错核心为apt依赖的系统目录操作权限被限制,即使root身份也无法写入,常见触发场景如下:
- 目录被设置了immutable不可修改扩展属性:
/var/lib/apt/lists/、/var/cache/apt/被添加了i扩展属性,该属性优先级高于普通rwx权限,root用户也无法修改对应目录下的文件 - 运行环境权限受限:若在WSL、Docker容器、chroot等虚拟环境中执行命令,当前root权限被上层系统限制,无法修改映射过来的目录
- 锁文件权限异常:
/var/lib/apt/lists/lock残留且所有者、权限设置异常,root也无法读写
- 目录被设置了immutable不可修改扩展属性:
解决步骤
- 移除目录的不可修改属性
先执行命令查看目录扩展属性:lsattr /var/lib/apt/lists/ /var/cache/apt/
如果输出中对应目录行开头带有i标识,执行以下命令移除属性:
sudo chattr -i /var/lib/apt/lists/ sudo chattr -i /var/lib/apt/lists/partial sudo chattr -i /var/cache/apt/
- 清理残留锁文件
sudo rm -f /var/lib/apt/lists/lock sudo rm -f /var/cache/apt/archives/lock
- 重置目录权限为默认值
sudo chown root:root /var/lib/apt/lists/ -R sudo chmod 755 /var/lib/apt/lists/ -R sudo chown root:root /var/cache/apt/ -R sudo chmod 755 /var/cache/apt/ -R
- 受限环境适配
若运行在虚拟环境中:
- WSL环境:确认apt存储目录未挂载Windows分区,将apt缓存目录修改为Linux原生文件系统路径
- Docker容器:启动时添加
--privileged参数授予完整root权限,或在构建镜像阶段完成apt配置
操作完成后重新执行sudo apt update即可验证问题是否解决。
内容的提问来源于stack exchange,提问作者yash
相关产品推荐
相关产品推荐

