linux系统polkit无法启动
linux系统polkit无法启动
·
polkit 是linux系统中的一个身份认证管理工具 (Authorization Manager ),在启动一些服务时,有可能会遇到 polkit 不能正常启动运行的情况,会报出以下之类错误:
此时发现polkit并没有处于正常的激活状态,由此可能会导致其他一些服务也不能正常启动。

#查看 polkit 状态
systemctl status polkit
#启动 polkit
systemctl start polkit
#检查是否安装了 polkit
yum list installed | grep polkit
#安装 polkit
yum install polkit
#查看报错信息
journalctl -xe
1. 加载共享库时出错
1.1 错误表现
- 查看polkit的运行状态发现是failed,且报错是
加载共享库时出错:libstdc++.so.6:无法从共享对象映射段:权限被拒绝

1.2 解决办法
1.2.1 查看 libstdc++.so.6 库
find / -name libstdc++.so.6
ll -n /usr/lib64/libstdc++.so.6

1.2.2 如果没有安装 libstdc++.so.6 库
- 查看哪个安装包有这个库文件
yum whatprovides libstdc++.so.6

- 安装库
yum -y install libstdc++-4.8.5-44.el7.i686

- 新安装的
libstdc++.so.6库路径是/usr/lib/libstdc++.so.6

注:libstdc++.so.6 库有一个就可以
1.2.3 切换 libstdc++.so.6 链接库
# 进入lib64库
cd /usr/lib64/
# 查看libstdc++.so.6 链接库
ll
本次报的
加载共享库时出错:libstdc++.so.6:无法从共享对象映射段:权限被拒绝错误是因为libstdc++.so.6.0.25库有问题,这个库不知道是怎么多出来的,切换回libstdc++.so.6.0.19就可以

- 修改软连接
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.19 libstdc++.so.6
ll -n libstdc++.so.6

1.2.4 启动 polkit
1.2.4.1 运气好的话可能直接就成功了
systemctl start polkit.service
systemctl status polkit.service

1.2.4.2 但也有可能完全没用,此时先尝试手动重启
/usr/lib/polkit-1/polkitd --no-debug &
systemctl start polkit
启动命令是可以执行的,不会再报原来的错,但其实只有手动重启的那一下成功了,程序并不会持续运行,查看运行状态的话发现不再是
failed,变成了inactive (dead)

- 此时需要先启动
dbus服务,保证正常运行
systemctl restart dbus.service
systemctl status dbus

- 然后再尝试启动polkit,应该就可以正常运行了
systemctl start polkit.service

此时再尝试启动其他受影响的服务就可以了。
2. 重装polkit再启动
yum reinstall polkit
systemctl start polkit.service

3. 解决办法
- 确保存在polkitd系统用户和组
#检查并有条件的创建用户/组
getent group polkitd >/dev/null && echo -e "\e[1;32mpolkitd group already exists\e[0m" || { groupadd -r polkitd && echo -e "\e[1;33mAdded missing polkitd group\e[0m" || echo -e "\e[1;31mAdding polkitd group FAILED\e[0m"; }
getent passwd polkitd >/dev/null && echo -e "\e[1;32mpolkitd user already exists\e[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "User for polkitd" polkitd && echo -e "\e[1;33mAdded missing polkitd user\e[0m" || echo -e "\e[1;31mAdding polkitd user FAILED\e[0m"; }

#检查并有条件的重置用户/组和所有权
rpm -Va polkit\* && echo -e "\e[1;32mpolkit* rpm verification passed\e[0m" || { echo -e "\e[1;33mResetting polkit* rpm user/group ownership & perms\e[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }

#重启机器,并确保polkit已重新连接到dbus
/usr/lib/polkit-1/polkitd --no-debug &
reboot
- 重启之后,发现还是存在问题,去卸载polkit包
查看polkit安装版本
yum list installed | grep polkit
rpm -ef polkit.x86_64 --nodeps

- 卸载掉包之后重装polkit包,重新加载服务
yum -y install polkit
systemctl daemon-reload
#如果正常的话说明问题解决了
#如果还是报错,就尝试将polkit包卸载不重装,然后在重新加载服务试试**
更多推荐
所有评论(0)