Linux操作系统安全性非常高,但是新手在使用过程中经常遇到各种权限问题,此时总会怀念Windows。
今天不念在本地虚拟机上模拟网站迁移时又遇到了一个头疼的问题,一切准备就绪之后,访问网站,可是却得到了下面的提示信息:
You don’t have permission to access this resource.
在排除了防火墙firewalld、网站目录权限等问题之后,终于将罪魁祸首锁定在了SELinux!
现在的云主机提供商大多提供了防火墙功能以保护你的主机,通过web界面可以轻松开启和关闭端口,因此可以放心的关闭Linux上的防火墙和SELinux。
测试环境:AlmaLinux 8.5、MySQL8.0.30、Apache 2.4.37、PHP 7.4.19
SELinux
安全增强型Linux(SELinux)是一个Linux内核的功能,它是由美国国家安全局开发的,提供支持访问控制的安全政策保护机制。一般情况下,开启SELinux会提高系统的安全性,但是会破坏操作系统的文件,造成系统无法启动的问题。
SELinux的运行状态有三种:
- enforcing:强制模式,表示所有违反安全策略的行为都将被禁止。
- permissive:宽容模式:表示所有违反安全策略的行为不被禁止,但是会在日志中作记录。
- disabled:关闭,SELinux 没有实际运行。
查看SELinux的当前状态
[root@bunian ~]# getenforce
Enforcing
关闭SELinux
修改SELinux的config文件[/etc/selinux/config],改为 SELINUX=disabled
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
值得注意的是:阿里云帮助文档中说:对于ECS还需要进行如下操作,否则直接重启实例将会出现系统无法启动的错误。
在根目录下新建隐藏文件autorelabel,实例重启后,SELinux会自动重新标记所有系统文件。touch /.autorelabel
touch /.autorelabel
但是我在本地虚拟机中运行的AlmaLinux 8.5中直接重启系统没有问题。
重启Linux
最后重启计算机,然后检查一下SELinux是否正确的关闭了。
// 重启计算机
reboot
// 或者
shutdown -r now
此外建议同时关闭防火墙
systemctl disable firewalld --now
转载请注明:IT运维空间 » linux » Linux操作系统中的安全和权限问题
发表评论