我是基于ChatGPT-turbo-3.5实现的AI助手,在此网站上负责整理和概括文章

本文详细介绍了CentOS操作系统的配置方法,包括查看和修改主机名、配置网络yum源、调整SELinux策略、设置静态IP地址、配置防火墙规则以及目录挂载等。文章通过具体命令和步骤,指导用户如何查看操作系统信息、修改主机名(支持静态、瞬态和灵活类型)、配置yum源、调整SELinux为宽容模式、设置静态IP、管理防火墙规则、挂载目录等,同时强调了永久生效的配置和重启后的验证。这些操作对于系统管理员和开发人员在CentOS环境下的日常管理具有实用价值。

# 查看操作系统相关信息

uname -a    //查看到的是瞬态的(Tansient hostname)
cat /etc/redhat-release    //查看操作系统环境

# 主机名修改

# 主机名类型

  • 静态主机名(Static)

    • 存储在 /etc/hostname
    • 系统启动时加载
    • 需符合域名规范
  • 瞬态主机名(Transient)

    • 运行时临时分配(如通过DHCP)
    • 重启后失效
  • 灵活主机名(Pretty)

    • 支持特殊字符和空格
    • 用于显示用途

# 查看主机名

  • 在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。

    # 查看所有类型
    hostnamectl
    hostnamectl status
    
    #  只查看静态、瞬态或灵活主机名,分别使用--static,--transient或--pretty选项
    hostnamectl --static    # 静态
    hostnamectl --transient # 瞬态
    hostnamectl --pretty    # 灵活
    
    # 传统查看方式
    hostname        # 瞬态主机名
    cat /etc/hostname # 静态主机名

# 修改主机名

  • 只能临时修改的主机名,当重启机器后,主机名称又变回来了。

    hostname 主机名
  • 永久生效

    # 永久性的修改主机名称,重启(注销重新登录后可查看)后能保持修改后的。
    # 记得更新/etc/hosts文件
    hostnamectl set-hostname 新主机名  # 修改静态主机名
    
    # 删除hostname
    hostnamectl set-hostname ""
    hostnamectl set-hostname "" --static
    hostnamectl set-hostname "" --pretty
  • 通过配置文件

    # 把该文件内容第一行替换成自己想要的主机名重启即可。
    vim /etc/hostname  # 编辑后重启生效

    一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你每次在修改主机名后一定要手动更新/etc/hosts,之后再重启CentOS 7。否则系统再启动时会很慢。

  • 图形界面修改

    nmtui  # 使用交互界面修改
    # 或
    nmcli general hostname 新主机名
    systemctl restart systemd-hostnamed

    通过nmtui进入图形界面来修改主机名。将光标通过键盘的上下键移动到“设定系统主机名”菜单处,按下回车键。

# 配置网络yum源

  1. 备份原始yum源:
cd   /etc/yum.repos.d
mv  CentOS-Base.rpeo   CentOS-Base.repo.bak
  1. 配置CentOS的DNS:
vim   /etc/resolv.conf
nameserver   114.114.114.114         //国内dns
nameserver   8.8.8.8                        //国外dns
  1. 下载yum文件,替代原始yum源:
(1)网易yum源:
wget  -O   /etc/yum.repos.d/CentOS-Base.repo    http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum   clean   all            //清除缓存
yum   makecache       //生成缓存
(2)阿里云yum源:
wget   -O   /etc/yum.repos.d/CentOS-Base.repo    http://mirrors.aliyun.com/repo/Centos-7.repo
yum   clean  all
yum   makecache
  1. 配置EPEL源:
yum  -y   install   epel-release
# 设置为国内的源
sed -i "s@^#baseurl=http://download.fedoraproject.org/pub@baseurl=http://mirrors.aliyun.com@g" /etc/yum.repos.d/epel*.repo
sed -i "s@^metalink@#metalink@g" /etc/yum.repos.d/epel*.repo
  1. 更新yum缓存:
yum  clean  all
yum  makecache
  1. 显示所有已经安装和可以安装的程序包:
yum  list
  1. 安装常用工具:
yum install -y wget curl tree htop net-tools zip unzip 

# 配置SELinux

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

  1. 查看SELinux状态:Disabled表示关闭,Enforcing表示开启,Permissive表示宽容模式。
    • Enforcing:强制模式。代表SELinux在运行中,且已经开始限制domain/type之间的验证关系

    • Permissive:宽容模式。代表SELinux在运行中,不过不会限制domain/type之间的验证关系,即使验证不正确,进程仍可以对文件进行操作。不过如果验证不正确会发出警告

    • Disabled:关闭模式。SELinux并没有实际运行

# getenforce 用这个命令检查
getenforce

# 如果SELinux status参数为enabled即为开启状态
/usr/sbin/sestatus -v
  1. 配置SELinux为宽容模式:
setenforce 0
  1. 永久配置SELinux为宽容模式:
#sed -i "s/查找字段/替换字段/g"  文件名

# 永久配置SELinux为宽容模式
sed -i "s/^SELINUX=.*/SELINUX=permissive/g" /etc/selinux/config

#永久关闭,必须重启
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

4.重启系统使配置生效:

reboot

# 设置静态IP

  1. 查看网络接口:
ip a
  1. 配置静态IP:
vim /etc/sysconfig/network-scripts/ifcfg-ens32
# 配置静态IP
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.60.10
NETMASK=255.255.255.0
GATEWAY=192.168.61.2
DNS1=114.114.114.114
DNS2=8.8.8.8
  1. 重启网络服务:
systemctl restart network

# 主机名与ip映射

  • 域名和ip地址的映射

    • windows C:\Windows\System32\drivers\etc

    • linux:vi /etc/hosts

  • 添加

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.61.101 hdp1
  • 测试:ping hdp1

# 加入sudo权限

  • CentOS7给普通用户配置sudo权限,即把普通用户加入wheel用户组

    • 在CentOS系统中,默认情况下,wheel用户组成员被授予sudo权限。

      [root@localhost ~]# cat /etc/sudoers
      ## Allows people in group wheel to run all commands
      %wheel  ALL=(ALL)       ALL
    • 授予 sudo 权限

      usermod -aG wheel user
      # -g<群组>  修改用户所属的群组。
      # -G<群组>  修改用户所属的附加群组。
      # -a 表示在原来所属组的基础上追加
      -G 修改当前次要组
      -G -a是增加新的次要组
    • 检查用户是否添加进 wheel 组

      $ lid -g wheel
      # 显示用户id和组id信息
      # id 命令可以显示真实有效的用户 ID(UID) 和组 ID(GID)。
      # UID 是对一个用户的单一身份标识。组 ID(GID)则对应多个UID。
      $ id username
  • 修改sudo配置文件,在root下执行,否则请加sudo

    # 打开sudo配置文件
    visudo
    # 找到下面这两行,并在下面新增红色部分
    root ALL=(ALL) ALL
    username ALL=(ALL) ALL

# 系统的启动级别

  • 查看当前的系统启动级别(0-6) : runlevel

    > 0:关机
    
    > 1:单用户
    
    > 2:多用户,不能访问网络
    
    > 3:多用户,能访问网络(全功能,不带图形界面,速度快)
    
    > 4:未使用
    
    > 5:带有图形界面系统模式
    
    > 6.重启
  • 修改启动级别

    # vim /etc/inittab
    id:3:initdefault:
    # 重启
    reboot

# 防火墙管理

# 服务管理

操作 命令
启动防火墙 systemctl start firewalld
停止防火墙 systemctl stop firewalld
重启防火墙 systemctl restart firewalldservice firewalld restart
查看状态 systemctl status firewalld
开机启用 systemctl enable firewalld
禁用开机启动 systemctl disable firewalld

# 防火墙状态检查

firewall-cmd --state            # 查看运行状态
firewall-cmd --list-all         # 查看所有规则
firewall-cmd --list-services    # 查看允许的服务
firewall-cmd --list-ports       # 查看开放的端口

# 规则配置

添加规则

# 开放服务
firewall-cmd --add-service=<服务名> --permanent  && firewall-cmd --reload

# 开放端口
firewall-cmd --add-port=<端口号>/<协议> --permanent  && firewall-cmd --reload

移除规则

# 移除服务
firewall-cmd --remove-service=<服务名> --permanent  && firewall-cmd --reload

# 移除端口
firewall-cmd --remove-port=<端口号>/<协议> --permanent  && firewall-cmd --reload

# 配置生效

firewall-cmd --reload     # 重载配置(不中断连接)
firewall-cmd --complete-reload  # 完全重载(中断连接)

# 常用参数说明

  • --permanent:永久生效(重启后保留)
  • --zone=public:指定区域(默认public)
  • --timeout=30:临时规则有效期(秒)

# 别名配置

将以下内容添加到 ~/.bashrc 文件末尾:

# Firewalld 极速别名
alias fwstat='firewall-cmd --state'                          # 查看状态
alias fwlist='firewall-cmd --list-all'                       # 列出所有规则
alias fwports='firewall-cmd --list-ports'                    # 列出开放端口
alias fwsvcs='firewall-cmd --list-services'                  # 列出允许服务

alias fwopen='func_fwopen() { firewall-cmd --add-port=$1/tcp --permanent && firewall-cmd --reload && echo "开放 $1/tcp 成功"; }; func_fwopen'  # 开放端口
alias fwclose='func_fwclose() { firewall-cmd --remove-port=$1/tcp --permanent && firewall-cmd --reload && echo "关闭 $1/tcp 成功"; }; func_fwclose' # 关闭端口

alias fwallow='func_fwallow() { firewall-cmd --add-service=$1 --permanent && firewall-cmd --reload && echo "允许服务 $1 成功"; }; func_fwallow'  # 允许服务
alias fwdeny='func_fwdeny() { firewall-cmd --remove-service=$1 --permanent && firewall-cmd --reload && echo "禁止服务 $1 成功"; }; func_fwdeny'   # 禁止服务

使用示例

fwstat       # 查看防火墙状态
fwlist       # 查看所有规则

fwopen 8080  # 开放8080端口
fwclose 8080 # 关闭8080端口

fwallow http # 允许http服务
fwdeny http  # 禁止http服务

fwports      # 查看开放端口
fwsvcs       # 查看允许服务

# 目录挂载

  • 将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为挂载。把该子目录称为挂载点。

    • 挂载源:设备文件
    • 挂载点: 存在的目录
  • 临时挂载:mount -t iso9660 -o ro/loop 挂载源 挂载点

  • 永久挂载:vim /etc/fstab

  • 卸载: umount 挂载点

  • 注意:

    1. 挂载点必须是一个目录。
    2. 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。
    3. mount命令没有建立挂载点的功能,因此你应该确保执行mount命令时,挂载点已经存在。(不懂?说白了点就是你要把文件系统挂载到哪,首先要先建上个目录。)

# 挂载命令

  • 格式:mount [-参数][设备名称][挂载点]

    # -t <文件系统类型> 指定设备的文件系统类型,常见的有:    
        minix 	linux最早使用的文件系统    
        ext2 	linux目前常用的文件系统    
        msdos 	MS-DOS的fat,就是fat16     
        vfat 	windows98常用的fat32     
        nfs 	网络文件系统    
        iso9660 CD-ROM光盘标准文件系统   -> 挂载镜像文件
        ntfs 	windows NT 2000的文件系统    
        hpfs 	OS/2文件系统    
        auto 	自动检测文件系统
    
    # -o<选项> 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。常用的有 
        codepage=XXX 代码页	codepage指定文件系统的代码页,简体中文中文代码是936;
        iocharset=XXX 字符集	iocharset指定字符集,简体中文一般用cp936或gb2312。     
    	ro 以只读方式挂载
    	rw 以读写方式挂载
    	nouser 使一般用户无法挂载
    	user 可以让一般用户挂载设备
    
    # 例子
    mount -t iso9660 /dev/cdrom /mnt/cdrom
    mount -o ro /dev/hda1 /mnt

# 自动挂载

  • 在/etc目录下有个fstab文件,它里面列出了linux开机时自动挂载的文件系统的列表。
  • 第一列/dev/cdrom:挂载源,要挂在的磁盘分区或者存储设备,或者文件系统
  • 第二列/mnt/cdrom:挂载点,挂载位置
  • 第三列iso9660:文件系统类型,ext4文件系统,swap表示交换分区,……
  • 第四列defaults:挂载参数
  • 第五列0:表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份。如果是0,dump就会被忽略,事实上大多数的dump设置都是0
  • 第六列0:读取文件系统时候的检查顺序,允许的数字是0,1,2,根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为2,0表示不检查

# 粘贴^[[200~

# vi ~/.inputrc 文件,添加如下命令:保存,重启shell即可
set enable-bracketed-paste off