执行lab-resetvm还原虚拟机,以下所有操作均在虚拟机上完成:
1. 添加用户bob、leo和jack,他们不在同一个组,可以使用sudo只运行service和chkconfig命令,而无需提供密码。
参考答案:
useradd bob
useradd leo
useradd jack
并分别设置好密码;
visudo
User_Alias WESTOS = bob,leo,jack
Cmnd_Alias COMMAND = /sbin/service,/sbin/chkconfig
WESTOS ALL = NOPASSWD:COMMAND
测试:
su bob
sudo service httpd restart
sudo chkconfig --level 3 vsftpd on
2. 配置LDAP用户可以通过Kerberos身份验证进行登录,并在登录时自动挂载自己的主目录。
参考答案: 详细的参考EXAM-4,上面关于ldap的有详细的做法,就是图形界面设置authentication method 的时候,要选择kerberos认证。还有就是ssh ldapuser1@localhost登录的密码改变了,由之前的ldap的password 改为kerberos。
3. 在您的虚拟机与宿主机上建立GPG加密环境,要求可以双向加密解密文件。
在虚拟机上:(student)
(1) gpg --gen-key



y
Real name: sushan
Email address: [email protected]
Comment: test
o
xhost + (如果你以root身份登录的你的主机,而你现在以student身份产生key,那么你需要把x桌面共享出来,就用xhost +x)
(2)gpg -a -o ~/sushantest.key --export 2879117B (导出公钥)
(3) scp ~/sushantest.key [email protected]:
以上这些全是从虚拟机上即服务器上执行的。
在真机上:
(4) gpg --import sushantest.key (将公钥导入本地计算机)
(5) echo `date`> test.key
(6) gpg --encrypt -r 428DF23D test.txt (加密本地文件)
(7) gpg --encrypt --armor -r 428DF23D test.txt
(8) scp test.txt.asc [email protected]:
传给服务器去解密去。
(9) gpg --decrypt test.txt.asc
即可查看你在加密文件中的内容。
注意:以上只是实现了从虚拟机产生密钥传给真机,应该还有一部分从真机到虚拟机的部分,由于类似。这里不再赘述了。
4. 添加一块虚拟网卡,配置主备模式以太网绑定。
vi /etc/sysconfig/network-script/ifcfg-bond0
DEVICE=”bond0“
BOOTPROTO=“none”
IPADDR=“10.1.1.250“
PREFIX=24
USERCTL=no
ONBOOT=yes
vi /etc/sysconfig/network-script/ifcfg-eth0
DEVICE=”eth0“
BOOTPROTO=“none”
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes

vi /etc/sysconfig/network-script/ifcfg-eth1
DEVICE=”eth1“
BOOTPROTO=“none”
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
添加一个网卡: 网络-> virtio

vi /etc/modprobe.d/bonding.conf
alias bond0 bonding

vi /etc/rc.d/rc.local
ifenslave bond0 eth0 eth1

reboot
cat /proc/net/bonding/bond0
即可查看当前活跃的网卡,假如当前活跃的是eth0,你ifdown eth0 之后,eth1会自动启动!
5. 开启内核路由功能,永久生效。
参考答案:
vi /etc/sysctlconf
将 net.ipv4.ip_forward = 1
6. sam要编写一个脚本,要求如下:
1)如果提供的参数不够,则将显示以下使用语法:
usage: ./samreport.sh directories...
2)当执行以下内容:
$ ./samreport.sh Desktop Documents .bashrc
脚本将提示用户输入名称:
who is this report for?
之后,如果输入“jim”,则脚本的输出内容应为:
$am's Report
Desktop: is not empty
Documents: is empty
.bashrc: is not a directory
___generated for jim___
3)Sam很挑剔,要求输出必须与上面的内容完全一致,包括Sam中字母S是用美元符号表示的。还有页脚因该是三条下划线+页脚消息+三条下划线。

参考答案:

#!/bin/bash
if [ $# = 0 ]; then
echo "usage: $0 directories..."
exit
fi
read -p "who is this report for? " user
echo "\$am's Report"
for i in $*
do
if [ ! -d $i ]; then
echo " $i: is not a directory"
elif [ `ls -a $i | wc -l` != 2 ]; then
echo " $i: is not empty"
else
echo " $i: is empty"
fi
done
echo ___generated for ${user}____
7. 把上面您编写的samreport.sh脚本制作成rpm包,要求如下:
1) 安装路径为/usr/local/bin,权限为0755。
2)需要gpg签名。
3)把以下内容作为安装后执行的脚本,提示:%post宏定义的是安装后执行的脚本程序。
cat << EOF > /etc/yum.repos.d/samreport.repo
[report]
name=samreport.sh
baseurl=http://serverX.example.com/repo
enabled=1
gpgcheck=1
gpgkey=http://serverX.example.com/repo/RPM-KEY-samreport
EOF
4)rpm包卸载的时候,需要删除%post宏中设置的内容,提示:%postun宏定义卸载后所要执行的脚本程序。
参考答案:
gpg –gen-key
gpg –a –o ~/RPM_GPG_KEY_student –export 859FAB80
echo ‘%_gpg_name 859FAB80’> ~/.rpmmacros

首先确保你的电脑安装了rpm-build
将编写的samreport.sh文件(假如你发行的版本号为1.0,那么你建立一个samreport-1.0的文件,)然后mv samreport.sh samreport-1.0目录下,然后压缩:tar zcf samreport.tar.gz samreport-1.0
然后 cp samreport-1.0 ~/rpmbuild/SOURES/
创建SEPC文件,vim samreport.spec
设定安装路径为/usr/local/bin,权限为0755。
%post宏定义的是安装后执行的脚本程序。写入:
cat << EOF > /etc/yum.repos.d/samreport.repo
[report]
name=samreport.sh
baseurl=http://serverX.example.com/repo
enabled=1
gpgcheck=1
gpgkey=http://serverX.example.com/repo/RPM-KEY-samreport
EOF
%postun宏定义卸载后所要执行的脚本 rm –rf /etc/yum.repos.d/samreport.repo

写完spec文件之后,将写好的spec文件移动到 ~/rpmbuild/SPEC
cd ~/rpmbuild/SPEC
(倘若没有已经安装了rpmbuild这个包,但是没有rpmbuild这个目录,那么你需要用命令rpmbuild / 即可)
rpmbuild -ba --sign test.spec (构建和签署软件包,用GPG签名)
这样之后在/rpmbuild/SOURCE下面产生了RPM包。
测试:
Rpm --import /home/student/RPM_GPG_KEY-studet(假设gpg产生的gpg公钥名字为RPM_GPG_KEY-studet)
Cd /home/student/rpmbuild/RPMS/x86-64/
Yum localinstall ……….rpm
8. 创建yum仓库,发布上面制作的rpm包,发布路径为http://serverX.example.com/repo,需要gpgkey路径为http://serverX.example.com/repo/RPM-KEY-samreport。
cp /home/student/rpmbuild/RPMS/x86-64/……rpm /var/www/html/repo
cp /home/student/RPM_GPG_KEY-student /var//var/www/html/repo
cd /home/student/rpmbuild/RPMS/x86-64/……rpm
createrepo .
/etc/init.d/httpd restart