【linux】解决selinux 导致的 systemctl code=exited, status=203/EXEC

解决selinux 导致的 systemctl code=exited, status=203/EXEC

问题来源

postgrest 从ubuntu迁移到rokcy linux。

直接执行postgrest命令可以运行。

创建systemctl 服务,执行sudo systemctl start postgrest出现203错误。

bash 复制代码
Oct 25 09:48:37 PG01 systemd[1]: Started postgrest.service - REST API for any PostgreSQL database.
Oct 25 09:48:37 PG01 (ostgrest)[158752]: postgrest.service: Unable to locate executable '/usr/local/pgrest/postgrest': Permission denied
Oct 25 09:48:37 PG01 (ostgrest)[158752]: postgrest.service: Failed at step EXEC spawning /usr/local/pgrest/postgrest: Permission denied
Oct 25 09:48:37 PG01 systemd[1]: postgrest.service: Main process exited, code=exited, status=203/EXEC
Oct 25 09:48:37 PG01 systemd[1]: postgrest.service: Failed with result 'exit-code'.

检查postgrest可执行文件 权限组为root, 没有问题。

这种情况很有可能是selinux的问题。

解决办法一(推荐)

bash 复制代码
#恢复文件的安全上下文
restorecon -rv /usr/local/pgrest/postgrest

解决办法二

bash 复制代码
#关闭selinux
$ setenforce 0
$ sed -i '/^SELINUX=/c'SELINUX=disabled /etc/selinux/config

SELinux是什么

安全增强型 Linux(SELinux)是一种采用安全架构的 Linux® 系统,它能够让管理员更好地管控哪些人可以访问系统。它最初是作为 Linux 内核的一系列补丁,由美国国家安全局(NSA)利用 Linux 安全模块(LSM)开发而成。

SELinux工作原理

SELinux 定义了每个人对系统上的应用、进程和文件的访问控制。利用安全策略(一组告知 SELinux 哪些能访问,哪些不能访问的规则)来强制执行策略所允许的访问。

当应用或进程(称为主体)发出访问对象(如文件)的请求时,SELinux 会检查访问向量缓存(AVC),其中缓存有主体和对象的访问权限。

开启 SELinux 可以提升系统的安全性,但同时也会带来一些问题。在特定场景有的人会选择关闭 SELinux 以换取更好的兼容性。

参考文章:SELinux权限问题导致GreatSQL运行不了的坑

相关推荐
tg_xianheyun2 小时前
CDN节点分布如何影响网页加载速度和用户体验
服务器·cdn加速·全球访问优化
lsh曙光2 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫2 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
布鲁飞丝3 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567883 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
似的8353 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
HiDev_3 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
夏殇之殁4 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
龙仔7254 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪4 小时前
嵌入式Linux----网络通信
linux·运维·服务器