centos 7 虚拟化支持:
   1、更高性能的KVM内核虚拟化支持
   2、嵌套虚拟化支持,可以在KVM中安装配置OpenStack
   3、继续支持作为虚拟机的Xen技术,但不再支持作为寄主机的Xen技术
   4、加强了对VMWARE的技术支持,自带open-vm-tools替换vm-tools
   5、RHEL 7 容器型(单独运行空间,有独立的进程列表、网络、文件系统、其他应用等。)虚拟化:支持最热的技术Docker

系统及服务管理程序修改为Systemd
防火墙命令变为firewalld
服务控制相关命令变为systemctl


控制服务和守护进程:
systemd简介:
    系统服务和服务器进程由systemd系统和服务管理器进行管理
功能:
    1、并行化功能,提高系统的启动速度
    2、按需启动守护进程,而不需要单独的服务
    3、自动服务依赖关系管理,可以防止时间超时(例如:网络不可用时不启动网络服务)

systemctl命令用于管理各种类型的systemd对象(也叫单元)。

[root@xiao~]# systemctl -t help          //查看systemd对象
[root@xiao~]# systemctl                  //查询所有对象的状态
[root@xiao~]# systemctl --type=service   //仅查询服务对象的状态
[root@xiao ~]# systemctl  status  sshd   //查询指定服务的状态,如 SSH 
[root@xiao ~]# systemctl  is-active  sshd    //查看服务是不是正在运行 
[root@xiao ~]# systemctl  is-enabled  sshd   //查看服务是不是设置为了开机启动 
[root@xiao ~]# systemctl  enable  sshd       //设置服务开机自动运行 
[root@xiao ~]# systemctl  disable  sshd      //设置服务开机不自动启动 
[root@xiao ~]# systemctl  start | stop | restart  sshd   启动、关闭、重启服务 


权限掩码:
    当我们登录系统之后创建一个文件总是有一个默认权限的,是因为umask设置了用户创建文件的默认权限.
    umask设置的是权限"补码",而chmod设置的是文件权限码。


总结:通过权限掩码为文件和目录设置默认权限。

例如:
目录:
[root@xiao ~]# umask 777
[root@xiao ~]# umask 
0777
[root@xiao ~]# mkdir /hehe
[root@xiao ~]# ll -d /hehe/
d---------. 2 root root 6 Jul  2 23:00 /hehe/

[root@xiao ~]# umask 000
[root@xiao ~]# mkdir /haha
[root@xiao ~]# ll -d /haha/
drwxrwxrwx. 2 root root 6 Jul  2 23:02 /haha/
 
文件:
[root@xiao ~]# umask 666
[root@xiao ~]# mkdir /xixi
[root@xiao ~]# ll -d /xixi/
d--x--x--x. 2 root root 6 Jul  2 23:04 /xixi/
[root@xiao ~]# touch /xixi/1.txt
[root@xiao ~]# ll -l /xixi/
----------. 1 root root 0 Jul  2 23:06 1.txt

[root@xiao ~]# umask 444
[root@xiao ~]# touch /xixi/2.txt
[root@xiao ~]# ll -l /xixi/
----------. 1 root root 0 Jul  2 23:07 1.txt
--w--w--w-. 1 root root 0 Jul  2 23:07 2.txt

方法:
umask是从权限中"拿走"相应的位。

注意:
对于文件来说,这个数字的最大值分别是6(原因文件创建时不能赋予执行权限)。
对于目录来说,这个数字的最大值分别是7。


调整服务优先级:
nice命令用来设置优先级,优先级的数值为-20~19,其中数值越小优先级越高,数值越大优先级越低,
-20的优先级最高,19的优先级最低。
需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户有权调整更高的优先权值(从-20~19)。

当调整之后的优先级小于-20时,以优先级-20来运行;当调整之后的优先级大于19时,以优先级19来运行

[root@xiao ~]# nice -n 5 httpd

如果不指定值。默认优先级为0
[root@xiao ~]# nice  httpd


文件和目录的特殊权限:
设置特殊权限命令:chmod 

1、Set位权限
   1) suid(用户Set位权限)
     作用:拥有与所有者一样的权限(以拥有文件的用户身份,而不是以运行文件的用户身份执行文件)
          用S表示:S(大):表示有r或w权限;s(小): 表示有x权限。
     例如:chmod u+s    file.txt

   2) sgid(组Set位权限)
      作用:拥有与所有者一样的权限(以拥有文件的组身份,而不是以运行文件的组份执行文件)
            用S表示:S(大):表示有r或w权限;s(小): 表示有x权限。
      例如:chmod g+s    file.txt

2、粘滞位权限
    作用:仅文件的所有者(和root)可以删除目录中的文件    
    总结:针对目录,防删除目录中的文件。
    用T表示:T(大):表示有r或w权限;t(小): 表示有x权限。

3、facl访问控制列表
命令:
getfacl:查询
setfacl:设置

命令格式:
setfacl -m   u/g:hehe:rwx  /dir
         |        |    |     |
       设置      用户 权限  目录

setfacl 参数
  -m:设置后续acl参数 
  -x:删除后续acl参数  
  -b:删除全部的acl参数
  -k:删除默认的acl参数
  -R:递归设置acl,包括子目录
  -d:设置默认acl    
  
  
selinux设置:
SELinux是一个额外的系统安全层,目的是防止已遭泄露的系统服务访问用户数据。
基于用户/组/权限的安全模型称为自由决定的访问控制
基于对象并更加复杂的规则控制称为强制访问控制

要允许远程匿名访问WEB服务器。必须打开防火墙端口,恶意人员则有机会通过安全漏洞***系统,继而取得用户和组的权限。
而SELinux是用于确定哪个进程可以访问那些文件、目录和端口的一组安全规则,
每个文件、进程和端口都具有特别的安全标签,称为SELinux上下文(是一个名称)。
SELinux策略使用上下文来确定某个进程能否访问文件、目录或端口,除非规则授予访问权限。
SELinux标签具有多种上下文:用户、角色、类型(和敏感度)。
目标策略会根据第三个上下文(即类型上下文)来制定自己的规则。类型上下文的名称通常以_t结尾。

1)system_u 指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。

2)object_r 一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。

3)type 文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。

4)s0:[MLS、MCS]:MCS负责对同类进程进行彼此区分,而MLS则允许一种进程拥有指向另一种进程的支配权限。(也就是说:MLS与MCS非常相似,但它为强制机制添加了"支配"这一概念。MCS标签必须在完全匹配的情况下才能通过,但一条MLS标签可以支配另一条MLS标签从而获得访问许可。)


例如:
httpd_sys_content_t	//文件和目录的类型上下文
httpd_port_t		//端口的类型上下文
tmp_t			//位于/tmp中的文件和目录的类型上下文。

1、查看安全上下文:
[root@yuan ~]# id		//可以查看用户的上下文
[root@yuan ~]# ls -dZ /var/www/html/
[root@yuan ~]# ls -dZ /tmp
[root@yuan ~]# ps -axZ
[root@yuan ~]# ps -ZC httpd
 

2、查看并设置SELinux模式
enforcing	//强制模式
permissive	//许可模式
disabled	//禁用模式

[root@yuan ~]# sestatus -v		//查看SELinux状态

1)临时设置
[root@yuan ~]# getenforce 

[root@yuan ~]# setenforce 0/1 
注:
0  代表permissive(许可模式)
1  代表enforcing(强制模式)
2)永久设置
[root@yuan ~]# vim /etc/selinux/config 
修改
SELINUX=enforcing|permissive|disabled
[root@yuan ~]# reboot	//重启生效


3、修改SELinux上下文
1)使用chcon命令
[root@yuan ~]#mkdir /www
[root@yuan ~]#ls -dZ /www		//查看默认的类型上下文
[root@yuan ~]# chcon -t httpd_sys_content_t /www/
[root@yuan ~]# ls -dZ /www/
注意:
子级文件和目录会继承父级目录的上下文
使用chcon设置后,系统重启之后,将会还原为默认的上下文
2)使用restorecon命令
[root@yuan ~]# restorecon -v /www/		//查看默认上下文
[root@yuan ~]# restorecon /www/		//使用此命令来设置默认上下文
[root@yuan ~]# ls -dZ /www/
3)
[root@yuan ~]#mkdir /www
[root@yuan ~]#touch /www/1.txt
[root@yuan ~]#touch /www/2.txt
[root@yuan ~]#ll -Z /www/
[root@yuan ~]#mv /www/* /var/www/html/
[root@yuan ~]#ls -Z /var/www/html/
[root@yuan ~]#ls -dZ /var/www/html/
[root@yuan ~]#semanage fcontext -l
[root@yuan ~]#semanage fcontext -l  | grep "/var/www/html"

[root@yuan ~]#restorecon -Rv /var/www/html/	//设置上下文

[root@yuan ~]#  semanage fcontext -a -t httpd_sys_content_t '/www/html(/.*)?'    //通过正则表达式匹配。




4、修改SELinux布尔值
SELinux布尔值是更改SELinux策略行为的开关,SELinux布尔值通过启用和禁用规则,来调整策略。
1)查看布尔值
[root@yuan ~]#getsebool -a
[root@yuan ~]#getsebool -a | grep "ftpd"
2)设置布尔值
[root@yuan ~]#setsebool ftpd_anon_write on  	//临时生效
[root@yuan ~]#setsebool -P allow_ftpd_anon_write=1  //永久生效

例:
安装SELINUX的工具包
[root@yuan ~]# rpm -ivh /media/policycoreutils-newrole-1.33.12-14.8.el5.i386.rpm 
以搭建vsftpd服务器为例,使用selinux。
[root@yuan ~]# rpm -ivh /media/vsftpd-2.0.5-16.el5_4.1.i386.rpm 
[root@yuan ~]# vim /etc/vsftpd/vsftpd.conf 
[root@yuan ~]# service vsftpd restart
[root@yuan ~]# chmod 777 pub/
[root@yuan ~]# getsebool -a | grep ftp
[root@yuan ~]# setsebool -P allow_ftpd_anon_write=1
[root@yuan ~]# chcon -t public_content_rw_t /var/ftp/pub/

centos7图形配置:
1、图形配置IP : nmtui 
2、图形配置防火墙 : firewall-config 
3、查看SElinux安全上下文
    semanage fcontext -l
    semanage fcontext -l  | grep httpd_sys
    semanage fcontext -l  | grep httpd_sys_con