解决文件权限正确,但 systemd 服务仍然提示没有权限,启动失败。提示信息:service: Failed to execute command: Permission denied

现象

文件权限正确,但是通过 ·systemd· 启动时仍然报 Permission denied 错误。

文件权限:

[core@localhost ~]$ ll /usr/local/bin/
total 192512
-rwxrwxr-x. 1 core core  39813120 Jun  6 09:00 kubeadm
-rwxrwxr-x. 1 core core  44032000 Jun  6 09:00 kubectl
-rwxrwxr-x. 1 core core 113283800 Jun  6 09:00 kubelet

错误内容:

Jun 06 10:48:52 localhost systemd[1]: Started kubelet: The Kubernetes Node Agent.
Jun 06 10:48:52 localhost systemd[1]: kubelet.service: Main process exited, code=exited, status=203/EXEC
Jun 06 10:48:52 localhost systemd[1]: kubelet.service: Failed with result 'exit-code'.
Jun 06 10:49:02 localhost systemd[1]: kubelet.service: Scheduled restart job, restart counter is at 79.
Jun 06 10:49:02 localhost systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Jun 06 10:49:02 localhost systemd[13884]: kubelet.service: Failed to execute command: Permission denied
Jun 06 10:49:02 localhost systemd[13884]: kubelet.service: Failed at step EXEC spawning /usr/local/bin/kubelet: Permission denied

解决方案

这个依然是 SELinux 搞的鬼。

这是由于执行文件的 安全上下文 不正确导致的错误,我这边是因为可执行文件是先存放在用户主目录,然后移动到目标目录的。
但是将可执行文件从用户主目录移动到目标目录时它们的 SELinux 上下文不会自动变更,依然是用户主目录。所以出现了问题。

既然知道了原因,那么解决方案也有了,执行下面的命令即可解决。

sudo restorecon -rv /usr/local/bin/

其中 /usr/local/bin/ 时执行文件所在的目录,执行时需要替换成正确的目录。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值