案例4:编写一个判断脚本
在 server0 上创建 /root/foo.sh 脚本
1)当运行/root/foo.sh redhat,输出为fedora
2)当运行/root/foo.sh fedora,输出为redhat
3)当没有任何参数或者参数不是redhat 或者fedora时,
其错误输出产生以下信息: /root/foo.sh redhat|fedora
[root@server0 ~]# vim /root/foo.sh
#!/bin/bash
if [ $# -eq 0 ];then #判断位置变量的个数是否为0个
echo ‘/root/foo.sh redhat|fedora’ >&2 #将正确的输出结果变成错误的输出
exit 2 #脚本退出返回值
elif [ $1 == redhat ];then
echo fedora
elif [ $1 == fedora ];then
echo redhat
else
echo ‘/root/foo.sh redhat|fedora’ >&2 #将正确的输出结果变成错误的输出
exit 3 #脚本退出返回值
fi
##################################################################
在 server0 上创建 /root/batchusers 脚本
1)此脚本要求提供用户名列表文件作为参数
2)如果没有提供参数,此脚本应该给出提示 Usage:/root/batchusers,退出并返回相应值
if [ $# -eq 0 ];then
echo ‘Usage:/root/batchusers’ >&2
exit 2
fi
3)如果提供一个不存在的文件,此脚本应该给出提示 Input file not found,退出并返回相应值
if [ -f $1 ];then
for i in `cat $1`
do
useradd -s /bin/false $i
echo $i成功
done
else
echo ‘Input file not found’ >&2
exit 2
fi
4)新用户的登录Shell为 /bin/false ,无需设置密码
5)用户列表测试文件:
http://classroom/pub/materials/userlist
[root@server0 ~]# vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ];then
echo ‘Usage:/root/batchusers’ >&2
exit 2
fi
if [ -f $1 ];then
for i in `cat $1`
do
useradd -s /bin/false $i
echo $i成功
done
else
echo ‘Input file not found’ >&2
exit 2
fi
############################################################
防火墙 处理 端口转发 功能
虚拟机Server0:基本的Web服务
[root@server0 ~]# yum -y install httpd
[root@server0 ~]# echo ‘
NSD1802′ > /var/www/html/index.html
[root@server0 ~]# cat /var/www/html/index.html
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable httpd
[root@server0 ~]# firefox 172.25.0.11
实现默认区域为public,在默认区域里添加允许客户端访问http
# firewall-cmd –permanent –zone=public –add-service=http
# firewall-cmd –reload
# firewall-cmd –zone=public –list-all
服务或协议的端口 : 标识服务或协议
常见的协议:
http 超文本传输协议 默认端口 80
https 安全的超文本传输协议 默认端口 443
ftp 文件传输协议 默认端口 21
tftp 简单文件传输协议 默认端口 69
telnet 远程管理协议 默认端口 23
dns 域名解析协议 默认端口 53
smtp 邮件协议 默认端口 25
pop3 收邮件协议 默认端口 110
snmp 简单的管理协议 默认端口 161
虚拟机Desktop0 访问 虚拟机Server0 5423端口
将访问 虚拟机Server0 5423端口的请求 转发到 虚拟机Server0 80端口
虚拟Desktop0 ——->172.25.0.11:5423
虚拟机Server0 —–172.25.0.11:5423——>172.25.0.11:80
虚拟机Server0
# firewall-cmd –permanent –zone=public
–add-forward-port=port=5423:proto=tcp:toport=80
# firewall-cmd –reload
# firewall-cmd –zone=public –list-all
虚拟机Desktop0
# firefox 172.25.0.11:5423
在 server0 上创建 /root/batchusers 脚本
1)此脚本要求提供用户名列表文件作为参数
2)如果没有提供参数,此脚本应该给出提示 Usage:/root/batchusers,退出并返回相应值
if [ $# -eq 0 ];then
echo ‘Usage:/root/batchusers’ >&2
exit 2
fi
3)如果提供一个不存在的文件,此脚本应该给出提示 Input file not found,退出并返回相应值
if [ -f $1 ];then
for i in `cat $1`
do
useradd -s /bin/false $i
echo $i成功
done
else
echo ‘Input file not found’ >&2
exit 2
fi
4)新用户的登录Shell为 /bin/false ,无需设置密码
5)用户列表测试文件:
http://classroom/pub/materials/userlist
[root@server0 ~]# vim /root/batchusers
#!/bin/bash
if [ $# -eq 0 ];then
echo ‘Usage:/root/batchusers’ >&2
exit 2
fi
if [ -f $1 ];then
for i in `cat $1`
do
useradd -s /bin/false $i
echo $i成功
done
else
echo ‘Input file not found’ >&2
exit 2
fi
############################################################
防火墙 处理 端口转发 功能
虚拟机Server0:基本的Web服务
[root@server0 ~]# yum -y install httpd
[root@server0 ~]# echo ‘
NSD1802′ > /var/www/html/index.html
[root@server0 ~]# cat /var/www/html/index.html
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable httpd
[root@server0 ~]# firefox 172.25.0.11
实现默认区域为public,在默认区域里添加允许客户端访问http
# firewall-cmd –permanent –zone=public –add-service=http
# firewall-cmd –reload
# firewall-cmd –zone=public –list-all
服务或协议的端口 : 标识服务或协议
常见的协议:
http 超文本传输协议 默认端口 80
https 安全的超文本传输协议 默认端口 443
ftp 文件传输协议 默认端口 21
tftp 简单文件传输协议 默认端口 69
telnet 远程管理协议 默认端口 23
dns 域名解析协议 默认端口 53
smtp 邮件协议 默认端口 25
pop3 收邮件协议 默认端口 110
snmp 简单的管理协议 默认端口 161
虚拟机Desktop0 访问 虚拟机Server0 5423端口
将访问 虚拟机Server0 5423端口的请求 转发到 虚拟机Server0 80端口
虚拟Desktop0 ——->172.25.0.11:5423
虚拟机Server0 —–172.25.0.11:5423——>172.25.0.11:80
虚拟机Server0
# firewall-cmd –permanent –zone=public
–add-forward-port=port=5423:proto=tcp:toport=80
# firewall-cmd –reload
# firewall-cmd –zone=public –list-all
虚拟机Desktop0
# firefox 172.25.0.11:5423
—————————————————————————————————————————
案例1:为虚拟机 server0 配置以下静态地址参数
– 主机名:server0.example.com
[root@server0 ~]# vim /etc/hostname
– IP地址:172.25.0.11
– 子 掩码:255.255.255.0
– 默认 关:172.25.0.254
[root@server0 ~]# nmcli connection modify ‘System eth0’ ipv4.method manual ipv4.addresses ‘172.25.0.11/24 172.25.0.254’ connection.autoconnect yes
[root@server0 ~]# nmcli connection up ‘System eth0’
– DNS服务器:172.25.254.254
[root@server0 ~]# vim /etc/resolv.conf
nameserver 172.25.254.254
案例2:为虚拟机 desktop0 配置以下静态地址参数
– 主机名:desktop0.example.com
– IP地址:172.25.0.10
– 子 掩码:255.255.255.0
– 默认 关:172.25.0.254
[root@desktop0 ~]# nmcli connection modify ‘System eth0’ ipv4.method manual ipv4.addresses ‘172.25.0.10/24 172.25.0.254’ connection.autoconnect yes
[root@desktop0 ~]# nmcli connection up ‘System eth0’
– DNS服务器:172.25.254.254
[root@desktop0 ~]# nslookup desktop0.example.com
案例3:指定yum软件源
为 server0 指定可用的 yum 软件源
– YUM软件库的地址为 http://classroom.example.com/content/rhel7.0/x86_64/dvd
– 将此配置为虚拟机 server0 的默认软件仓库
– 确认可用的仓库列表
[root@server0 ~]# vim /etc/yum.repos.d/dvd.repo
[root@server0 ~]# yum repolist
– 利用yum仓库安装httpd与vsftpd
[root@server0 ~]# yum -y install httpd
[root@server0 ~]# yum -y install vsftpd
案例4:指定yum软件源
为 desktop0 指定可用的 yum 软件源
– YUM软件库的地址为 http://classroom.example.com/content/rhel7.0/x86_64/dvd
– 将此配置为虚拟机 server0 的默认软件仓库
– 确认可用的仓库列表
[root@desktop0 ~]# vim /etc/yum.repos.d/dvd.repo
[rhel]
name=rhel
baseurl=http://classroom.example.com/content/rhel7.0/x86_64/dvd
#设置该文件为可用状态
enabled=1
#不检查签名
gpgcheck=0
[root@desktop0 ~]# yum repolist
– 利用yum仓库安装httpd与vsftpd
[root@server0 ~]# yum -y install httpd
[root@server0 ~]# yum -y install vsftpd
案例5:虚拟机 server0上操作,复制、粘贴、移动
以root用户新建/nsddir/目录,在此目录下新建readme.txt文件,并进一步完成下列操作
1)将“I love Linux”写入到文件readme.txt
[root@server0 nsddir]# vim readme.txt
2)将readme.txt重命名为mylove.txt
[root@server0 nsddir]# mv readme.txt mylove.txt
3)将/etc/passwd、/boot、/etc/group同时拷贝到/nsddir目录下
[root@server0 nsddir]# cp -r /etc/passwd /boot/ /etc/group /nsddir/
4)将ifconfig命令的前两行内容,追加写入mylove.txt
[root@server0 nsddir]# ifconfig | head -2 >> mylove.txt
5)创建/etc/hostname文件
[root@server0 nsddir]# vim /etc/hostname
6)将主机名永久配置文件,拷贝到/nsddir目录下
[root@server0 nsddir]# cp /etc/hostname /nsddir/
7)将DNS永久配置文件,拷贝到/nsddir目录下
[root@server0 nsddir]# cp /etc/resolv.conf /nsddir/
2. 在目录/nsd/test创建文件nsd.txt并写入内容 NSD Student
[root@server0 test]# vim nsd.txt
3. 将/nsd/test/nsd.txt文件复制到/root目录下,同时 改名为 tedu.txt
[root@server0 test]# cp /nsd/test/nsd.txt /root/tedu.txt
4. 利用vim 修改文件/etc/hostname将其原有内容全部删除,写入新的内容为server0.example.com
[root@server0 ~]# vim /etc/hostname
5. 将/etc/passwd 、/etc/resolv.conf、/etc/hostname 同时拷贝到/nsd/test/目录下
[root@server0 ~]# cp -r /etc/passwd /etc/resolv.conf /etc/ hostname /nsd/test/
6. 将文件 /nsd/test/hostname 重改名为 hn.txt
[root@server0 test]# mv hostname hn.txt
7. 创建目录结构/nsd/test/kernel
[root@server0 test]# mkdir /nsd/test/kernel
8. 将目录 /boot内容中以 vm 开头的 复制到/nsd/test/kernel目录下
[root@server0 test]# find /boot/vm* -exec cp -r {} /nsd/test/kernel/ ;
案例6:虚拟机 server0上操作,查找并处理文件
– 利用find查找所有用户 student 拥有的文件,把它们拷贝到 /root/findfiles/ 文件夹中
[root@server0 ~]# mkdir /root/findfiles
[root@server0 ~]# find / -user student -type f -exec cp {} /root/findfiles ;
– 利用find查找/boot目录下大于10M并且必须是文件,拷贝到/opt
[root@server0 findfiles]# find /boot/ -size +10M -type f -exec cp {} /opt/ ;
– 利用find查找/boot/ 目录下以 vm 开头且必须是文件,拷贝到/opt
[root@server0 opt]# find /boot/vm* -type f -exec cp {} /opt/ ;
– 利用find查找/etc 目录下,以 tab 作为结尾的 必须是文件
[root@server0 opt]# find /etc/*tab -type f
案例7:虚拟机 server0上操作,查找并提取文件内容
1.在文件 /usr/share/dict/words 中查找到所有包含字符串 seismic 的行,将输出信息,写入到/opt/nsd.txt
[root@server0 opt]# grep ‘seismic’ /usr/share/dict/words >> /opt/nsd.txt
2.将/etc/login.defs文件以“#”开头的内容 写入到/root/login.txt
[root@server0 opt]# grep ‘^#’ /etc/login.defs >> /root/login.txt
3.提取/etc/passwd以root开头的行,将其信息写入/opt/admin.txt
[root@server0 opt]# grep ‘^root’ /etc/passwd >> /opt/admin.txt
案例8:虚拟机 server0上操作,tar制作/释放归档压缩包(zcf、ztf、zxf、jcf、jtf、jxf、cf、tf)
1)备份/boot、/home这两个文件夹,保存为boothome.tar.gz文件
[root@server0 ~]# tar -zcf boothome.tar.gz /boot/ /home/
2)查看boothome.tar.gz文件内包含哪些内容
[root@server0 ~]# tar tf boothome.tar.gz
3)将boothome.tar.gz释放到文件夹/root/boothome/下
[root@server0 ~]# tar -xf boothome.tar.gz -C /root/boothome
4)创建一个名为 /root/backup.tar.bz2 的归档文件,其中包含 /usr/local 目录中的内容
[root@server0 ~]# tar -jcf /root/backup.tar.bz2 /usr/local/
案例9:虚拟机 server0上操作
新建用户 alex,其用户ID为3456,密码是flectrag
[root@server0 ~]# useradd -u 3456 alex
[root@server0 ~]# passwd alex
创建下列用户、组以及组的成员关系:
– 一个名为 adminuser 的组
[root@server0 ~]# groupadd adminuser
– 一个名为 natasha 的用户,其属于 adminuser 组, 这个组是该用户的从属组
[root@server0 ~]# useradd natasha
[root@server0 ~]# gpasswd -a natasha adminuser
– 一个名为 harry 的用户,其属于 adminuser 组,这个 组是该用户的从属组
[root@server0 ~]# useradd harry
[root@server0 ~]# gpasswd -a harry adminuser
– 一个名为 sarah 的用户,其在系统中没有可交互的 Shell(/sbin/nologin),并且不是 adminuser 组的成员
[root@server0 ~]# useradd -s /sbin/nologin sarah
– natasha 、harry、sarah 的密码都要设置为 flectra
[root@server0 ~]# echo flectra | passwd –stdin natasha
[root@server0 ~]# echo flectra | passwd –stdin harry
[root@server0 ~]# echo flectra | passwd –stdin sarah
– 创建zhangsan用户
– 创建lisi用户
– 创建tarena组
[root@server0 home]# groupadd tarena
案例10:虚拟机 server0上操作
为用户 natasha 配置一个定时任务
– 每天在本地时间 14:23 执行
– 需要完成的任务操作为 /bin/echo hiya
[root@server0 home]# crontab -e (设置计时器)
23 14 * * * /bin/echo hiya
案例11:chown归属设置
1)新建/tarena1目录
a)将属主设为gelin01,属组设为tarena组
[root@server0 home]# chown gelin01:tarena /tarena1/
b)使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限
drwxr-xr-x. 2 gelin01 tarena 6 3月 22 17:45 /tarena1/
2)使用户gelin02能进入、查看/tarena1文件夹(提示:将gelin02加入所属组)
[root@server0 home]# gpasswd -a gelin02 tarena
3)新建/tarena2目录
a)将属组设为tarena
b)使tarena组的任何用户都能在此目录下创建、删除文件
[root@server0 home]# chown :tarena /tarena2/
[root@server0 home]# chmod g+w /tarena2/
4)新建/tarena/public目录
a)使任何用户对此目录都有rwx权限
b)拒绝zhangsan进入此目录,对此目录无任何权限
[root@server0 home]# chmod o+w /tarena/public/
[root@server0 home]# setfacl -m u:zhangsan:— /tarena/public/
案例12:权限设置
1、创建文件夹/data/test,设置目录的访问权限,使所有者和所属组具备读写执行的权限;其他人无任何权限。
[root@server0 home]# chmod g+w /data/test/
2、递归修改文件夹/data/test的归属使所有者为zhangsan,所属组为tarena。
[root@server0 home]# chown -R zhangsan:tarena /data/test/
3、请实现在test目录下,新建的所有子文件或目录的所属组都会是tarena。
[root@server0 home]# chmod g+s /data/test/
4、为lisi创建ACL访问权限,使得lisi可以查看/etc/shadow文件
[root@server0 home]# setfacl -m u:lisi:r– /etc/shadow
案例13:虚拟机 server0上操作,绑定到LDAP验证服务
– 使用系统 classroom.example.com 提供的LDAP服务
– 验证服务的基本DN是:dc=example,dc=com
– 账户信息和验证信息都是由 LDAP 提供的
– 连接要使用证书加密,证书可以在下面的链接下载:
http://classroom.example.com/pub/example-ca.crt
– 确认本地可以识别ldapuser10用户
1.yum install sssd
2.[root@server0 home]# yum -y install authconfig-gtk
3.authconfig-gtk
选择LDAP
dc=example,dc=com #指定服务端域名
classroom.example.com #指定服务端主机名
勾选TLS加密
使用证书加密: http://classroom.example.com/pub/example-ca.crt
选择LDAP密码
4.[root@server0 home]# systemctl restart sssd
[root@server0 home]# id ldapuser10
案例14:虚拟机 server0上操作,访问NFS共享
– 查看classroom.example.com的NFS共享
showmount -e classroom.example.com
– 将classroom.example.com的NFS共享目录,挂载到本地/home/guests
[root@server0 home]# mkdir /home/guests
[root@server0 home]# mount classroom.example.com:home/guests /home/guests/
案例15:虚拟机 server0上操作,(MBR分区模式)规划分区
添加一块70G的硬盘并规划分区:
划分2个10G的主分区;
1个12G的主分区
2个10G的逻辑分区。
[root@server0 ~]# fdisk /dev/vdc
n 创建新的分区—–>回车—–>回车—->回车—–>在last结束时 +10G
p 查看分区表
w 保存并退出
[root@server0 ~]# lsblk
案例16:在server上操作,分区使用
1、案例15中新添加70G硬盘的第二个逻辑分区
– 格式化成xfs分区,实现该分区开机自动挂载/mnt/xpart
[root@server0 ~]# mkfs.xfs /dev/vdc6
[root@server0 ~]# vim /etc/fstab
[root@server0 ~]# mount -a
[root@server0 ~]# df -h
2、案例15中新添加70G硬盘的第一个逻辑分区
– 完成开机自动挂载,挂载点/mnt/mypart,文件系统为ext4
[root@server0 ~]# mkfs.ext4 /dev/vdc5
[root@server0 ~]# blkid /dev/vdc5
[root@server0 ~]# vim /etc/fstab
[root@server0 ~]# mkdir /mnt/mypart
[root@server0 ~]# mount -a
[root@server0 ~]# df -h
案例17:虚拟机 server0操作,构建 LVM 存储
– 新建一个名为 systemvg 的卷组
[root@server0 ~]# vgcreate systemvg /dev/vdc1
– 在此卷组中创建一个名为 vo 的逻辑卷,大小为8G
[root@server0 ~]# lvcreate -L 8G -n vo systemvg
– 将逻辑卷 vo 格式化为 xfs 文件系统
[root@server0 ~]# mkfs.xfs /dev/systemvg/vo
– 将逻辑卷 vo 挂载到 /vo 目录,并在此目录下建立一个测试文件 votest.txt,内容为“I AM KING.”
– 实现逻辑卷vo开机自动挂载到/vo
[root@server0 ~]# vim /etc/fstab
/dev/systemvg/vo /vo xfs defaults 0 0
[root@server0 vo]# vim votest.txt
案例18:虚拟机 server0操作,构建 LVM 存储(修改PE大小)
– 在 datastore 卷组中的所有逻辑卷,其PE的大小为1M
[root@server0 vo]# vgcreate -s 1M datastore /dev/vdc2
[root@server0 vo]# vgdisplay datastore
– 新的逻辑卷命名为 database,其大小为50个PE的大小,属于 datastore 卷组
[root@server0 vo]# lvcreate -l 50 -n database datastore
– 使用 EXT3 文件系统对逻辑卷 database 格式化,此逻辑卷应该在开机时自动挂载到 /mnt/database 目录
[root@server0 vo]# mkfs.ext3 /dev/datastore/database
[root@server0 vo]# vim /etc/fstab
[root@server0 vo]# mkdir /mnt/database
[root@server0 vo]# mount -a
[root@server0 vo]# df -h
案例19:在在 server0、desktop0 上操作
– 将防火墙默认区域设置为trusted
[root@server0 ~]# firewall-cmd –set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd –set-default-zone=trusted
案例21:在server上操作,搭建mariadb数据库系统
1. 在 server0 上安装 MariaDB 数据库系统
1)安装 mariadb-server软件包
[root@server0 ~]# yum -y install mariadb-server.x86_64
2)启动 mariadb 服务
[root@server0 ~]# systemctl restart mariadb
[root@server0 ~]# systemctl enable mariadb
案例22:配置聚合连接
在两个虚拟机之间配置一个链路,要求如下:
– 此链路使用接口 eth1 和 eth2
– 此链路在其中一个接口失效时仍然能工作
– 此链路在 server0 上使用下面的地址 172.16.3.20/255.255.255.0
1.创建虚拟 卡
[root@server0 ~]# nmcli connection add type team con-name team0 ifname team0 autoconnect yes config ‘{“runner”: {“name”: “activebackup”}}’
2.创建两个奴隶
[root@server0 ~]# nmcli connection add type team-slave con-name team0-1 ifname eth1 master team0
[root@server0 ~]# nmcli connection add type team-slave con-name team0-2 ifname eth2 master team0
3.修改虚拟 卡的IP地址
[root@server0 ~]# nmcli connection modify team0 ipv4.method manual ipv4.addresses 172.16.3.20/24 connection.autoconnect yes
5.激活虚拟 卡和奴隶
[root@server0 ~]# nmcli connection up team0
[root@server0 ~]# nmcli connection up team0-1
[root@server0 ~]# nmcli connection up team0-2
6.验证
[root@server0 ~]# teamdctl team0 state
– 此链路在 desktop0 上使用下面的地址 172.16.3.25/255.255.255.0
同上
– 此链路在系统重启之后依然保持正常状态
扩展案例23:在server上操作,验证端口转发策略
– 从desktop0上访问server0的5423端口,与访问server0的80端口效果一样
[root@server0 ~]# firewall-cmd –zone=public –add-forward-port=port=5423:proto=tcp:toport=80
[root@desktop0 ~]# firefox 172.25.0.11:5423
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!