########第二本书#######


#######unit自动安装#####


###1.kickstart脚本#####

kickstart脚本是自动应答系统在安装过程中一切问题的脚本文件

在这个文件可以实现系统的自动安装

在系统安装完毕后会在系统的root家目录中生成

anaconda-ks.cfg这个文件就是以此系统为模板生成的kickstart脚本


#####2.kickstart脚本的制作#####

手动编写kickstart的难度很大

系统中system-config-kickstart工具可以用图形的方式制作kickstart


yum install system-config-kickstart -y ##安装图形制作工具

system-config-kickstart ##打开图形ks制作工具

ksvalidator ks.cfg ##检测ks语法



####3.kickstart文件共享####

yum install httpd -y

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl start httpd

systemctl enable httpd

cp ks.cfg /var/www/html


####4.测试#####

[root@foundation7 Desktop]#virt-install \

> --name vmname(虚拟机名字) \

> --ram 800 \

> --file /var/lib/libvirt/p_w_picpaths/vmname(虚拟机名字)qcow2 \

> --file-size 8 \

> --location ftp://172.25.254.250/pub/rhel7.2 \

> --extra-args "ks=http://172.25.254.107/ks.cfg" &  ##文件的地址ip



###附加pxe网络安装服务####

1.相应软件安装

yum install dhcp tftp-server syslinux httpd xinetd.x86_64 -y

systemctl stop firewalld.service

systemctl disable firewalld.service

vim /etc/xinetd.d/tftp

[ disable = yes ] =====> [ disable = no ]

systemctl restart xinetd

systemctl start httpd

systemctl enable httpd


2.必须文件的下载复制

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

把安装镜像中的isolinux/* 全部复制到 /var/lib/tftpboot/

mkdir /var/lib/tftpboot /pxelinux.cfg

cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

@@注意: 此处一定要放在/var/lib/tftpboot/pxelinux.cfg/default下,只有在这个目录文件下,才会被识别。



3.dhcp服务的配置

subnet 172.25.254.0 netmask 255.255.255.0 {

  range 172.25.254.200 172.25.254.220;

  option routers 172.25.254.254;

  filename "pxelinux.0";            ##[所用到的文件]

  next-server 172.25.254.107;       ##[文件地址的ip]

}


#####unit2.用户权限列表####


##1.权限列表的定义###

指定特定用户对某个文件有特殊权限的记录表格


##2.权限列表的识别###

-rw-r--r--. 1 root root      188 Oct 29 13:49 1 ##权限位是.权限列表未激活

-rw-r--r--+ 1 root root        0 Oct 26 16:57 file1 ##权限位是+权限列表开启


##3.权限列表的查看###

getfacl file

# file: file1 ##文件名称

# owner: root ##文件所有人

# group: root ##文件所有组

user::rw- ##文件所有人权限

user:test:rw- ##特殊指定用户权限

group::r-- ##组权限

mask::r-- ##权限阀值

other::r-- ##其他人权限


##4.如何设定acl列表##

setfacl -m u:username:权限(如:rwx)  filename

例:setfacl -m u:test:rw  file ##指定test用户对file文件可读写


##5.mask权限阀值##

如果对有权限列表的文件执行chmod很可能会修改该权限列表中的mask

mask位特殊用户能够获得到的最大权限值

setfacl -m m:权限(如:rwx) ##修改该mask的值


[root@foundation7 mnt]# setfacl -m u:kiosk:rwx file

[root@foundation7 mnt]# chmod 644 file

[root@foundation7 mnt]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:kiosk:rwx #effective:r--

group::r--

mask::r--

other::r--

@@!!!注意:当用chmod修改文件权限之后,若chmod中给的权限小于mask的值时,会出现正上方的#effectiver:r--语句。例子如上!!!


###6.默认权限###

当我们需要在指定目录中新建文件或目录都对指定用户有特殊权限时设定

setfacl -m d:u:username:权限 filename


例如:

[root@foundation7 lzt]# touch nihao/kk

[root@foundation7 lzt]# getfacl nihao/

# file: nihao/

# owner: root

# group: root

user::rwx

user:kiosk:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:kiosk:rwx

default:group::r-x

default:mask::rwx

default:other::r-x


[root@foundation7 lzt]# getfacl nihao/kk

# file: nihao/kk

# owner: root

# group: root

user::rw-

user:kiosk:rwx #effective:rw-

group::r-x #effective:r--

mask::rw-

other::r--


默认权限对已有文件不生效

例如:

[root@foundation7 ~]# cd /lzt/

[root@foundation7 lzt]# ls

file1  file2  file3  lp

[root@foundation7 lzt]# setfacl -m d:u:kiosk:rwx /lzt

[root@foundation7 lzt]# getfacl /lzt/lp/

getfacl: Removing leading '/' from absolute path names

# file: lzt/lp/

# owner: root

# group: root

user::rwx

group::r-x

other::r-x


默认权限对目录本身不生效

例如:

[root@foundation7 lzt]# getfacl /lzt/

getfacl: Removing leading '/' from absolute path names

# file: lzt/

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

default:user::rwx

default:user:kiosk:rwx

default:group::r-x

default:mask::rwx

default:other::r-x



####unit3.系统延迟及定时机制###


##1.at延时任务##

at time

at> 动作

at>ctrl + d

at> <EOT>


at -l

atrm 任务号

当执行动作有输出时

输出内容会以邮件的形式发送给任务的发起人

[root@foundation7 mnt]# mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/spool/mail/kiosk": 1 message 1 new

>N  1 root                  Sun Oct 30 14:11  14/554   "Output from your job "

& 1

Message  1: ##回复mail编号

From root@foundation7.ilt.example.com  Sun Oct 30 14:11:02 2016

Return-Path: <root@foundation7.ilt.example.com>

X-Original-To: kiosk

Delivered-To: kiosk@foundation7.ilt.example.com

Subject: Output from your job        2

To: kiosk@foundation7.ilt.example.com

Date: Sun, 30 Oct 2016 14:11:02 +0800 (CST)

From: root@foundation7.ilt.example.com (root)

Status: R


hello world


& q

Held 1 message in /var/spool/mail/kiosk

[root@foundation7 mnt]# echo > /var/spool/mail/kiosk ##清空日志

You have new mail in /var/spool/mail/kiosk

[root@foundation7 mnt]# mail

No mail for kiosk


at用户的黑白名单

/etc/at.deny ##默认存在并生效

/etc/at.allow ##默认不存在,一旦存在,/etc/at.deny失效


#####2.系统定时/定期任务###

命令方式发起:

crontab -u username -e

@@!!!注意:普通用户执行不能使用-u,即,执行crontab -e


MM hh dd mm ww

mm/2 ##每隔两分钟

hh-hh ##几点到几点

hh1,hh2 ##几点和几点


!!!可通过cat /etc/crontab查看具体用法

结果如下:

 SHELL=/bin/bash                                                             

 PATH=/sbin:/bin:/usr/sbin:/usr/bin

 MAILTO=root

 

 # For details see man 4 crontabs

 

 # Example of job definition:

 # .---------------- minute (0 - 59)

 # |  .------------- hour (0 - 23)

 # |  |  .---------- day of month (1 - 31)

 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,t    hu,fri,sat

 # |  |  |  |  |

 # *  *  *  *  * user-name  command to be executed

                                              


crontab -l ##查看当前的任务

crontab -u username -r ##删除当前username用户的任务(所有任务)


文件的方式发起

vim /etc/cron.d/filename

MM hh dd mm ww USERNAME  动作


echo 'MM hh dd mm ww USERNAME 动作' > /etc/cron.d/filename



crontab用户的黑白名单(效果同at用户的黑白名单)

/etc/cron.deny ##默认存在并生效

/etc/cron.allow ##默认不存在,一旦存在,/etc/cron.deny失效


###3.系统临时文件的管理###

vim /usr/lib/tmpfiles.d/xxxx.conf

type filename perm   user  group  time

d /mnt/westos 1777 root  root   10s


systemd-tmpfiles --create /usr/lib/tmpfiles.d/xxxx.conf ##读取相应配置文件,使之成为临时文件

systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/xxxx.conf ##执行编写的文件


例如:vim /usr/lib/tmpfiles.d/westos.conf

内容为: d  /mnt/wetos   1777  root  root  10s

退出保存后执行:

systemd-tmpfiles --create /usr/lib/tmpfiles.d/xxxx.conf

touch /mnt/westos/file

systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/xxxx.conf 

可以发现在最短保存时间内执行systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/xxxx.conf操作无效