2022山东省赛赛题Linux答案解析

2022山东省赛赛题

服务器配置及应用项目

三、linux 服务配置

(一)dns 服务

1.所有 linux 主机启用防火墙,防火墙区域为 public,在防火墙中放行对

应服务端口。

2.利用 chrony,配置 linux1 为其他 linux 主机提供 NTP 服务。

3.所有linux主机root用户使用完全合格域名免密码ssh登录到其他linux

主机。

4.利用 bind 配置 linux1 为主 dns 服务器,linux2 为备用 dns 服务器;为

所有 linux 主机提供冗余 dns 正反向解析服务。

yum -y install chronyd
#chrony时间服务
#编辑服务端chrony的配置文件
vim /etc/chrony.conf
server 10.10.21.101 iburst #line 3 
allow 10.10.21.0/24 #line 23 
local stratum 10 #line 26
systemctl start chronyd
#放行防火墙
firewall-cmd --add-service=ntp
#复制一份客户端配置文件
cp -p /etc/chrony.conf /
 #编辑客户端chrony的配置文件
vim /chrony.conf
server 10.10.21.101 iburst #line 3 
for((i=2;i<=7;i++)) do scp chrony.conf 10.10.21.10$i:/etc/chrony.conf ; ssh 10.10.21.10$i "systemctl restart chronyd&&chronyc sources -v";done 
#免密登录
ssh-keygen  
for((i=1;i<=7;i++)) ;do  ssh-copy-id 10.10.21.10$i ;done
for((i=1;i<=7;i++))do scp -r /root/.ssh/* 10.10.21.10$i:/root/.ssh/ ;done
yum -y install bind bind-utils
#linux1主DNS
#编辑bind主配置文件 
vim /etc/named.conf 
listen-on port 53 { any; }; #line 11 
allow-query { any; }; #line 19 

#编辑bind区域配置文件 
vim /etc/named.rfc1912.zones 
#正向解析 
zone "skills.com" IN { 
	type master; 
	file "skills.com.zone"; 
	allow-transfer { 10.10.21.102; }; 
};

#反向解析 
zone "21.10.10.in-addr.arpa" IN { 
	type master; 
	file "21.10.10.arpa"; 
	allow-transfer { 10.10.21.102; }; 
};

cd /var/named/ 
cp -p named.localhost skills.com.zone 
cp -p named.loopback 120.10.10.arpa
#编辑skills.com正向区域配置文件 
vim skills.com.zone 
$TTL 1D 
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
linux1  A       10.10.21.101
linux2  A       10.10.21.102
linux3  A       10.10.21.103
linux4  A       10.10.21.104
linux5  A       10.10.21.105
linux6  A       10.10.21.106
linux7  A       10.10.21.107
*       A       10.10.21.101
tomcat  A       10.10.21.102
www     A       10.10.21.101
#编辑skills.com反向区域配置文件
vim 120.10.10.arpa
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
101     PTR     linux1.skills.com.
102     PTR     linux2.skills.com.
103     PTR     linux3.skills.com.
104     PTR     linux4.skills.com.
105     PTR     linux5.skills.com.
106     PTR     linux6.skills.com.
107     PTR     linux7.skills.com.
#防火墙放行服务 
firewall-cmd --add-service=dns
#更改权限
chown -R root.named skills.com.zone 
chown -R root.named 120.10.10.arpa 
#启动bind服务 
systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
#备用DNS
#编辑bind主配置文件 
vim /etc/named.conf 
listen-on port 53 { any; }; #line 11 
allow-query { any; }; #line 19 

#编辑bind区域配置文件 
vim /etc/named.rfc1912.zones 
#正向解析 
zone "skills.com" IN { 
	type slave; 
	file "slaves/skills.com.zone"; 
	masters { 10.10.21.101; }; 
	masterfile-format text;
};

#反向解析 
zone "120.10.10.in-addr.arpa" IN { 
	type slave; 
	file "slaves/120.10.10.arpa"; 
	masters { 10.10.21.101; }; 
	masterfile-format text;
};
firewall-cmd --add-service=dns
#启动bind服务 
systemctl restart named 
systemctl enable named 
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
#查看skills.com.zone和120.10.10.arpa,有没有过来
ll /var/named/slaves/

5.在 linux1 上安装 ansible,作为 ansible 的控制节点。linux2-linux7 作

为 ansible 的受控节点。在 linux1 编写/root/skills.yaml 剧本,实现在 linux1

创建文件/root/ansible.txt,并将该文件复制到所有受控节点的/root 目录。

#从包中安装ansible,注意Rocky8.6可以直接安装ansible
yum -y install ansible*
#自定义主机清单
vim /etc/ansible/hosts
[server]
10.10.21.101
[client]
10.10.21.10[2:7]
#编写playbook脚本
vim /root/skills.yaml
---
- hosts: server
  gather_facts: no
  tasks:
    - name: touch file
      file: path="/root/ansible.txt" state=touch 
- hosts: client
  gather_facts: no
  tasks:
    - name: copy file
      copy: src="/root/ansible.txt" dest="/root/"
      
#运行playbook
ansible-playbook skills.yaml 

6.配置 linux1 为 CA 服务器,为 linux 主机颁发证书。证书颁发机构有效期

10 年,公用名为 linux1.skills.com。申请并颁发一张供 linux 服务器使用的证

书,证书信息:有效期=5 年,公用名=skills.com,国家=CN,省=Beijing,城市

=Beijing,组织=skills,组织单位=system,使用者可选名称=*.skills.com 和

skills.com。将证书 skills.crt 和私钥 skills.key 复制到需要证书的 linux 服

务器/etc/ssl 目录。浏览器访问 https 网站时,不出现证书警告信息。

#创建根私钥
openssl genrsa -out /etc/pki/CA/private/cakey.pem
cd /etc/pki/CA/
#创建根证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 #天数
CN Beijing Beijing Skills System skills.com
#在CA文件夹下创建 数据库索引文件 和 当前证书序列号
touch index.txt
echo 01 > serial
#导出安装用证书ca.pfx
openssl pkcs12 -export -inkey private/cakey.pem -in cacert.pem -out  certs/ca.pfx
#证书
openssl genrsa -out  skills.key
openssl req -new -key skills.key -out skills.csr
CN=*.skills.com,OU=System,O=Skills,L=Beijing,S=Beijing,C=CN
openssl ca -in skills.csr -out  skills.crt  -days 1825 
openssl pkcs12 -export -inkey skills.key -in skills.crt -out  skills.pfx
(二)apache 服务

1.用apache2配置linux2为web服务器,使用skills.com或any.skills.com

(any 代表任意网址前缀,用 linux1.skills.com 和 web.skills.com 测试)访

问时,自动跳转到 www.skills.com。禁止使用 IP 地址访问,默认首页文档

/var/www/html/index.html 的内容为"apache"。

2.把/etc/ssl/skills.crt 证书文件和/etc/ssl/skills.key 私钥文件转换

成含有证书和私钥的/etc/ssl/skills.pfx 文件;然后把/etc/ssl/skills.pfx

转换为含有证书和私钥的/etc/ssl/skills.pem文件,再从/etc/ssl/skills.pem

文件中提取证书和私钥分别到/etc/ssl/apache.crt 和/etc/ssl/apache.key。

3.客户端访问 apache 服务时,必需有 ssl 证书。

yum -y install httpd mod_ssl
cd /etc/ssl
#配置文件在/usr/config文件夹下新建一个server.conf文件,内容如下
vim /etc/ssl/server.conf
[req]
req_extensions=req_ext

[req_ext]
subjectAltName =@alt_names

[alt_names]
DNS.1 = www.skills.com   # 自行根据待配置证书的域名修改
DNS.2 = *.skill.com # 自行根据待配置证书的域名修改,该项用来认证二级域名,若无需验证去掉即可

openssl genrsa -out  skills.key
openssl req -new -key skills.key -out skills.csr
CN=www.skills.com,OU=System,O=Skills,L=Beijing,S=Beijing,C=CN
#把这个成功申请
openssl ca -in skills.csr -out  skills.crt  -days 1825 -extensions req_ext -extfile server.conf
# 默 认 首 页 文 档/var/www/html/index.html 的内容为"Apache"
echo "Apache" > /var/www/html/index.html
#apache配置
<virtualhost *:80>
 servername www.skills.com
 serveralias *.skills.com
 RewriteEngine on
 RewriteRule ^(.*) https://www.skills.com/ [L]
</virtualhost>
<virtualhost *:443>
 servername www.skills.com
 serveralias *.skills.com
 DocumentRoot "/var/www/html"
 SSLEngine on
 SSLCertificateFile /etc/ssl/skills.crt
 SSLCertificateKeyFile /etc/ssl/skills.key
 SSLCACertificateFile /etc/ssl/cacert.pem
</virtualhost> 
#隐藏apache版本信息 
ServerTokens Prod
ServerSignature off
#客户端访问,要有三个证书key,crt,pem
curl -k --cert skills.crt --key skills.key --cacert /etc/pki/CA/cacert.pem  https://www.skills.com

#把证书转换为带私钥的pfx格式 
openssl pkcs12 -export -inkey skills.key -in skills.crt -out  skills.pfx 
#将pfx转换为pem格式证书,pfx是包含私钥的,不加密私钥
openssl pkcs12 -in skills.pfx -nodes -out skills.pem 
#从 PFX 格式文件中提取私钥格式文件 (.key)
openssl pkcs12 -in skills.pfx -nocerts -nodes -out skills.key	
(三)ftp 服务

1.用 vsftpd 配置 linux3 为 ftp 服务器,新建本地用户 test,能上传下载。

2.配置 ftp 虚拟用户认证模式,虚拟用户 ftp1 和 ftp2 映射用户为 ftp;

ftp1 能上传下载,但禁止上传后缀名为.docx 的文件;ftp2 仅能下载。

3.所有用户登录 ftp 后的目录为/var/ftp/vdir/<$USERNAME>,

$USERNAME 表示用户名。

4.使用 ftp 命令在本机验证。

yum -y install vsftpd
#创建用户
useradd -d /var/ftp/pub test 
echo "xiaoming:Pass-1234"|chpasswd
#vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
listen=YES
listen_ipv6=NO
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/ftp
allow_writeable_chroot=YES
#添加虚拟用户配置
vim /etc/vsftpd/ftpuser.list
ftp1
Pass-1234
ftp2
Pass-1234
#哈希加密
db_load -T -t hash -f /etc/vsftpd/ftpuser.list /etc/vsftpd/ftpuser.db
find / -name pam_userdb.so
#PAM验证
vim /etc/pam.d/vsftpd
auth    required        /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuser
account required        /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuser
#配置用户文件
mkdir /etc/vsftpd/ftp
vim /etc/vsftpd/ftp/ftp1
local_root=/var/ftp/vdir/ftp1
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
deny_file={*.docx}
vim /etc/vsftpd/ftp/ftp2
local_root=/var/ftp/vdir/ftp2
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
:wq
mkdir /var/ftp/vdir/{ftp1,ftp2} -p
chown ftp:ftp /var/ftp/vdir/* -R
chmod 777 /var/ftp/pub
systemctl restart vsftpd
firewall-cmd --add-service=ftp
#测试
ftp 10.10.21.101
(四)nfs 服务

1.配置 linux2 为 kdc 服务器,负责 linux3 和 linux4 的验证。

2.在 linux3 上,创建用户,用户名为 xiao,uid=2000,gid=2000,家目

录为/home/xiaodir。

3.配置 linux3 为 nfs 服务器,目录/srv/sharenfs 的共享要求为:linux

服务器所在网络用户有读写权限,所有用户映射为 xiao,kdc 加密方式为 krb5p。

4.配置 linux4 为 nfs 客户端, 利用 autofs 按需挂载 linux3 上的

/srv/sharenfs 到/sharenfs 目录,挂载成功后在该目录创建 test 目录。

yum -y install krb5* nfs-utils
#修改KDC主配置文件 
vim /etc/krb5.conf
18行和21行后面所有
 default_realm = SKILLS.COM
[realms]
 22  SKILLS.COM = {
 23      kdc = linux2.skills.com
 24      admin_server = linux2.skills.com
 25  }
 26 
 27 [domain_realm]
 28  .skills.com = SKILLS.COM
 29  skills.com = SKILLS.COM
 #kdc数据库初始化,回车两下
kdb5_util create -s
#创建客户端密钥并把密钥导出
kadmin.local
addprinc -randkey nfs/linux3.skills.com
addprinc -randkey nfs/linux4.skills.com
ktadd -k /tmp/linux3 nfs/linux3.skills.com
ktadd -k /tmp/linux4 nfs/linux4.skills.com
exit
scp /etc/krb5.conf linux3.skills.com:/etc/krb5.conf 
scp /etc/krb5.conf linux4.skills.com:/etc/krb5.conf 
scp /tmp/linux3 linux3.skills.com:/etc/krb5.keytab 
scp /tmp/linux4 linux4.skills.com:/etc/krb5.keytab
systemctl enable --now krb5kdc
firewall-cmd --add-service=kerberos
#linux3
yum -y install krb5* nfs-utils nfs-utils
kinit -kt /etc/krb5.keytab nfs/linux3.skills.com
klist 
#linux3 创用户,用户名为 xiao,uid=2000,gid=2000,家目录为/home/xiaodir
groupadd -g 2000 xiao
useradd -u 2000 -g 2000 -d /home/xiaodir xiao
#NFS服务
yum install nfs-utils -y
mkdir -p /srv/sharenfs
vim /etc/exports
/srv/sharenfs 10.10.21.0/24(rw,root_squash,async,anonuid=2000,anongid=2000,sec=krb5p)
:wq
systemctl enable --now nfs-server
firewall-cmd --add-service=nfs
firewall-cmd --add-service=rpc-bind 
firewall-cmd --add-service=mountd 
#linux4
yum -y install krb5* nfs-utils nfs-utils autofs
vim /etc/auto.master
# 挂载点的父目录   /etc/auto.misc
/sharenfs       /etc/auto.misc
vim /etc/auto.misc
# 挂载点的真实目录     -fstype=nfs,rw   server:/nfs-share
xiao -fstype=nfs,rw,sync,no_root_squash 10.10.21.103:/srv/sharenfs
:wq
systemctl enable --now autofs
mkdir /sharenfs
cd /sharenfs
cd xiao
mkdir test
# 检查文件系统挂载情况
df -Th
(五)postgresql 服务

1.配置 linux5 为 postgresql 服务器,创建数据库 userdb;在库中创建

表 userinfo,在表中插入 2 条记录,分别为(1,user1,1995-7-1),(2,user2,

1995-9-1),口令与用户名相同,password 字段用 md5 函数加密,表结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcxOqj9q-1679974466927)(C:\Users\yzp\AppData\Roaming\Typora\typora-user-images\image-20221114142211717.png)]

2.设置可以直接在 shell 下操作数据库,然后备份数据库 userdb 到

/var/local/postgresqlbak/userdb.sql。

yum install -y postgresql postgresql-server
#初始化数据库
/usr/bin/postgresql-setup --initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data' 
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
 #启动服务
 systemctl enable --now postgresql
 #开启防火墙
firewall-cmd --add-port=5432/tcp --permanent
#创建数据库
sudo -u postgres psql
createdb database userdb;
#登入数据库
\c userdb
#创建表结构
create table userinfo(id serial primary key not null,name varchar(10) ,birthday date ,password varchar(50));
#插入数据 
insert into userinfo values(1,'user1','1995-7-1',MD5('user1')); 
insert into userinfo values(2,'user2','1995-9-1',MD5('user2'));
\q
#备份数据库userdb到/var/local/postgresqlbak/userdb.sql
mkdir -p /var/local/postgresqlbak 
chmod 777 /var/local/postgresqlbak/ 
sudo -u postgres pg_dump -c -C -f /var/local/postgresqlbak/userdb.sql userdb
(六)redis 服务

1.利用 linux6 搭建 redis cluster 集群,使用端口 7004-7006 模拟主节点,

7001-7003 模拟从节点,让其他主机可以访问 redis 集群。

#修改配置文件
vim /etc/redis.conf
69 bind 10.10.21.103
136 daemonize yes
838  cluster-enabled yes
846  cluster-config-file nodes-6379.conf
:wq
mkdir -p /rediscluster/{7001..7006}
#使用shell脚本进行批量操作 
for((i=7001;i<=7006;i++))do cp /etc/redis.conf /rediscluster/$i/; sed -i "s/6379/$i/g" /rediscluster/$i/redis.conf;
#创建集群
redis-cli --cluster create 10.10.21.103:7001 10.10.21.103:7002 10.10.21.103:7003 10.10.21.103:7004 10.10.21.103:7005 10.10.21.103:7006 --cluster-replicas 1
(五)Mariadb 服务

1.配置 Linux3 为 Mariadb 服务器,安装 Mariadb-server,创建数据库用户

jack,在任意机器上对所有数据库有完全权限;允许 root 远程登陆。

2.配置 Linux4 为 Mariadb 客户端,创建数据库 userdb;在库中创建表

userinfo,在表中插入 2 条记录,分别为(1,user1,1995-7-1,男),(2,user2,

1995-9-1,女),口令与用户名相同,password 字段用 password 函数加密,表结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojYuj4bS-1679974466928)(C:\Users\yzp\AppData\Roaming\Typora\typora-user-images\image-20221114142955846.png)]

3.修改表 userinfo 的结构,在 name 字段后添加新字段 height(数据类型为

float),更新 user1 和 user2 的 height 字段内容为 1.61 和 1.62。

4.将表 userinfo 中的记录导出,并存放到/var/databak/mysql.sql 文件中

#服务端
Yum install -y mariadb mariadb-server
Systemctl restart mariadb mariadb.service
mysql
GRANT ALL PRIVILEGES ON *.* to jack@'%' identified by "Pass-1234";
#客户端
um install -y mariadb mariadb-server
Systemctl restart mariadb mariadb.service
Mysql -u jack -h 10.10.21.103 -p
create database userdb;
use userdb;
#创建表结构
create table userinfo(id int primary key auto_increment,name varchar(10),birthday datetime,sex char(5),password char(200));
#插入数据 
insert into userinfo values(1,'user1','1995-7-1','nan',password('user1')); 
insert into userinfo values(2,'user2','1995-9-1','nv',password('user2'));
allter table userinfo add height float after name;
update userinfo set height = 1.61 where id =1;
update userinfo set height = 1.62 where id =2;
load data local infile '/1/mysql.txt' into table userinfo;
exit
#内容导入userinfo表
[root@linux4]#mysqldump -h 10.10.21.103 -u jack -p"Pass-1234" -B --databases userdb --tables userinfo > '/var/databak/mysql.sql'

(四)Mail 服务

1.配置 linux4 为 mail 服务器,安装 postfix 和 dovecot。

2.仅支持 smtps 和 pop3s 连接,证书路径为/etc/ssl/skills.crt,私钥路

径为/etc/ssl/skills.key。

3.创建用户 mail1 和 mail2,向 all@skills.com 发送的邮件,每个用户

都会收到。

4.root 用户使用 mail 工具向 all@skills.com 发送一封邮件,邮件

主题为“Hello”,内容为“Welcome”。

yum install postfix dovecot -y

#配置postfix 
vim /etc/postfix/main.cf 
myhostname = linux5.skills.com 
mydomain = skills.com 
myorigin = $mydomain 
inet_interfaces = all 
mydestination = $myhostname,$mydomain 
mynetworks = 10.10.21.0/24 
home_mailbox = Maildir/
#ssl
smtpd_tls_key_file = /etc/ssl/skills.key
smtpd_tls_cert_file = /etc/ssl/skills.crt

vim /etc/postfix/master.cf
#smtp inet n - n - - smtpd #line 12 
smtps inet n - n - - smtpd #line 29 
	-o syslog_name=postfix/smtps #line 30 
	-o smtpd_tls_wrappermode=yes #line 31

#编辑dovecot
vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp submission
listen = *, ::
login_trusted_networks = 10.10.21.0/24

vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir

vim /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert = </etc/ssl/skills.crt
ssl_key = </etc/ssl/skills.key

#防火墙
firewall-cmd --add-service=pop3s
firewall-cmd --add-service=smtps
firewall-cmd --add-service=smtp
firewall-cmd --add-service=pop3
systemctl start postfix dovecot
systemctl enable postfix.service dovecot.service 
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /usr/lib/systemd/system/dovecot.service.
#创建用户mail1和mail2
useradd mail1
useradd mail2
#设置密码
echo "mail1:Pass-1234" | chpasswd
echo "mail2:Pass-1234" | chpasswd
#配置
vim /etc/aliases
all: mail1,mail2
:wq
newaliases
yum install mailx -y
echo "Welcome" | mail -s "Hello" all@skills.com
cat /home/mail1/Maildir/new/1652068709.Vfd00Ibe30cM57337.linux4.skills.com 
Return-Path: <root@skills.com>
X-Original-To: all@skills.com
Delivered-To: all@skills.com
Received: by linux4.skills.com (Postfix, from userid 0)
        id 07D07A1C8D; Mon,  9 May 2022 11:58:29 +0800 (CST)
Date: Mon, 09 May 2022 11:58:28 +0800
To: all@skills.com
Subject: Hello
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20220509035829.07D07A1C8D@linux4.skills.com>
From: root <root@skills.com>

Welcome
(六)pxe 服务

1.linux5 安装 DHCP 服务,地址范围为 10.10.21.10-10.10.21.19,网关

为 10.10.21.1,dns 为 10.10.21.101,域名为 skills.com。

2.安装 tftp-server,tftp 目录为默认值。

3.挂载 linux 光盘文件到/var/www/html/cdrom;实现完全自动安装 linux

文字界面,配置文件为/var/www/html/ks.cfg(参考/root/anaconda-ks.cfg),

在/var/lib/tftpboot/pxelinux.cfg/default 文件中指定安装源和 ks 文件。

yum -y  install httpd syslinux xinetd tftp-server dhcp-server
# 复制配置文件
cp -a /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp: overwrite '/etc/dhcp/dhcpd.conf'? y
#将以下配置修改
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}
#修改为如下配置

subnet 10.10.21.0 netmask 255.255.255.0 { #地址网段 和 掩码 
	range 10.10.21.10 10.10.21.19; #地址池 
    option domain-name-servers 10.10.21.101;
    option domain-name "skills.com";
    option routers 10.10.21.254;
    filename "pxelinux.0"; #pxe引导程序文件 
    next-server 10.10.21.104; #tfpt服务器地址
}
mkdir /var/www/html/cdrom
mount /root/Rocky-8.5-x86_64-dvd1.iso /var/www/html/cdrom
# 拷贝启动所需文件
 cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
 cp -a /var/www/html/cdrom/isolinux/{initrd.img,ldlinux.c32,vesamenu.c32,libcom32.c32,vmlinuz,libutil.c32} /var/lib/tftpboot/
# 拷贝引导文件并修改
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default 
label linux
  menu label ^Manual Install CentOS Linux 8
  kernel vmlinuz
  menu default
  append initrd=initrd.img inst.stage2=http://10.10.21.104/cdrom ks=http://10.10.21.104/ks.cfg quiet
#保存并退出:wq!
cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
# 拷贝引导文件并修改
chmod o+r /var/www/html/ks.cfg 
# 赋予其他用户添加可读权限
vim /var/www/html/ks.cfg 
text
url --url="http://10.10.21.104:8888/cdrom/"
#下面四个注释
#repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream
# Use CDROM installation media
#cdrom
# Partition clearing information
clearpart --all --initlabel 	#none 改成all 初始化硬盘
reboot		#最后一行加上reboot 装完系统自动重启
非编辑模式下输入 :%s/vda/sda/g	
非编辑模式下输入 :wq
systemctl restart httpd tftp.socket xinetd dhcpd 
systemctl enable httpd tftp.socket xinetd dhcp
#防火墙
firewall-cmd --add-service=dhcp
firewall-cmd --add-service=tftp
firewall-cmd --add-port=8888/tcp

(六)samba 服务

1.在 linux5 上创建 user00-user19 等 20 个用户;user00 和 user01

添加到 dev 组,user02 和 user03 添加到 sale 组。把用户 user00-user03 添加到 samba 用户。

2.配置 linux5 为 samba 服务器,建立共享目录/srv/sharesmb,共享名与

目录名相同。dev 组用户对 sharesmb 共享有读写权限,sale 组对 sharesmb

共享有只读权限;用户对自己新建的文件有完全权限,对其他用户的文件只有读

权限,且不能删除别人的文件。在本机用 smbclient 命令测试。

3.在 linux6 修改/etc/fstab,使用用户 user00 实现自动挂载 linux3 的

sharesmb 共享到/sharesmb。

yum -y install samba samba-client
#创建20个用户
[root@linux3 srv]# vi /222.sh 
#!/bin/bash
for i in {00..20}
do
        useradd user$i
done
#创建组
groupadd sale
groupadd dev
#修改用户的所属组
usermod user01 -g dev
usermod user00 -g dev
usermod user02 -g sale
usermod user03 -g sale
pdbedit -a user00
pdbedit -a user01
pdbedit -a user02
pdbedit -a user03
#创建目录
mkdir -p /srv/sharesmb
firewall-cmd --add-service=samba
#编辑samba的配置文件
vim /etc/samba/smb.conf
[sharesmb]
	path = /srv/sharesmb
	browseable = yes
	write list = dev
	valid users =@dev,@sale
 :wq
 systemctl enable --now smb
 # smbclient 命令测试
 yum -y install samba-client
 smbclient //10.10.21.103/sharesmb/ -U user00
Password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
smb: \>
#linux4
mkdir /sharesmb
yum -y install cifs-utils
vim /etc/fstab
//10.10.21.103/sharesmb /sharesmb cifs defaults,username=user00,password=Pass-1234 0 0
mount -a
(七)脚本

1.在 linux7 上编写/root/CreateFile.py 的 python3 脚本,创建 20 个

文件/root/python/File10 至/root/python/File29,如果文件存在,则删除后

再创建;每个文件的内容同文件名,如 File10 文件的内容为“File10”。

import os
os.system("mkdir -p /root/python")
file  = "/root/python/"

for n in range(10,29):

    if(n < 20):
        res = os.path.isfile("/root/python/file{}".format(n))
        if(res):

            os.system("rm -rf {}file{}".format(file,n))
        else:
            res1 = os.system("touch {}file{}".format(file,n))
            ec = os.system("echo file{} >> {}file{}".format(n,file,n))

    else:
        res = os.path.isfile("{}file{}".format(file,n))
        if(res):

            os.system("rm -rf {}file{}".format(file,n))
        else:
            res2 = os.system("touch {}file{}".format(file,n))
            ec1 = os.system("echo file{} >> {}file{}".format(n,file,n))