执行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 on2. 配置LDAP用户可以通过Kerberos身份验证进行登录,并在登录时自动挂载自己的主目录。参考答案: 详细的参考EXAM-4,上面关于ldap的有详细的做法,就是图形界面设置authentication method 的时候,要选择kerberos认证。还有就是ssh ldapuser1@localhost登录的密码改变了,由之前的ldap的password 改为kerberos。3. 在您的虚拟机与宿主机上建立GPG加密环境,要求可以双向加密解密文件。 在虚拟机上:(student)(1) gpg --gen-key <Enter> <Enter> <Enter> y Real name: sushan Email address: 997365139@qq.com Comment: test o xhost + (如果你以root身份登录的你的主机,而你现在以student身份产生key,那么你需要把x桌面共享出来,就用xhost +x) (2)gpg -a -o ~/sushantest.key --export 2879117B (导出公钥) (3) scp ~/sushantest.key student@192.168.0.27: 以上这些全是从虚拟机上即服务器上执行的。 在真机上: (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 student@192.168.0.127: 传给服务器去解密去。 (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=yesvi /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 = 16. 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 ……….rpm8. 创建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