Linux云服务配置
本文最后更新于31 天前,其中的信息可能已经过时,如有错误请发送邮件到1416359402@qq.com

作者–XXT 说明:因电脑内存问题所以只用了三台来做演示

题目:

(二)Linux 云服务配置

1. 创建虚拟机

主机名称镜像IPv4 地址
linux1Rocky 9.010.0.220.101/24
linux2Rocky 9.010.0.220.102/24
linux3Rocky 9.010.0.220.103/24
linux4Rocky 9.010.0.220.104/24
linux5Rocky 9.010.0.220.105/24
linux6Rocky 9.010.0.220.106/24
linux7Rocky 9.010.0.220.107/24
linux8Rocky 9.010.0.220.108/24
linux9Rocky 9.010.0.220.109/24

2. DNS 服务

(1)利用 bind,配置 linux1 为主 DNS 服务器,linux2 为备用 DNS 服务器,为所有 linux 主机提供冗余 DNS 正反向解析服务。正向区域文件均为 /var/named/named.skills,反向区域文件均为 /var/named/named.10

3. NTP 服务

(1)利用 chrony,配置 linux1 为其他 linux 主机提供 NTP 服务。

4. Ansible 服务

(1)所有 linux 主机之间(包含本主机)root 用户实现密钥 ssh 认证。
(2)在 linux1 上安装系统自带的 ansible-core,作为 ansible 控制节点。linux2-linux9 作为 ansible 的受控节点。

5. CA 服务

(1)配置 linux1 为 CA 服务器,为 linux 主机颁发证书。证书颁发机构有效期=10 年,公用名 =linux1.skills.lan。申请并颁发一张证书,证书信息:有效期=10 年,公用名=skills.lan,国家=CN,省=Beijing,城市=Beijing,组织=skills,组织单位=system,使用者可选名称=*.skills.lanskills.lan。将证书 skills.crt 和私钥 skills.key 复制到需要证书的 linux 服务器 /etc/pki/tls 目录。浏览器访问 https 网站时,不出现证书警告信息。

6. Apache2 服务

(1)配置 linux1 为 Apache2 服务器,使用 skills.lanany.skills.lan(any 代表任意网址前缀,用 linux1.skills.lanweb.skills.lan 测试)访问时,自动跳转到 www.skills.lan。禁止使用 IP 地址访问,默认首页文档 /var/www/html/index.html 的内容为“HelloApache”。

(2)把 /etc/pki/tls/skills.crt 证书文件和 /etc/pki/tls/skills.key 私钥文件转换成含有证书和私钥的 /etc/pki/tls/skills.pfx 文件;然后把 /etc/pki/tls/skills.pfx 转换为含有证书和私钥的 /etc/pki/tls/skills.pem 文件,再从 /etc/pki/tls/skills.pem 文件中提取证书和私钥分别到 /etc/pki/tls/apache.crt/etc/pki/tls/apache.key

(3)客户端访问 Apache 服务时,必需有 SSL 证书。

7. Samba 服务

(1)在 linux4 上创建 user00-user19 等 20 个用户;user00 和 user01 添加到 manager 组,user02 和 user03 添加到 dev 组。把用户 user00-user03 添加到 samba 用户。

(2)配置 linux4 为 samba 服务器,建立共享目录 /srv/sharesmb,共享名与目录名相同。manager 组用户对 sharesmb 共享有读写权限,dev 组对 sharesmb 共享有只读权限;用户对自己新建的文件有完全权限,对其他用户的文件只有读权限,且不能删除别人的文件。在本机用 smbclient 命令测试。

8. NFS 服务

(1)在 linux5 上,创建用户,用户名为 xiao,uid=2222,gid=2222,家目录为 /home/xiaodir

(2)配置 linux5 为 nfs 服务器,目录 /srv/sharenfs 的共享要求为:linux 服务器所在网络用户有读写权限,所有用户映射为 xiao。

9. MySQL 服务

(1)配置 linux7 为 mysql 服务器,创建数据库用户 xiao,在任意机器上对所有数据库有完全权限。

(2)创建数据库 userdb;在库中创建表 userinfo,表结构如下:

字段名数据类型主键自增
idint
namevarchar(10)
heightfloat
birthdaydatetime
sexvarchar(5)
passwordvarchar(200)

(3)在表中插入 2 条记录,分别为
(1, user1, 1.61, 2000-07-01, M)
(2, user2, 1.62, 2000-07-02, F)
password 字段与 name 字段相同,password 字段用 md5 函数加密。

(4)新建 /var/mysql/userinfo.txt 文件,文件内容如下,然后将文件内容导入到 userinfo 表中,password 字段用 md5 函数加密。

3,user3,1.63,2000-07-03,F,user3
4,user4,1.64,2000-07-04,M,user4
5,user5,1.65,2000-07-05,M,user5
6,user6,1.66,2000-07-06,F,user6
7,user7,1.67,2000-07-07,F,user7
8,user8,1.68,2000-07-08,M,user8
9,user9,1.69,2000-07-09,F,user9

(5)将表 userinfo 中的记录导出,并存放到 /var/mysql/userinfo.sql,字段之间用 分隔。

(6)为 root 用户创建计划任务(day 用数字表示),每周五凌晨 1:00 备份数据库 userdb(含创建数据库命令)到 /var/mysql/userdb.sql。(便于测试,手动备份一次。)

10. Podman 服务

(1)在 linux9 上安装 podman,导入 rockylinux-9.tar 镜像。
(2)创建名称为 skills 的容器,映射本机的 8000 端口到容器的 80 端口,在容器内安装 httpd,默认网页内容为“HelloPodman”。

SSH:

先实现ssh连接个个搭建的靶机:

sudo vim /etc/ssh/sshd_config

将第40行修改成:

可使用本地连接:

ssh root@IP

我这里使用的是Xshell:

注意用户名一类的不能出现错误

经过我的验证上面这些步骤是可以省略的但是需要添加一块网卡,且这块网卡要和要连接的设备在一个网段

然后连接上xshell之后接着我进行了对防火墙的关闭

永久关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld

挂载本地源:

这个步骤可以在比赛中完成工具连接之后就开始进行

开始配置:

1.

进入vm勾选配置

2.

配置样源repo的文件

cd /etc/yum.repos.d/

编辑:

vim /etc/yum.repos.d/rocky.repo

完全使用本地ISO源(不依赖网络)

确保rocky.repo只使用本地路径

[baseos]
name=Rocky Linux $releasever - BaseOS
baseurl=file:///mnt/cdrom/BaseOS
gpgcheck=1
enabled=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-Rocky-9

[appstream]

name=Rocky Linux $releasever – AppStream baseurl=file:///mnt/cdrom/AppStream gpgcheck=1 enabled=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-Rocky-9 # 禁用所有其他仓库(包括 extras)

[extras]

enabled=0

3.挂载光盘并安装

# 创建挂载点
mkdir -p /mnt/cdrom

# 挂载光盘
mount /dev/sr0 /mnt/cdrom

接下来安装就可以了

DNS:

前提:

分别检查均能相互ping通

1.安装BIND软件

安装bind 和 bind-utils

yum install bind bind-utils -y

主dns和从dns都要安装

设置系统使用本机作为DNS解析服务器

查看网络连接名称:

nmcli connection show
nmcli connection modify ens160 ipv4.dns "127.0.0.1"
nmcli connection modify ens160 ipv6.dns "::1"
nmcli connection down ens160 && nmcli connection up ens160

核心DNS服务器的/etc/resolv.conf缺失配置,主要影响自身的域名解析能力,不直接影响它为其他主机提供服务的功能

1.主DNS服务器(linux1)配置

1.2 编辑DNS主配置文件

编辑DNS主配置文件 => linux1

vim /etc/named.conf

1.3 创建DNS正反向区域

创建dns正反向区域

vim /etc/named.rfc1912.zones

编辑文件,添加正向区域(解析域名 => IP)和反向区域(解析IP => 域名)的定义

1.4 编辑DNS正反向区域解析文件

编辑dns正反向区域解析文件

cd /var/named/
cp -p named.localhost named.skills
cp -p named.loopback named.10 //-p只复制内容
vim named.skills  //编辑正向区域解析文件,添加主机记录
vim named.10  #编辑反向区域解析文件,添加指针记录

1.5重启DNS服务

重启dns服务

systemctl restart named
systemctl enable named

配置防火墙允许DNS流量(DNS用UDP/TCP 53端口)

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
或者关闭防火墙

解析测试:

正向解析测试:通过解析域名得出IP

反向解析测试:通过解析IP得出域名

如果你要通过域名,去访问IP地址所对应的主机,那么你要确保你的dns服务是正常的

2.备用DNS服务器(linux2)配置

2.1 配置备用DNS正反向区域配置

vim /etc/named.rfc1912.zones
zone "skills.com" IN {
        type slave;
        master {10.0.220.101;};
        file "slaves/named.skills";
};

zone "0.in-addr.arpa" IN {
        type master;
        master {10.0.220.101;};
        file "slaves/named.10";

};

然后这里正向的解析出了问题

nmcli connection show
nmcli connection modify ens160 ipv6.dns "::1"
nmcli connection modify ens160 ipv4.dns "10.0.220.101"
nmcli connection down ens160 && nmcli connection up ens160

3.启动服务并配置防火墙

systemctl enable --now named
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
或者关闭防火墙

验证:

3.客户端(linux3-linux9配置)

让这些主机使用linux1和linux2作为DNS服务器,以nmcli为例

nmcli connection modify ens160 ipv4.dns "10.0.220.101 10.0.220.102"
nmcli connection down ens160 && nmcli connection up ens160

验证效果:

在任意客户端(如linux3)执行解析测试:

正向解析

nslookup linux1.skills.com

反向解析:

nslookup 10.0.220.101

NTP:

要在linux1上利用chrony为其他linux主机提供NTP服务,可按照以下步骤操作

1.安装chrony:

sudo dnf install chrony -y

2.配置chrony服务端:

编辑chrony的主配置文件/etc/chrony.conf:

sudo vim /etc/chrony.conf

在配置文件中添加允许其他主机(10.0.220.0/24 网段)同步时间的配置,同时设置本地时间源(若没有外部 NTP 服务器,可依赖本地时间

# 允许 10.0.220.0/24 网段的主机同步时间
allow 10.0.220.0/24
# 设置本地时间源,stratum 设为 10(无外部源时使用)
local stratum 10

3.配置防火墙:

如果linux1启用了防火墙,需要开放NTP服务的UDP123端口:

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

这里直接关闭防火墙就好

这里的话验证的话会出现错误,是由于如果linux1要作为其他主机的 NTP 服务器,同时自身也需要同步时间,应该配置上游 NTP 服务器;如果 linux1 仅作为本地时间源(无外部 NTP 服务器),需要配置 local 相关指令。
例如,若要配置上游 NTP 服务器(以阿里云 NTP 服务器为例),在 /etc/chrony.conf 中添加:
server ntp.aliyun.com iburst

客户端配置:

在其他Linux主机(linux2-linux9)上,同样安装chrony并配置同步linux1的时间:

1.安装chrony:

sudo dnf install chrony -y

由于这里我的设备是脱网状态使用的是u盘传送安装包

不做演示

2.编辑配置

编辑/etc/chrony.conf,添加Linux1作为NTP服务器:

sudo vim /etc/chrony.conf

在文件中添加:

server 10.0.220.101 iburst

3.重启服务

sudo systemctl restart chronyd
sudo systemctl enable chronyd

验证:

chronyc sources -v

linux3

ansible:

一.所有Linux主机之间root用户实现密钥SSH认证

步骤1:在linux1生成密钥对

以root用户登录linux1,执行命令生成RSA密钥对(一路回车,使用默认设置)

ssh-keygen -t rsa

生成的密钥对默认存于/root/.ssh/,id_rsa 为私钥,id_rsa.pub 为公钥。

步骤2:复制公钥到所有主机(包括linux1自身)

对每台主机(以linux2为例),执行:

ssh-copy-id root@linux2

依次对linux3到linux9执行上述命令,过程中输入目标主机root密码

步骤3:验证密钥认证

ssh root@linux2

能直接登录认证成功

二.在linux1安装ansible-core并配置受控节点

1.在linux1上安装ansible-core

在linux1用系统包管理器安装:

yum install -y ansible-core

2.配置受控节点清单(linux1)

Ansible 通过清单文件定义受控节点。编辑默认清单文件 /etc/ansible/hosts,添加 linux2linux9 为受控节点:

vim /etc/ansible/hosts

3.验证

使用ansible命令,对所有受控节点执行 ping 测试

ansible all -m ping

这里需要先分别对其进行一次

ansible linux3 -m ping 

command模块可在受控节点上执行指定命令,通过查看命令执行结果来判断连接是否正常。例如,在控制节点(如linux1)上执行以下命令,查看受控节点的主机名:

CA服务:

linux1:配置CA服务器

1.1安装openssl

yum install -y openssl

1.2创建CA目录结构

mkdir -p /etc/pki/CA/{certs,crl,newcerts,private}
chmod 700 /etc/pki/CA/private
touch /etc/pki/CA/index.txt
echo 1000 > /etc/pki/CA/serial

1.3生成CA私钥

openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096
chmod 600 /etc/pki/CA/private/cakey.pem

1.4生成CA根证书(有效期10年)

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem 
    -out /etc/pki/CA/cacert.pem -days 3650 
    -subj "/CN=linux1.skills.lan"

2.生成服务器证书请求(CSR)

2.1创建服务器私钥

openssl genrsa -out /etc/pki/tls/skills.key 4096
chmod 600 /etc/pki/tls/skills.key

2.2准备OpenSSL配置文件(用于SAN扩展)

mkdir -p /etc/pki/tls/
vi /etc/pki/tls/openssl-san.cnf

创建/etc/pki/tls/openssl-san.cnf:

[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions     = req_ext
prompt             = no

[ req_distinguished_name ]
countryName                = CN
stateOrProvinceName        = Beijing
localityName               = Beijing
organizationName           = skills
organizationalUnitName     = system
commonName                 = skills.lan

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = *.skills.lan
DNS.2 = skills.lan

这个方法的编辑器比较难使用

使用 echo 命令创建(最简单)

cat > /etc/pki/tls/openssl-san.cnf << 'EOF'
[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions     = req_ext
prompt             = no
encrypt_key        = no

[ req_distinguished_name ]
countryName                = CN
stateOrProvinceName        = Beijing
localityName               = Beijing
organizationName           = skills
organizationalUnitName     = system
commonName                 = skills.lan

[ req_ext ]
subjectAltName = @alt_names
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth

[ alt_names ]
DNS.1 = *.skills.lan
DNS.2 = skills.lan
EOF

2.3生成证书请求(CSR)

openssl req -new -key /etc/pki/tls/skills.key 
    -out /etc/pki/tls/skills.csr 
    -config /etc/pki/tls/openssl-san.cnf

3.签发服务器证书

3.1准备签发配置文件(CA端)

首先检查OpenSSL的CA配置文件:

ls -la /etc/pki/tls/openssl.cnf

3.2初始化CA数据库

# 确保序列号文件存在
echo 1000 > /etc/pki/CA/serial

# 确保索引文件存在
touch /etc/pki/CA/index.txt

# 检查文件状态
ls -la /etc/pki/CA/

3.3签发服务器证书:

使用宽松策略

使用 policy_anything 策略来避免严格匹配:

openssl ca -in /etc/pki/tls/skills.csr 
    -out /etc/pki/tls/skills.crt 
    -days 3650 
    -extensions req_ext 
    -extfile /etc/pki/tls/openssl-san.cnf 
    -cert /etc/pki/CA/cacert.pem 
    -keyfile /etc/pki/CA/private/cakey.pem 
    -policy policy_anything 
    -batch
-in /etc/pki/tls/skills.csr:输入的证书请求文件

-out /etc/pki/tls/skills.crt:输出的已签发证书文件

-days 3650:证书有效期10年(3650天)

-extensions req_ext:使用配置文件中定义的扩展段

-extfile /etc/pki/tls/openssl-san.cnf:指定包含SAN的配置文件

-cert /etc/pki/CA/cacert.pem:CA证书路径

-keyfile /etc/pki/CA/private/cakey.pem:CA私钥路径

-batch:批处理模式,不交互提示

4.验证生成的证书:

4.1验证证书内容

openssl x509 -in /etc/pki/tls/skills.crt -text -noout

4.2 检查 SAN 字段

openssl x509 -in /etc/pki/tls/skills.crt -text -noout | grep -A 5 "Subject Alternative Name"

5.复制证书到其他服务器

# 复制到其他 Linux 服务器
scp /etc/pki/tls/skills.crt /etc/pki/tls/skills.key root@10.0.220.102:/etc/pki/tls/
# 在目标服务器上设置权限
chmod 600 /etc/pki/tls/skills.key

在Linux1上安装Niginx

0.检查光盘设备

lsblk

1.挂载光盘并安装

# 创建挂载点
mkdir -p /mnt/cdrom

# 挂载光盘
mount /dev/sr0 /mnt/cdrom

# 验证挂载
ls /mnt/cdrom/

2. 配置本地 yum 仓库

# 创建本地仓库文件
cat > /etc/yum.repos.d/local.repo << 'EOF'

[local-baseos]

name=Local BaseOS baseurl=file:///mnt/cdrom/BaseOS enabled=1 gpgcheck=0

[local-appstream]

name=Local AppStream baseurl=file:///mnt/cdrom/AppStream enabled=1 gpgcheck=0 EOF # 清理缓存 yum clean all

3. 安装 Nginx

# 安装 Nginx
yum install -y nginx

# 验证安装
nginx -v

4. 配置 Nginx SSL

# 创建 SSL 配置
cat > /etc/nginx/conf.d/ssl.conf << 'EOF'
server {
    listen 443 ssl;
    server_name skills.lan;

    ssl_certificate /etc/pki/tls/skills.crt;
    ssl_certificate_key /etc/pki/tls/skills.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /usr/share/nginx/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
EOF

5. 创建测试页面

# 创建测试页面
cat > /usr/share/nginx/html/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <title>skills.lan - HTTPS Test</title>
</head>
<body>
    <h1>Welcome to skills.lan</h1>
    <p>HTTPS certificate test successful!</p>
    <p>No certificate warnings should appear in the browser.</p>
</body>
</html>
EOF

6. 启动 Nginx

# 检查配置文件语法
nginx -t

# 启动 Nginx
systemctl start nginx
systemctl enable nginx

# 检查状态
systemctl status nginx

7. 配置防火墙

# 开放 HTTPS 端口
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

# 验证
firewall-cmd --list-all

8. 验证服务

# 检查端口监听
ss -tlnp | grep :443

# 本地测试
curl -k https://localhost

在其他机器上检验:

1.配置hosts文件

# 编辑 hosts 文件
sudo vi /etc/hosts

# 在文件末尾添加( Web 服务器 IP 是 10.0.220.101)
10.0.220.101 skills.lan

# 保存并退出

2. 验证 hosts 配置

# 检查 hosts 文件内容
cat /etc/hosts | grep skills.lan

# 测试域名解析
ping -c 2 skills.lan

# 使用 nslookup 测试
nslookup skills.lan

从 linux1 复制证书文件到 linux2

# 在 linux2 上执行,从 linux1 复制证书文件
scp root@10.0.220.101:/etc/pki/tls/skills.crt /tmp/
scp root@10.0.220.101:/etc/pki/tls/skills.key /tmp/
# 验证文件
ls -la /tmp/skills.* /tmp/cacert.pem

步骤 4:测试 HTTPS 访问

# 现在应该可以访问了
curl --cacert /tmp/cacert.pem -I https://skills.lan

# 详细测试
curl --cacert /tmp/cacert.pem -v https://skills.lan

# 如果不指定 CA 证书(如果已添加到系统信任库)
curl -v https://skills.lan

apache2服务

1.挂载光盘并安装

# 创建挂载点
mkdir -p /mnt/cdrom

# 挂载光盘
mount /dev/sr0 /mnt/cdrom

# 验证挂载
ls /mnt/cdrom/

2.apache2服务配置(Linux 1)

2.1 安装Apache和ssl模块

yum install -y httpd mod_ssl

2.2 证书格式转换

# .crt + .key → .pfx
openssl pkcs12 -export -out /etc/pki/tls/skills.pfx 
  -inkey /etc/pki/tls/skills.key 
  -in /etc/pki/tls/skills.crt 
  -passout pass:

# .pfx → .pem  
openssl pkcs12 -in /etc/pki/tls/skills.pfx 
  -out /etc/pki/tls/skills.pem 
  -nodes 
  -passin pass:

提取证书和私钥

# 复制证书文件
cp /etc/pki/tls/skills.crt /etc/pki/tls/apache.crt

# 复制私钥文件
cp /etc/pki/tls/skills.key /etc/pki/tls/apache.key

2.3 配置虚拟主机

创建 /etc/httpd/conf.d/skills.conf

# 禁止 IP 直接访问
<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/html
    <Location />
        Deny from all
    </Location>
</VirtualHost>

# HTTP 到 HTTPS 重定向
<VirtualHost *:80>
    ServerName skills.lan
    ServerAlias *.skills.lan
    Redirect permanent / https://www.skills.lan/
</VirtualHost>

# HTTPS 主站点
<VirtualHost *:443>
    ServerName www.skills.lan
    DocumentRoot /var/www/html

    # SSL 配置
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/apache.crt
    SSLCertificateKeyFile /etc/pki/tls/apache.key

    # 安全设置
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!aNULL:!MD5

    # 目录权限
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    DirectoryIndex index.html
</VirtualHost>

# 禁止其他 HTTPS 访问
<VirtualHost *:443>
    ServerName default
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/apache.crt
    SSLCertificateKeyFile /etc/pki/tls/apache.key
    <Location />
        Deny from all
    </Location>
</VirtualHost>

2.4 创建网站内容

mkdir -p /var/www/html
echo "HelloApache" > /var/www/html/index.html
chown -R apache:apache /var/www/html

2.5 启动服务

# 检查配置语法
httpd -t

# 启动并启用服务
systemctl start httpd
systemctl enable httpd

3.客户端测试配置(Linux2)

添加:
10.0.220.101 skills.lan
10.0.220.101 www.skills.lan
10.0.220.101 linux1.skills.lan
10.0.220.101 web.skills.lan
10.0.220.101 x.skills.lan

3.1 测试命令

# 测试 HTTP 重定向
curl -I http://skills.lan

# 测试 HTTPS 访问(忽略证书警告)
curl -k https://www.skills.lan

4. 故障排除指南

4.1 Apache 启动失败 – 端口被占用

bash

# 检查端口占用
netstat -tlnp | grep -E ':80|:443'

# 如果 Nginx 占用,停止它
systemctl stop nginx
systemctl disable nginx

# 杀死残留进程
pkill httpd

# 重新启动
systemctl start httpd

samba 服务

1.1 创建用户 user00-user19

for i in {00..19}; do
    useradd user$i
    echo "123456" | passwd --stdin user$i
done

说明

  • 使用循环创建 user00 到 user19 共 20 个用户
  • passwd --stdin 用于非交互式设置密码
  • 所有用户密码设置为 123456

1.2 创建组 manager 和 dev

groupadd manager
groupadd dev

说明:创建两个用户组用于权限管理。

1.3 将用户加入对应组

usermod -aG manager user00
usermod -aG manager user01
usermod -aG dev user02
usermod -aG dev user03

说明

  • -aG 参数表示追加到附加组(不覆盖原有组)
  • user00 和 user01 加入 manager 组
  • user02 和 user03 加入 dev 组

2. 安装 Samba 并添加 Samba 用户

yum install samba samba-client -y

2.1 添加用户到 Samba

for i in {00..03}; do
    (echo "123456"; echo "123456") | smbpasswd -a user$i -s
done

说明

  • smbpasswd -a 添加 Samba 用户
  • -s 参数表示静默模式(不交互)
  • 需要输入两次密码确认
  • 只有 user00-user03 需要添加到 Samba 用户

3. 创建共享目录并设置权限

3.1 创建共享目录

mkdir -p /srv/sharesmb

3.2 设置目录权限

chmod 2770 /srv/sharesmb
chown root:manager /srv/sharesmb
  • 2770 中的 2 表示设置 SGID(在该目录下创建的文件继承目录的组)
  • 770 表示所有者(root)和组(manager)有读写执行权限
  • 设置组为 manager,这样 manager 组成员有写权限

4. 配置 Samba 共享

4.1 备份原配置文件

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

4.2 编辑配置文件

vi /etc/samba/smb.conf

在文件末尾添加以下内容:

[sharesmb]
    path = /srv/sharesmb
    valid users = @manager, @dev
    write list = @manager
    read list = @dev
    create mask = 0664
    force create mode = 0664
    directory mask = 0775
    force directory mode = 0775

配置说明

  • valid users = @manager, @dev:只允许 manager 和 dev 组访问
  • write list = @manager:manager 组有读写权限
  • read list = @dev:dev 组有只读权限
  • create mask = 0664:新建文件权限为 664(所有者读写,组读写,其他只读)
  • force create mode = 0664:强制新建文件权限
  • directory mask = 0775:新建目录权限为 775
  • force directory mode = 0775:强制新建目录权限

6. 启动并测试 Samba 服务

systemctl start smb
systemctl enable smb
systemctl start nmb
systemctl enable nmb

使用lcd命令切换本地目录

# 切换到系统目录
smb: > lcd /etc

# 上传文件
smb: > put hosts

# 切换回根目录
smb: > lcd /

nfs服务:

1. 创建用户 xiao

# 创建组(gid=2222)
sudo groupadd -g 2222 xiao

# 创建用户,指定 uid、gid 和家目录
sudo useradd -u 2222 -g 2222 -d /home/xiaodir -m xiao
  • -u 2222:指定用户 ID 为 2222
  • -g 2222:指定组 ID 为 2222
  • -d /home/xiaodir:指定家目录路径
  • -m:如果目录不存在则创建

2. 创建共享目录并设置权限

# 创建共享目录
sudo mkdir -p /srv/sharenfs

# 将目录所有者改为 xiao:xiao
sudo chown xiao:xiao /srv/sharenfs

# 设置目录权限(例如 755 或 775,根据需求)
sudo chmod 755 /srv/sharenfs

3. 安装并配置 NFS 服务器

# 对于 CentOS/RHEL/Rocky
sudo yum install nfs-utils

# 对于 Ubuntu/Debian
sudo apt install nfs-kernel-server

3.1 编辑 /etc/exports 文件

sudo vim /etc/exports

加入以下内容:

/srv/sharenfs 10.0.220.0/24(rw,sync,all_squash,anonuid=2222,anongid=2222)
  • 10.0.220.0/24:允许访问的网段,请根据实际网络修改
  • rw:读写权限
  • sync:同步写入
  • all_squash:将所有访问用户映射为匿名用户
  • anonuid=2222anongid=2222:将所有用户映射为 uid=2222(xiao)和 gid=2222

4. 启动并启用 NFS 服务

# 启动服务
sudo systemctl start nfs-server    # 对于 CentOS/Rocky
# 设置开机自启
sudo systemctl enable nfs-server
sudo systemctl enable nfs-kernel-server

5. 使 NFS 配置生效

sudo exportfs -ra

6. 验证配置

# 查看当前导出的共享
showmount -e localhost

应输出类似:

Export list for localhost:
/srv/sharenfs 192.168.0.0/24

客户端挂载测试

在另一台 Linux 客户端上测试 ==> yum install nfs-utils

bash

sudo mount -t nfs 10.0.220.103:/srv/sharenfs /mnt

mysql服务

1. 安装 MySQL 服务器

yum install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb

2. 运行安全初始化

mysql_secure_installation

按照提示设置 root 密码123456

二、创建数据库用户并授权

1. 登录 MySQL

mysql -u root -p

2. 创建用户 xiao 并授权

CREATE USER 'xiao'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'xiao'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

三、创建数据库和表结构

1. 创建数据库 userdb

CREATE DATABASE userdb;
USE userdb;

2. 创建表 userinfo

CREATE TABLE userinfo (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(10),
    height FLOAT,
    birthday DATETIME,
    sex VARCHAR(5),
    password VARCHAR(200)
);

四、插入初始数据

插入两条记录,password 使用 MD5 加密:

INSERT INTO userinfo (id, name, height, birthday, sex, password)
VALUES 
(1, 'user1', 1.61, '2000-07-01', 'M', MD5('user1')),
(2, 'user2', 1.62, '2000-07-02', 'F', MD5('user2'));

五、导入外部数据文件

1. 创建数据文件(在系统)

mkdir -p /var/mysql
cat > /var/mysql/userinfo.txt << EOF
3,user3,1.63,2000-07-03,F,user3
4,user4,1.64,2000-07-04,M,user4
5,user5,1.65,2000-07-05,M,user5
6,user6,1.66,2000-07-06,F,user6
7,user7,1.67,2000-07-07,F,user7
8,user8,1.68,2000-07-08,M,user8
9,user9,1.69,2000-07-09,F,user9
EOF
2. 设置文件权限
# 给 MySQL 用户访问权限
chmod 766 /var/mysql
chown mysql:mysql /var/mysql/userinfo.txt

2. 导入数据到 userinfo

-- 登录 MariaDB
mysql -u root -p

-- 选择数据库
USE userdb;

-- 第一步:导入数据
LOAD DATA LOCAL INFILE '/var/mysql/userinfo.txt' 
INTO TABLE userinfo 
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
(id, name, height, birthday, sex, @password)
SET password = MD5(@password);

这个是和上面命令重复的

LOAD DATA LOCAL INFILE '/var/mysql/userinfo.txt' 
INTO TABLE userinfo 
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
(id, name, height, birthday, sex, @password)
SET password = MD5(@password);

六、导出数据到文件

导出 userinfo 表数据到 /var/mysql/userinfo.sql,字段用 ; 分隔:

SELECT * INTO OUTFILE '/var/mysql/userinfo.sql'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY 'n'
FROM userinfo;

七、设置定时备份任务


  1. 手动备份一次(含建库语句)



  2. mysqldump -u root -p --databases userdb > /var/mysql/userdb.sql

2. 为 root 用户添加 crontab 计划任务

crontab -u root -e

添加以下行:

0 1 * * 5 mysqldump -u root -p你的密码(123456) --databases userdb > /var/mysql/userdb.sql

podman服务

1.安装podman

# 更新系统
dnf update -y

# 安装 Podman
dnf install -y podman

# 验证安装
podman --version

2.在当前系统直接完成实验要求

# 安装 httpd
dnf install -y httpd

# 创建网页内容
echo "HelloPodman" > /var/www/html/index.html

# 修改 httpd 监听端口为 8000
sed -i 's/Listen 80/Listen 8000/' /etc/httpd/conf/httpd.conf

# 启动服务
systemctl enable httpd
systemctl start httpd

# 测试访问
curl http://localhost:8000

2.1使用当前系统完成实验

安装和配置httpd

# 安装 httpd
dnf install -y httpd

# 创建网页内容
echo "HelloPodman" > /var/www/html/index.html

# 修改监听端口为 8000
sed -i 's/Listen 80/Listen 8000/' /etc/httpd/conf/httpd.conf

# 启动服务
systemctl enable httpd
systemctl start httpd

# 配置防火墙(如果需要)
firewall-cmd --add-port=8000/tcp --permanent
firewall-cmd --reload

2. 2测试访问

curl http://localhost:8000

使用当前系统创建基础容器

# 创建容器目录结构
CONTAINER_ROOT="/opt/basic-container"
mkdir -p $CONTAINER_ROOT/{bin,lib,lib64,etc,var/www/html}

# 复制必要的基础文件
cp /bin/bash $CONTAINER_ROOT/bin/
cp /bin/sh $CONTAINER_ROOT/bin/
cp /bin/sleep $CONTAINER_ROOT/bin/

# 复制依赖的库文件
ldd /bin/bash | grep -o '/[^ ]*' | xargs -I {} cp {} $CONTAINER_ROOT/lib/ 2>/dev/null

# 创建网页内容
echo "HelloPodman" > $CONTAINER_ROOT/var/www/html/index.html

# 从当前目录导入为镜像
tar -C $CONTAINER_ROOT -cf container-base.tar .
podman import container-base.tar basic-web

3、验证实验完成情况

echo "=== 实验要求验证 ==="
echo "1. 服务运行状态:"
systemctl status httpd 2>/dev/null || podman ps 2>/dev/null

echo "2. 端口监听:"
netstat -tlnp | grep 8000

echo "3. 网页内容:"
curl -s http://localhost:8000

echo "4. 外部访问测试:"
curl -s http://$(hostname -I | awk '{print $1}'):8000
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇