标签归档:rhel

Linux 系统管理(EL7)-RPM(rpmbuild)篇

1  概述

1.1  功能介绍

RPM 是Redhat PackageManager,最早由RedHat公司制定实施,随后被GNU开源操作系统接受并成为很多Linux系统(RHEL)的既定软件标准。

1.2  工程依赖

本文工程依赖rpm-build软件。

2  环境搭建

2.1环境要求

2.2 环境搭建

1 安装软件

2 了解结构

3 src.rpm包组成

4 执行编译工作

2.3 配置文件

Spec脚本文件是rpm包组成的重要文件,其配置如下图所示:

查看marcros宏:

2.4 工程调试

工程调试运行时,可以在用户指定的环境目录下执行,如只需要构建src rpm包:

如果需要构建rpm的二进制代码和源码

2.5 其他事项

1、rpm包构建不建议在root环境下构建。
2、注意构建所需要的依赖关系

3、注意rpm编译过程的错误,前期主要是依赖关系,后期过程可能是一些测试错误,注意分析错误问题,让编译进行下去。

2.6 其他

描述项目研制过程中将采用的其他方面的内容。

Linux 系统管理(EL7)-SELinux篇

1  概述

1.1 功能介绍

SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。[1]

大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。

众所周知,标准的UNⅨ安全模型是”任意的访问控制”DAC。就是说,任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他!

而MAC情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。

SELinux提供了比传统的UNⅨ权限更好的访问控制。。

1.2 工程依赖

工程源仓库搭建

2 环境搭建

2.1环境要求

2.2 环境搭建

1 安装软件

2 解压策略包,配置文件目录

3 以getty为例

4 根据audit2allow 工具查找avc的deny信息 ,并修改文件

2.3生成二进制策略

使用工具生产二进制策略:

2.4 工程调试

使用semodule工具测试

开启selinux为permission状态,并根据audit的日志进行定位分析,如有阻止策略再次进行添加和生成测试工作。

2.5 其他事项

1、    avc的信息要全局分析
2、    多次测试和重启机器测试,如有socket通信,要进行通信测试。
3、    一些规则没有被审计出来,但一样denial了程序的运行,需要使用semoudle –DB 将那些dontaudit的测试去除。-D 表示构建审计dontaudit的规则,-B表示重新rebuild。
You can build the policy configuration with the “dontaudit” rules removed by running “semodule -DB”. This will expose any hidden denials. To build the policy configuration with the “dontaudit” rules re-insterted run “semodule -B”

2.6 其他

描述项目研制过程中将采用的其他方面的内容。

Linux 系统管理(EL7)-squashfs篇

1  概述

1.1   功能介绍

Squashfs(.sfs)是一套供Linux核心使用的GPL开源只读压缩文件系统。Squashfs能够为文件系统内的文件、inode及目录结构进行压缩,并支持最大1024千字节的区段,以提供更大的压缩比。

Squashfs的设计是专门为一般的只读文件系统的使用而设计,它可应用于数据备份,或是系统资源紧张的电脑上使用。最初版本的Squashfs采用 gzip 的数据压缩。版本 2.6.34 之后的Linux内核增加了对 LZMA和 LZO 压缩算法的支持,版本 2.6.38 的内核增加了对LZMA2的支持,该算法同时也是xz使用的压缩算法。

本文用到使用Squashfs制作的LiveCD技术,该技术将root文件系统保存在一个压缩过的文件系统文件中。这个文件可以使用环回的形式来挂载并对其中的文件进行访问。因为当进程需要某些文件,可以将它们解压,然后载入内存中使用。

本文暂时不介绍怎么制作LiveCD技术,而是介绍对LiveOS文件的操作。

1.2 工程依赖

Grub2-theme 依赖grub2的使用。

2  环境搭建

2.1 环境要求

2.2 环境搭建

1 安装软件包

2 解压LiveOS

2.3使用文件

压缩文件:

2.4工程调试

1、工程调试运行时需要启动安装程序,建议使用网络安装

2.5其他事项

1、系统压缩文件时,由于mksquashfs支持多种压缩算法,选用vmlinz可以支持的算法。如不清楚选用默认算法。

2.6 其他

描述项目研制过程中将采用的其他方面的内容。

Linux 系统管理(EL7)-Systemd篇

1 概述

1.1 功能介绍

systemd 是 Linux 下一个与 SysV 和 LSB 初始化脚本兼容的系统和服务管理器。systemd 使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略,保留了 Linux cgroups 的进程追踪功能,支持快照和系统状态恢复,维护挂载和自挂载点,实现了各服务间基于从属关系的一个更为精细的逻辑控制,拥有前卫的并行性能。systemd 无需经过任何修改便可以替代 sysvinit

1.2 工程依赖

无。

2 环境搭建

2.1 环境要求

2.2 环境搭建

1 systemd服务管理

2 开机模块加载

3 运行级别
第 3 运行级用 multi-user.target 替代。第 5 运行级用 graphical.target 替代。runlevel3.target 和 runlevel5.target 分别是指向 multi-user.target 和 graphical.target 的符号链接
你可以使用下面的命令切换到“运行级 3 ”:

默认切换到运行级 3 :

4 查看当前运行级别

2.3 使用文件

文件在里面rootfs.img的存储方式和结构 :

[unit]

unit是由一个与配置文件对应的名字和类型组成的(例如:avahi.service unit 有一个具有相同名字的配置文件,是守护进程 Avahi 的一个封装单元. 。unit 有以下几种类型:
service :守护进程的启动、停止、重启和重载是此类 unit 中最为明显的几个类型。
socket :此类 unit 封装系统和互联网中的一个 socket 。当下,systemd 支持流式、数据报和连续包的 AF_INET、AF_INET6、AF_UNIX socket 。也支持传统的 FIFOs 传输模式。每一个 socket unit 都有一个相应的服务 unit 。相应的服务在第一个“连接”进入 socket 或 FIFO 时就会启动(例如:nscd.socket 在有新连接后便启动 nscd.service)。
device :此类 unit 封装一个存在于 Linux 设备树中的设备。每一个使用 udev 规则标记的设备都将会在 systemd 中作为一个设备 unit 出现。udev 的属性设置可以作为配置设备 unit 依赖关系的配置源。
mount :此类 unit 封装系统结构层次中的一个挂载点。
automount :此类 unit 封装系统结构层次中的一个自挂载点。每一个自挂载 unit 对应一个已挂载的挂载 unit (需要在自挂载目录可以存取的情况下尽早挂载)。
target :此类 unit 为其他 unit 进行逻辑分组。它们本身实际上并不做什么,只是引用其他 unit 而已。这样便可以对 unit 做一个统一的控制。(例如:multi-user.target 相当于在传统使用 SysV 的系统中运行级别5);bluetooth.target 只有在蓝牙适配器可用的情况下才调用与蓝牙相关的服务,如:bluetooth 守护进程、obex 守护进程等)

snapshot :与 target unit 相似,快照本身不做什么,唯一的目的就是引用其他 unit 。

[service]
编写自定义的 service 文件时,可以选择几种不同的服务启动方式。启动方式可通过配置文件 [Service] 段中的 Type= 参数进行设置
Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

2.4 工程调试

工程调试运行时需要daemon-reload

2.5 其他事项

1、 启动过程使用journalctl –b进行定位错误。

2、 注意使用service的type类型。

2.6 其他

描述项目研制过程中将采用的其他方面的内容。

RHEL7 体验

RHEL7 你看到了什么?
当我们看到RHEL7的系统在RC版本的时候,就开始想下载试用一下。有幸在版本发布的前几天将最后版本下载下来了,现在当然也可以下载,但需要企业邮箱的用户才能下载,centos版本的做法是又git版本进行合并生成的。redhat收购了centos的第一个社区版本,目前还没有发布出来。

1 RHEL 安装:Anconda:选择了fedroa20的安装界面。版本提升了很多。

2 RHEL的启动过程,GURB选择了2.0版本,不是1.0版本也不是fedroa的1.99版本,使用了2.0版本

3 RHEL选的的启动内核?kernel 3.10版本的内核,该内核这个版本支持swap内存压缩可保证显著I/O并提高性能,采用NUMA的统一内存访问调度和分配,支持APIC(高级程序中断控制器)需求坏,支持全面的DynTick支持,将内核模块列入黑名单,kpatch动态内核补丁(技术预览)等,oracle的Ksplice技术所宣传的动态内核升级在rhel也有了。

4 RHEL启动的plymouth 还是延续el6的模式,只是版本提高了。

5 RHEL启动服务不在是sys V(不是V是罗马数字5),sys V从el5走到了el6,在el7最终还是被systemctl换了下来。

6 RHEL开机的firstboot的改动采用了fedroa的firstboot,只需要选择你的桌面语言和添加一个用户,就可以使用了。

7 RHEL采用的gnome桌面是3.0版本的,不过还不错,提供了docker。

8 RHEL采用的改进NetworkManager模块,进网络分组技术作为链路聚集的捆绑备用方法。支持可信网络标签了。

9 RHEL的默认文件系统采用了xfs,使用了LVM。使用LIO内核目标子系统,全力支持LVM快照,LVM精简配置功能能让LVM获得提升。支持XFS作为默认的文件系统,同时也提供ext4和btrfs。Btrfs提供预览版,ext4没有卷回和快照功能。

10 RHEL的lxc功能得到全面支持。可以看到其将cpu、mem等资源都做了容器虚拟化。

11 改进了KVM,用virtio-blk-data-plane提高块I/O性能(技术预览),支持PCI桥接,QEMU sandbox机制。

12 改进了SELinux,该selinux采用了fedroa20的策略机制,对虚拟化的支持得到扩展。

13 防火墙从iptables 改为了firewalld。fedroa15开始好像就采用了firewalld,动态加载策略,可以不用重启firewall了。但没有采用nftables这个防火墙模块,这个也不错。

14 加入DNSSEC域名系统安全扩展,附带OPENLMI用来管理Linux系统提供常用基础设施。

15 更好的支持AD域控了,没错是windows的AD域控。

16 其他
编译工具链,GCC4.8.x glibc 2.17 GDB 7.6.1
性能工具,perfmance Co-Pilot、SystemTap2.4 Valgrind 3.9.0等
编程:Ruby 2.0.0 Python 2.7.5 Java 7等
包含 Apache2.4 MariaDB 5.5 PostgreSQL 9.2等 (MariaDB 是mysql的替代产物,oracle收购mysql后,开源社区寻找的一个方案,使用和mysql相近)
引入Pacemaker 集群管理器,同时使用keepalived 和HAPorxy替换了负载均衡的程序的piranha
RHEL 7.0 支持64位的AMD/Intel IBM Power7/power8/System z等架构。(据说要舍弃x86的一些方向,走向x64架构)

17 license,恩,redhat又开始需要license了。

新的内核技术,KVM的支持加强,更强的文件系统读写,增强的网络服务,x64的强劲硬件(redhat的系统架构对64位支持的强化),对open vswicth的支持,以及ceph文件系统的支持。
还有待验证的更新是采用了新的kickstart技术,和samba采用3.0协议,这些还没有得到验证