Linux操作系统中的安全和权限问题

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

图片[1]-Linux操作系统中的安全和权限问题-不念博客
selinux

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
© 版权声明
THE END