alias命令

基本概念

alias命令用于为其他命令或命令串定义一个别名,相当于给命令起一个"昵称"。定义别名后,输入别名就相当于输入了对应的命令。

查看已定义的别名

直接输入alias命令(无参数)可以列出当前shell中所有已定义的别名:

alias

定义/设置别名

语法格式为 alias 别名='命令',等号左右不能有空格。如果要定义的命令中包含空格,需要用单引号或双引号括起来。

alias ll='ls -alF'
alias la='ls -A'
alias grep='grep --color=auto'
alias rm='rm -i'

示例

定义完成后直接输入别名即可执行对应的命令。常用于将复杂命令或常用选项简化为简短名称,提高操作效率。

  • ll → 执行 ls -alF(以长格式列出所有文件)
  • la → 执行 ls -A(列出除.和..外的所有文件)
  • rm → 执行 rm -i(删除前询问确认)

取消别名

使用unalias命令可以取消已定义的别名:

unalias ll

使用unalias -a可以取消所有别名。

注意事项

  • alias只在当前shell会话有效,关闭终端后失效。
  • 若想永久保留,需要将alias定义写入~/.bashrc~/.bash_profile中。
  • 在同一shell内,如果一个命令既有别名又是函数或外部命令,alias的优先级最高。

用户账户与组管理

基本概念

Linux是一个多用户、多任务的操作系统,每个用户都有一个唯一的账户。账户管理是Linux系统管理的基础,涉及创建、修改和删除用户,以及管理用户所属的组。

系统中每个用户都有:

  • UID(User ID):用户唯一标识,root用户的UID固定为0
  • GID(Group ID):用户所属主组的组标识
  • 家目录:用户登录后的默认工作目录(如/home/username
  • 登录Shell:用户登录后使用的默认Shell(如/bin/bash

相关配置文件

Linux系统中用户和组信息存储在几个关键的配置文件中。

/etc/passwd

该文件记录系统中所有用户的基本信息,每行代表一个用户,格式如下:

username:x:UID:GID:comment:home_directory:shell

各字段含义依次为:用户名:密码占位符:UID:GID:用户描述:家目录:登录Shell。密码占位符x表示实际密码已加密存储在/etc/shadow中。

/etc/shadow

存储用户的加密密码及密码有效期等安全信息,只有root用户可以读取。每行格式:

username:$encrypted_password$:last_change:min:max:warn:inactive:expire:reserved

其中加密密码前的!*表示该账户已被锁定。

/etc/group

记录系统中的组信息,每行格式:

group_name:x:GID:member_list

最后一个字段列出属于该组的用户(不含将本组作为主组的用户)。

用户账户管理

创建用户 - useradd

使用useradd命令创建新用户,基本语法:

useradd [选项] 用户名

常用选项:

  • -m:自动创建用户的家目录
  • -d 目录:指定家目录路径
  • -s shell:指定登录Shell(如/bin/bash/sbin/nologin
  • -g 组名:指定主组
  • -G 组1,组2:指定附加组(多个组用逗号分隔)
  • -c "描述":添加用户描述信息
  • -u UID:手动指定用户UID

示例:

# 创建普通用户(自动创建家目录)
useradd -m -s /bin/bash zhangsan
创建系统用户(不创建家目录,不允许登录)
useradd -r -s /sbin/nologin appuser
创建同时属于多个附加组的用户
useradd -m -G sudo,docker newdev

设置密码 - passwd

注意 :!!表示密码尚未设置

使用passwd命令为用户设置或修改密码:

# root用户为其他用户设置密码
passwd zhangsan
普通用户修改自己的密码
passwd

常用选项:

  • -d:删除用户密码(该用户可以无密码登录)
  • -l:锁定用户账户,禁止登录
  • -u:解锁用户账户
  • -e:强制用户在下次登录时修改密码

修改用户信息 - usermod

使用usermod修改已存在的用户属性,语法:

usermod [选项] 用户名

常用选项:

  • -l 新用户名:修改用户名
  • -d 新目录 -m:修改家目录(-m表示移动原有文件)
  • -s 新shell:修改登录Shell
  • -a -G 组名:将用户追加到附加组(-a必不可少,否则会替换原附加组)
  • -L:锁定用户
  • -U:解锁用户

示例:

# 将用户追加到docker组
usermod -a -G docker zhangsan
修改用户的登录Shell
usermod -s /bin/zsh zhangsan

删除用户 - userdel

使用userdel删除用户账户:

# 删除用户(保留家目录)
userdel zhangsan
删除用户及家目录和邮件
userdel -r zhangsan

注意:-r选项会同时删除用户的家目录及邮件文件,请谨慎使用。

组管理

组可以将多个用户归为一类,方便统一设置文件权限和资源访问。

创建组 - groupadd

groupadd 组名

常用选项:

  • -g GID:手动指定组ID
  • -r:创建系统组

修改组 - groupmod

# 修改组名
groupmod -n 新组名 旧组名
修改GID
groupmod -g 新GID 组名

删除组 - groupdel

groupdel 组名

注意:如果该组是某个用户的主组,无法直接删除,需要先修改该用户的主组归属。

组密码与切换 - gpasswd / newgrp

gpasswd用于设置组管理员和组成员:

# 将用户加入组
gpasswd -a zhangsan developers
将用户从组中移除
gpasswd -d zhangsan developers
设置管理员可以管理组成员
gpasswd -A zhangsan developers

newgrp临时切换当前用户的有效组:

newgrp developers

用户信息查看命令

命令 功能说明
whoami 显示当前登录用户名
id 显示当前用户的UID、GID及所属组
groups 查看指定用户所属的所有组
who 查看当前系统所有的登录会话
w 查看当前登录用户及其活动
last 查看用户最近登录记录
finger 查看用户的详细信息

实用技巧

  • 批量创建用户:可通过newusers命令从格式化的文件批量导入用户。
  • 密码锁定与解锁:使用passwd -l锁定账户比usermod -L更可靠,前者会在/etc/shadow密码前添加!!
  • 禁止进程用户登录:对仅用于运行服务的用户,设置Shell为/sbin/nologin/bin/false
  • 使用sudo权限管理:不要直接赋予用户root密码;建议将用户加入wheelsudo组,通过/etc/sudoersvisudo精细配置执行权限。

Linux 文件系统权限

基本概念

Linux 是一个多用户操作系统,文件权限机制用于控制不同用户对文件和目录的访问。每个文件和目录都有三类权限主体:

  • 所有者(Owner):文件的创建者,通常是文件的主人。
  • 所属组(Group):文件所属的用户组,组内成员共享该文件的组权限。
  • 其他人(Others):既不是所有者也不属于文件所在组的其他所有用户。

每类主体都可以独立设置三种基本权限:

  • 读(r,Read):可以查看文件内容或列出目录内容。
  • 写(w,Write):可以修改文件内容或在目录中创建、删除、重命名文件。
  • 执行(x,Execute):可以执行该文件(如果是程序或脚本),或进入目录(cd)并访问目录内的文件。

权限对文件和目录的含义稍有不同:

权限 作用于文件 作用于目录
r 读取文件内容(cat、less) 列出目录内容(ls)
w 修改文件内容 在目录内创建、删除、重命名文件
x 执行文件(作为程序) 进入目录(cd)并访问其中文件

查看文件权限

使用 ls -l 命令可以查看文件的详细权限信息:

ls -l filename

输出示例:

-rwxr-xr-- 1 alice developers 4096 Dec 25 10:00 script.sh

输出字段从左到右依次为:

  • 第一个字符表示文件类型:- 普通文件,d 目录,l 符号链接等。
  • 接下来 9 个字符分为三组,每组三个(rwx),分别代表所有者、所属组、其他人的权限。若某位置为 - 则表示没有对应权限。
    如上例:rwx(所有者可读可写可执行),r-x(所属组可读可执行,不可写),r--(其他人只读)。
  • 数字:硬链接数。
  • 用户名:文件所有者(alice)。
  • 组名:文件所属组(developers)。
  • 文件大小、修改时间和文件名。

权限的数字表示法

每种权限都可以用一个数字表示,便于在命令中快速设置:

  • r(读) = 4
  • w(写) = 2
  • x(执行) = 1

每类主体的权限值即为其 r、w、x 数值之和。例如:

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • r-- = 4 + 0 + 0 = 4

组合三位数依次对应所有者、所属组、其他人。例如 755 表示:所有者 rwx(7),所属组 r-x(5),其他人 r-x(5)。

修改权限 - chmod

chmod(change mode)命令用于修改文件或目录的权限。支持两种使用方式:符号模式和数字模式。

符号模式

chmod [ugoa][+-=][rwx] 文件名
  • u:所有者(user)
  • g:所属组(group)
  • o:其他人(others)
  • a:所有人(all,即 ugo)
  • +:增加权限
  • -:移除权限
  • =:设置为精确权限

示例:

# 给文件所有者增加执行权限
chmod u+x script.sh
移除其他人的写权限
chmod o-w file.txt
将所属组权限设置为只读
chmod g=r file.txt
给所有人增加读权限
chmod a+r file.txt

数字模式

chmod 权限数字 文件名

示例:

# 设置为 rwxr-xr-x(755)
chmod 755 script.sh
设置为 rw-r--r--(644)
chmod 644 document.txt
设置为 rw-------(600,只有所有者可读写)
chmod 600 secret.key

常用递归修改目录下所有文件的权限:

chmod -R 755 /path/to/directory

修改所有者和所属组 - chown / chgrp

chown - 修改所有者(和组)

基本语法:

chown [用户][:组] 文件名

示例:

# 将文件所有者改为 bob
chown bob file.txt
将文件所有者改为 bob,所属组改为 dev
chown bob:dev file.txt
只修改所属组(不改变所有者)
chown :dev file.txt
递归修改目录下所有文件
chown -R bob:dev /home/project/

chgrp - 单独修改所属组

chgrp 组名 文件名

示例:

chgrp developers file.txt

特殊权限

除了基本的 rwx 权限,Linux 还提供三种特殊权限,常用于可执行文件和共享目录。

SUID(Set User ID)

当可执行文件设置 SUID 后,任何用户执行该文件时,都将以文件所有者的身份运行,而非执行者自身。表示为所有者执行位上的 s 替代 x(如 rws------)。

chmod u+s /usr/bin/passwd

数字表示:4 + 权限数字(如 4755)。

SGID(Set Group ID)

作用于可执行文件时,用户执行该文件将以文件所属组的身份运行。作用于目录时,在该目录下创建的新文件将自动继承目录的所属组,而非创建者的主组。表示为组执行位上的 s

# 设置 SGID 位
chmod g+s /shared/project/
# 数字模式:2 + 权限(如 2755)
chmod 2755 /shared/project/

Sticky Bit(粘滞位)

仅对目录有效。设置粘滞位的目录中,用户只能删除自己拥有的文件,而不能删除其他用户的文件。常用于 /tmp 目录。表示为其他人执行位上的 t(若原无执行权限则为 T)。

chmod +t /tmp
# 数字模式:1 + 权限(如 1777)
chmod 1777 /shared/tmp/

默认权限掩码 - umask

umask 用于设置新建文件或目录的默认权限。它是权限的“屏蔽码”,即从最大默认权限中减去 umask 值,得到最终权限。

通常是:文件最大权限 666(rw-rw-rw-),目录最大权限 777(rwxrwxrwx)。默认 umask 多为 022,计算新文件权限:666 - 022 = 644(rw-r--r--),目录权限:777 - 022 = 755(rwxr-xr-x)。

查看当前 umask:

umask

临时修改:

umask 027

永久修改可写入 ~/.bashrc/etc/profile

ACL 访问控制列表

传统的 rwx 权限模型只能为所有者、所属组和其他人三类主体设置权限,无法针对特定用户或特定组单独授权。ACL(Access Control List,访问控制列表)提供了更细粒度的权限控制,可以为文件或目录指定任意用户、任意组的独立权限。

ACL 的前提条件

使用 ACL 需要文件系统支持并开启 acl 挂载选项。大多数现代 Linux 发行版(ext4、xfs)默认已启用。可通过以下方式确认:

# 查看挂载选项(查找 acl)
mount | grep " / "
# 或者检查根分区的挂载信息
tune2fs -l /dev/sda1 | grep "Default mount options"

查看 ACL - getfacl

使用 getfacl 命令查看文件或目录的 ACL 信息:

getfacl filename

输出示例:

# file: report.txt
# owner: alice
# group: developers
user::rw-
user:bob:r--
group::r--
group:audit:rw-
mask::rw-
other::r--

各字段含义:

  • user:: :文件所有者的权限(对应传统 rwx 的所有者位)
  • user:用户名: :指定用户的权限(ACL 扩展项)
  • group:: :文件所属组的权限(对应传统 rwx 的组位)
  • group:组名: :指定组的权限(ACL 扩展项)
  • mask:: :有效权限掩码,限制除所有者外的所有用户和组的最大权限
  • other:: :其他人的权限(对应传统 rwx 的其他人位)

带有 ACL 的文件在 ls -l 输出中会在权限末尾显示 + 号:

-rw-rwxr--+ 1 alice developers 2048 Jan 15 report.txt

设置 ACL - setfacl

使用 setfacl 命令设置或修改 ACL 权限:

setfacl [选项] 规则 文件名

常用选项:

  • -m :添加或修改 ACL 规则(modify)
  • -x :删除指定的 ACL 规则
  • -b :删除所有 ACL 规则(恢复到纯传统权限)
  • -R :递归应用
  • -d :设置默认 ACL(仅对目录有效)

规则语法:

  • u:用户名:权限 :给指定用户设置权限
  • g:组名:权限 :给指定组设置权限
  • m::权限 :设置掩码

示例:

# 给用户 bob 添加读写权限
setfacl -m u:bob:rw report.txt
# 给 audit 组添加只读权限
setfacl -m g:audit:r report.txt
# 同时设置多个 ACL 项
setfacl -m u:bob:rw,g:audit:r report.txt
# 删除用户 bob 的 ACL 权限
setfacl -x u:bob report.txt
# 删除文件的所有 ACL 规则
setfacl -b report.txt

默认 ACL 与权限继承

传统权限中,目录下新建文件的权限由 umask 决定。使用默认 ACL可以让目录内的新文件和子目录自动继承指定的 ACL 规则:

# 设置默认 ACL,使目录下新建文件自动赋予 bob 读写权限
setfacl -m d:u:bob:rw /shared/docs/
# 设置默认 ACL,使目录下的新文件自动赋予 audit 组读权限
setfacl -m d:g:audit:r /shared/docs/
# 递归设置目录及其现有内容的权限
setfacl -R -m u:bob:rw /shared/docs/

注意事项:默认 ACL 仅影响之后创建的文件和子目录,不会修改已存在的内容。对已存在的内容需要配合 -R 递归设置。

ACL 的 mask 机制

mask 是 ACL 中一个重要的安全机制,它限制了除文件所有者外所有命名用户、命名组和所属组的最大权限。即使 ACL 给某个用户设置了 rwx,如果 mask 为 r--,实际生效的也只有 r--

查看有效权限:

getfacl report.txt
# 输出中会显示 #effective:r-- 表示权限被 mask 限制

修改 mask:

setfacl -m m::rx report.txt

ACL 使用场景

  • 一个项目目录需要同时授权开发组可读写审计组只读,其他用户无权限。
  • 某个配置文件只允许特定的运维用户修改,而不是整个 wheel 组。
  • 共享目录中新建文件自动继承固定权限,而无需每次手动 chmod。

实用示例与注意事项

  • 为脚本添加执行权限:chmod +x backup.sh
  • 保护敏感配置文件:chmod 600 ~/.ssh/id_rsa
  • 确保 Web 目录可读可进入:chmod 755 /var/www/html
  • 使用 -R 递归时要谨慎,避免把普通文件全部设为可执行。
  • 查看文件详细权限及特殊位可使用 stat 命令。
  • 强烈不建议给系统关键文件(如 /etc/passwd)设置过宽的写权限,可能造成安全风险。

管理Linux(CentOS)的联网

基本概念

CentOS 的网络管理涉及网卡配置、IP 地址设置、DNS 解析、路由管理和防火墙等多个方面。CentOS 7 及以上版本默认使用 NetworkManager 作为网络管理服务,同时保留传统的 network 脚本方式作为备选。掌握 CentOS 的联网管理是服务器运维的必备技能。

CentOS 网络管理的核心组件:

  • NetworkManager:动态网络管理守护进程,提供 nmcli(命令行)、nmtui(文本界面)和 nm-connection-editor(GUI)三种管理方式。
  • 网络配置文件:位于 /etc/sysconfig/network-scripts/ 目录,以 ifcfg-接口名 命名(如 ifcfg-ens33)。
  • DNS 配置/etc/resolv.conf 文件或通过 NetworkManager 管理。
  • 主机名配置/etc/hostname 文件,推荐使用 hostnamectl 管理。

查看网络信息

ip 命令(推荐)

ip 命令是现代 Linux 发行版推荐的网络管理工具,功能强大且统一。基本用法:

# 查看所有网络接口信息
ip addr show
# 或简写为
ip a
查看指定接口
ip addr show ens33
查看路由表
ip route show
或简写
ip r
查看 ARP 表
ip neigh show

ifconfig 命令(传统)

ifconfig 属于 net-tools 包,CentOS 7 开始不再默认安装,需要手动安装:

# 安装 net-tools
yum install net-tools -y
查看所有网络接口
ifconfig
或
ifconfig -a
查看指定接口
ifconfig ens33

nmcli 命令

nmcli 是 NetworkManager 的命令行工具,功能非常全面:

# 查看所有网络设备状态
nmcli device status
查看所有连接配置
nmcli connection show
查看指定连接的详细信息
nmcli connection show ens33
查看设备详细信息
nmcli device show ens33

网络配置文件

CentOS 中网络接口的配置存储在 /etc/sysconfig/network-scripts/ 目录下,每个接口对应一个 ifcfg-接口名 文件。以下是常见配置项:

# /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet                  # 接口类型
BOOTPROTO=static               # 地址获取方式:static / dhcp / none
NAME=ens33                     # 连接名称
DEVICE=ens33                   # 设备名称
ONBOOT=yes                     # 是否开机自启
IPADDR=192.168.1.100           # IP 地址(静态时必填)
NETMASK=255.255.255.0          # 子网掩码(或使用 PREFIX=24)
GATEWAY=192.168.1.1            # 默认网关
DNS1=8.8.8.8                   # 首选 DNS
DNS2=114.114.114.114           # 备用 DNS
IPV6INIT=no                    # 是否启用 IPv6

修改配置文件后,需要重启网络服务使配置生效:

# 方法一:重启 NetworkManager
systemctl restart NetworkManager
方法二:使用 nmcli 重新加载
nmcli connection reload
nmcli connection up ens33
方法三:传统方式(需安装 network-scripts)
systemctl restart network

配置 IP 地址

使用 nmcli 配置(推荐)

nmcli 是管理网络连接最推荐的方式,操作后会自动更新配置文件并立即生效:

# 查看当前所有连接
nmcli connection show
配置静态 IP
nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24
nmcli connection modify ens33 ipv4.gateway 192.168.1.1
nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli connection modify ens33 ipv4.method manual
nmcli connection modify ens33 connection.autoconnect yes
激活配置
nmcli connection up ens33
切换为 DHCP
nmcli connection modify ens33 ipv4.method auto
nmcli connection up ens33

使用 nmtui 配置(文本图形界面)

在终端中直接输入 nmtui 即可打开文本图形化网络管理界面,适合不熟悉命令行的场景:

nmtui

在界面中选择 Edit a connection → 选择接口 → 编辑 IP 地址、网关、DNS 等信息 → 保存退出即可。

直接修改配置文件

直接编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件后重启网络:

vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改 BOOTPROTO、IPADDR、NETMASK、GATEWAY、DNS1 等字段
systemctl restart NetworkManager

配置 DNS

通过 nmcli 配置 DNS

# 设置 DNS 服务器
nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114"
设置 DNS 搜索域
nmcli connection modify ens33 ipv4.dns-search "example.com"
激活配置
nmcli connection up ens33

直接编辑 /etc/resolv.conf

/etc/resolv.conf 是系统的 DNS 解析配置文件,但使用 NetworkManager 管理网络时,该文件通常由 NM 自动生成。如需手动修改:

# 编辑 DNS 配置
vim /etc/resolv.conf
# 添加或修改以下内容
nameserver 8.8.8.8
nameserver 114.114.114.114
search example.com

如果希望手动修改不被 NetworkManager 覆盖,可以在对应连接的配置中添加:

nmcli connection modify ens33 ipv4.ignore-auto-dns yes

配置主机名

CentOS 7 及以上版本推荐使用 hostnamectl 管理主机名:

# 查看当前主机名
hostnamectl
# 或
hostname
临时修改主机名(重启后失效)
hostname newname
永久修改主机名(同时更新 /etc/hostname)
hostnamectl set-hostname myserver.example.com
设置静态主机名
hostnamectl set-hostname --static myserver
设置短主机名
hostnamectl set-hostname --pretty "My Server"

修改主机名后建议同步更新 /etc/hosts 文件:

vim /etc/hosts
# 添加或修改
127.0.0.1   localhost myserver
::1         localhost myserver

路由管理

查看路由表

# 使用 ip 命令
ip route show
使用传统命令
route -n
netstat -rn

添加静态路由

# 临时添加路由(重启后失效)
ip route add 192.168.2.0/24 via 192.168.1.1
ip route add 10.0.0.0/8 via 192.168.1.254 dev ens33
添加默认网关
ip route add default via 192.168.1.1
永久添加路由(使用 nmcli)
nmcli connection modify ens33 +ipv4.routes "192.168.2.0/24 192.168.1.1"
nmcli connection modify ens33 +ipv4.routes "10.0.0.0/8 192.168.1.254"
nmcli connection up ens33

删除路由

# 删除指定路由
ip route del 192.168.2.0/24
删除默认网关
ip route del default

网络故障排查

连通性测试 - ping

# 测试目标主机是否可达
ping -c 4 192.168.1.1
指定发送包大小和次数
ping -c 10 -s 1024 www.baidu.com

路由追踪 - traceroute

# 安装 traceroute(如未安装)
yum install traceroute -y
追踪到目标主机的路径
traceroute www.baidu.com
使用 ICMP 而非 UDP(某些网络可能被屏蔽)
traceroute -I www.baidu.com

查看网络连接 - ss / netstat

# ss 命令(推荐,速度更快)
ss -tunlp          # 查看所有 TCP/UDP 监听端口
ss -tunap          # 查看所有 TCP/UDP 连接(含进程)
ss -s              # 查看连接统计摘要
传统 netstat 命令(需安装 net-tools)
netstat -tunlp     # 查看所有监听端口
netstat -an        # 查看所有连接
netstat -i         # 查看网络接口统计

DNS 解析测试

# nslookup
nslookup www.baidu.com
nslookup www.baidu.com 8.8.8.8    # 使用指定 DNS 服务器
dig(需安装 bind-utils)
yum install bind-utils -y
dig www.baidu.com
dig @8.8.8.8 www.baidu.com        # 使用指定 DNS 服务器
dig -x 8.8.8.8                    # 反向解析

网卡信息与抓包

# 查看网卡详细信息
ethtool ens33
查看网卡驱动和状态
ethtool -i ens33
查看网络统计
ip -s link show ens33
抓包工具 tcpdump(快速诊断)
tcpdump -i ens33 -n port 80
tcpdump -i any -n host 192.168.1.100

防火墙 - firewalld

CentOS 7 及以上版本默认使用 firewalld 作为防火墙管理工具,它基于 zone(区域) 概念进行规则管理。

firewalld 基础操作

# 查看防火墙状态
systemctl status firewalld
firewall-cmd --state
启动 / 停止 / 重启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
设置开机自启 / 禁用自启
systemctl enable firewalld
systemctl disable firewalld

zone 区域管理

# 查看所有 zone
firewall-cmd --list-all-zones
查看当前默认 zone
firewall-cmd --get-default-zone
查看当前活跃的 zone
firewall-cmd --get-active-zones
修改默认 zone
firewall-cmd --set-default-zone=home

端口与服务管理

# 开放端口(临时,重启后失效)
firewall-cmd --add-port=8080/tcp
开放端口(永久,需 reload 生效)
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
开放服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
开放端口范围
firewall-cmd --permanent --add-port=8000-9000/tcp
firewall-cmd --reload
移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
查看已开放的端口和服务
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --list-all

富规则(Rich Rules)

富规则支持更精细的防火墙控制,可以指定来源 IP、协议、端口和动作:

# 允许指定 IP 访问特定端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
firewall-cmd --reload
拒绝指定网段访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" reject'
firewall-cmd --reload
查看富规则
firewall-cmd --list-rich-rules

实用技巧

  • 快速配置网卡:使用 nmtui 可以在不熟悉命令的情况下快速完成网络配置,适合紧急场景。
  • 备份网络配置:修改 /etc/sysconfig/network-scripts/ 下的配置文件前建议先用 cp ifcfg-ens33 ifcfg-ens33.bak 备份。
  • 多网卡绑定(Bonding):对于服务器环境,可以通过 Bonding 技术将多块物理网卡绑定为一张逻辑网卡,提高带宽和可靠性。使用 nmcli connection add type bond 创建绑定接口。
  • DNS 缓存:CentOS 默认不启用 DNS 缓存,可安装 nscddnsmasq 减少 DNS 查询延迟。
  • 网络监控:使用 iftopnloadvnstat 等工具可以实时监控网络流量,快速定位带宽异常。
  • 关闭 IPv6:如果不需要 IPv6,可以在 /etc/sysctl.conf 中添加 net.ipv6.conf.all.disable_ipv6 = 1 并执行 sysctl -p 生效,减少不必要的网络开销。
  • 排查网络问题顺序:先检查物理链路 → 查看 IP 配置 → 测试网关连通 → 测试 DNS 解析 → 检查防火墙规则,逐步缩小问题范围。

安装Nginx

下载:wget https://nginx.org/download/nginx-1.30.3.tar.gz

解压:tar zxf nginx-1.30.3.tar.gz

安装gcc:yum install -y gcc

安装PCRE库:yum install -y pcre-devel

安装OpenSSL库:yum install -y openssl-devel

进入解压后的nginx-1.30.3安装:

./configure --with-http_ssl_module --with-http_stub_status_module

编译:make
安装:make install

配置环境变量:

输入nginx命令后浏览器访问

更多推荐