1、简介

1.1 Ubuntu

https://ubuntu.com/download/desktop 在这里插入图片描述 Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity。自Ubuntu 18.04 LTS起,Ubuntu发行版又重新开始使用GNOME3桌面环境。

  • Ubuntu的登陆界面: 在这里插入图片描述
  • Ubuntu的主界面: 在这里插入图片描述

1.2 CentOS

https://www.centos.org/ 在这里插入图片描述 CentOS是免费的、开源的、可以重新分发的开源操作系统 ,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一。 CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于Red Hat Enterprise Linux(RHEL)依照开放源代码(大部分是GPL开源协议)规定释出的源码所编译而成。

  • CentOS的登陆界面: 在这里插入图片描述

  • CentOS的主界面: 在这里插入图片描述

  • CentOS的主菜单: 在这里插入图片描述

1.3 两者比较

  • CentOS:

CentOS 是社区支持的企业级操作系统,于 2004 年发布。许多人将其称为红帽企业 Linux(RHEL)的副本,它也被认为是在企业中使用最广泛的。它具有高度可定制性,安全性和稳定性,这也是值得欣赏的。

  • Ubuntu:

Ubuntu 基于 Debian 架构,自 2004 年首次发布以来,Ubuntu 一直是个人和专业用户的热门人选。它是开源的,并且经常更新以删除任何已识别的错误。它拥有丰富的软件包组和功能,能够满足任何项目的要求。Ubuntu 附带了大量的应用程序。Ubuntu 软件中心拥有超过 40,000 个应用程序!此外,操作系统具有高度可定制性,并具有一流的安全功能。 在这里插入图片描述

2、ubuntu防火墙设置

在这里插入图片描述

2.1 查看防火墙状态

由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw。 ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了。在命令行运行ufw命令就可以看到提示的一系列可进行的操作。 Ubuntu20.04一般都默认安装了UFW(Uncomplicated Firewall),它是一款轻量化的工具,主要用于对输入输出的流量进行监控。 如果没有安装,请用下面的命令安装:

sudo apt install ufw

正常情况安装以后应该是默认禁止状态的,输入如下命令查看状态:

sudo ufw status verbose

在这里插入图片描述 这表示防火墙没有开启,下面启用防火墙。

sudo ufw status

在这里插入图片描述

2.2 开启和关闭防火墙

只需设置如下三条命令:

sudo apt install ufw
sudo ufw enable
sudo ufw default deny

在这里插入图片描述 sudo ufw default allow/deny:外来访问默认允许/拒绝。 sudo ufw enable/disable:打开/关闭ufw。 sudo ufw status:查看已经定义的ufw规则。 sudo ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则。

sudo ufw disable

在这里插入图片描述

2.3 打开或关闭某个端口

sudo ufw allow 53 允许外部访问53端口(tcp/udp)
sudo ufw allow 3690 允许外部访问3690端口(svn)
sudo ufw allow from 192.168.1.111 允许此IP访问所有的本机端口
sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22  允许指定的IP段访问特定端口
sudo ufw delete allow smtp 删除上面建立的某条规则,比如删除svn端口就是 sudo ufw delete allow 3690 
sudo ufw allow 40001
sudo ufw delete allow 40001

在这里插入图片描述

sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port要拒绝所有的流量从TCP的10.0.0.0/8 到端口22的地址192.168.0.1
可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

3、CentOS防火墙设置

CentOS防火墙操作:开启端口、开启、关闭、配置。

3.1 基本设置

启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld

在这里插入图片描述

3.2 firewalld-cmd配置

查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

在这里插入图片描述 在这里插入图片描述

3.3 端口设置

  • 开启防火墙端口
# –permanent永久生效,没有此参数重启后失效
firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --add-port=5000/tcp --permanent

在这里插入图片描述

  • 重启防火墙
firewall-cmd --reload

在这里插入图片描述

  • 查看开放端口号
firewall-cmd --list-all

在这里插入图片描述

4、C++实现

4.1 gcc/g++

gcc -v
g++ -v

在这里插入图片描述

gcc --version

在这里插入图片描述

4.2 C++修改防火墙设置

编写一个简单的控制防火墙开启和关闭,以及查询状态的代码如下:

  • test_firewall.c:
#include<stdlib.h>
#include<stdio.h>

int 
main(int argc, char *argv[])
{
	if(argc < 2) {
		printf("argc < 2!");
		return 0;
	}
	
	int index = atoi(argv[1]);
	if(index == 0) {
		system("systemctl status firewalld");
	}
	else if(index == 1) {
		system("systemctl start firewalld");
	}
	else if(index == 2) {
		system("systemctl stop firewalld");
	}
	
	return 0;
}

编译代码如下:

g++ test_firewall.c -o test.exe

在这里插入图片描述

4.3 Centos bash: 运行 ./xxx.sh: 权限不够

./xxx.sh
# bash: ./xxx.sh: 权限不够
chmod 777 ./xxx.sh
./xxx.sh

chmod +x ./xxx.sh

4.4 pyinstaller 打包问题 not found: libpython3.8.so.1.0

在这里插入图片描述 OSError: Python library not found: libpython3.8m.so.1.0, libpython3.8.so, libpython3.8m.so, libpython3.8.so.1.0, libpython3.8mu.so.1.0

centos中打包出现如下错误的时候,是因为缺少libpython3.8.so.1.0库,需要重新配置一些参数后编译python.

(1) 找到python源码解压后的路径

cd /root/test/Python-3.8.10

在这里插入图片描述

(2) 配置参数

./configure --prefix=/usr/local/python3 --enable-shared --with-ssl 

在这里插入图片描述

在这里插入图片描述

(3) 重新安装 python

make &make install

在这里插入图片描述

在这里插入图片描述

(4)查找库文件

find / -name libpython3.8.so.1.0

查到对应的文件如下: /root/test/Python-3.8.10/libpython3.8.so.1.0 find: ‘/run/user/1000/doc’: 权限不够 find: ‘/run/user/1000/gvfs’: 权限不够

在这里插入图片描述

(5)复制库文件到系统目录

cp /root/test/Python-3.8.10/libpython3.8.so.1.0 /usr/lib64/

(6) 重新打包

pyinstaller -F xx.py 

在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O??? 如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡) 感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!