如何恢复/run目录及其内容的所属用户与用户组
如何恢复/run目录及其内容的所属用户与用户组
别慌,先跟你唠唠/run这个目录的特殊性——它是个临时文件系统(tmpfs),大部分内容其实是系统启动时自动生成的,所以先给你说几个实用的解决办法,按简单到复杂来:
优先尝试重启系统:这是最省事儿的方案!因为
/run是临时挂载的,重启之后系统会重新挂载这个目录,并自动创建所有必要的子目录、文件,同时设置好正确的所有者和权限。要是你的系统能重启,直接试这个就行,大概率能解决90%的问题。如果暂时不能重启,用systemd工具一键修复:
系统自带的systemd-tmpfiles工具可以根据预设的配置文件(存在/usr/lib/tmpfiles.d/和/etc/tmpfiles.d/里),重新调整/run下文件和目录的权限、所有者。直接运行下面的命令就行:sudo systemd-tmpfiles --create这个命令会帮你修复大部分标准目录的权限问题,比手动改高效多了。
手动修复核心目录的权限:
如果上面的命令还没搞定所有问题,你可以手动修复几个关键的子目录:- 先把
/run本身的所有者和权限改回默认:sudo chown root:root /run sudo chmod 755 /run - 修复
/run/lock目录(这个是存放锁文件的地方,权限不对会影响很多进程):sudo chown root:root /run/lock sudo chmod 755 /run/lock - 修复
/run/user目录及子目录:/run/user本身默认是root:root,权限755;里面的每个子目录比如/run/user/1000,对应着某个普通用户的专属临时目录,所有者应该是该用户自己,权限700。你可以用下面的命令自动修复这些子目录:sudo find /run/user -mindepth 1 -type d -exec bash -c 'uid=$(basename {}); user=$(id -un $uid); sudo chown -R $user:$user {}' \;
- 先把
用包管理器批量修复零散问题:
要是还有个别文件的权限不对,你可以通过系统的包管理器来批量修复:- 如果你用的是Debian/Ubuntu这类系统:
先检查哪些文件的权限或所有者出了问题:
然后用下面的命令修复:sudo dpkg --verifysudo dpkg-statoverride --update # 要是你装了debsums工具(没装的话先跑`sudo apt install debsums`),还可以这么弄: debsums --changed --perms | awk '{print $2}' | sort -u | xargs sudo apt-get install --reinstall -y - 如果你用的是RHEL/CentOS这类系统:
先检查异常文件:
然后批量修复所有者和权限:sudo rpm -Vasudo rpm -Va --nofiles --nodigest | awk '$1 ~ /U|G/ {print $2}' | sort -u | xargs sudo rpm --setugids sudo rpm -Va --nofiles --nodigest | awk '$1 ~ /M/ {print $2}' | sort -u | xargs sudo rpm --setperms
- 如果你用的是Debian/Ubuntu这类系统:
备注:内容来源于stack exchange,提问作者AeroClassics
相关产品推荐
相关产品推荐

