马哥SRE课程第一周作业

一、图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?

1.1、总述

世界上的开源许可证,大概有上百种,很少有人搞得清楚它们的区别。今天,我们来说说最流行的六种:GPL、BSD、MIT、Mozilla、Apache和LGPL。

在这里插入图片描述

1.2、详细说明

1.BSD许可证(https://en.wikipedia.org/wiki/BSD_licenses)
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者、机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

2.MIT许可证(The MIT License | Open Source Initiative)
MIT是和BSD一样宽范的许可协议。你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。作者只想保留版权,而无任何其他了限制,较BSD协议宽松。

一般使用 MIT 授权的项目,需在源文件头部增加以下内容:

Copyright [yyyy] [name of copyright owner]. All rights reserved.

//[yyyy] 表示该源文件创建的年份。紧随其后的是 [name of copyright owner],即版权所有者。如果为个人项目,就写个人名称;若为团队项目,则宜写团队名称。

3.Apache许可证(http://www.apache.org/licenses/LICENSE-2.0)
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:

需要给代码的用户一份Apache Licence;
如果你修改了代码,需要再被修改的文件中说明。
在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

该许可证要求在所有的源文件中的头部放置以下内容才能算协议对该文件有效:

Copyright [yyyy] [name of copyright owner]

//[yyyy] 表示该源文件创建的年份。紧随其后的是 [name of copyright owner],即版权所有者。如果为个人项目,就写个人名称;若为团队项目,则宜写团队名称。

4.GPL许可证(How to use GNU licenses for your own software- GNU Project - Free Software Foundation)
1980,一个叫Richard Stallman的美国人因为无法容忍软件私有化,而建立了GPL许可证。他认为,软件的源代码是全人类的财富,应该允许程序员自由共享。

GPL许可证的核心含义是:允许任何人观看、修改,并散播程序软件里的原始程序码,条件是如果你要发布修改后的版本就要连源代码一起公布,不允许修改后和衍生的代码做为闭源的商业软件发布和销售。Linux就是采用了GPL协议,这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,即必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

5.LGPL许可证(GNU LGPL | Open Source Initiative)
LGPL 允许以动态链接使用开源库。采用LGPL的代码,一般情况下它本身就是一个第三方库(LGPL最早的名字就是Library GPL),这时候开发人员仅仅用到了它的功能,而没有对库本身进行任何修改,那么开发人员也不必公布自己的商业源代码。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须开源,并且采用LGPL协议。

6.Mozilla许可证(Internet for people, not profit — Mozilla)
Mozilla公共许可证(英语:Mozilla Public License,简称MPL) 允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。

1.3、总结

严格程度:MIT->BSD->Apache->LGPL->Mozilla->GPL

在这里插入图片描述

二、安装各发行版系统的安装(centos, rockylinux, ubuntu, 等)

2.1、安装rockylinux

2.1.1、Rocky Linux有Minimal、DVD、Boot镜像模式,本文使用的是最小化镜像Minimal作为测试。

在这里插入图片描述

2.1.2、Rocky Linux由于是CentOS的一个分支,它与CentOS 8安装过程基本差不多。我们使用ISO镜像成功引导系统后,会出现下面的界面,选择”Install Rocky Linux 8″,按下回车键Enter。

在这里插入图片描述
之后,我们将会看到一些启动信息,等待几分钟后,便能启动Rocky Linux的Anaconda安装程序。如下图:
在这里插入图片描述

2.1.3、接下来,我们可以在Rocky Linux欢迎页面,选择首选安装语言(如英文版),然后单击“Continue”按钮,继续下一步常规设置。

在这里插入图片描述

2.1.4、我们在安装摘要页面,可根据需要选择配置一些关键参数。这里主要分为Localization(本土化设置)、Software(软件)、System(系统)、User settings(用户设置)。我们可导航至SYSTEM部分,选择Installtion Destir安装位置,进入磁盘分区界面。

在这里插入图片描述

2.1.5、安装Rocky Linux之前可以对硬盘进行分区,默认情况下是自动分区,也可手动对硬盘分区,本文介绍的手动分区方法。在当前页面下,选择“Custom(自定义)”选项,并单击“Done”按钮。

在这里插入图片描述

要开始创建分区,请单击加( + )号,如下图所示:
在这里插入图片描述

指定/boot分区及其所需容量,点击“Add mount point”。
在这里插入图片描述
这样,新创建的/boot分区将会出现在分区表上,如图所示。

在这里插入图片描述
我们可参考创建的/boot分区的操作步骤,来依次创建/(root)分区及Swap挂载点,待所有分区创建完毕后,单击“Done”按钮,以保存在硬盘驱动器上所做的更改。

在这里插入图片描述
在出现的弹出警报中,单击“Accept Changes”按钮将分区写入磁盘。
在这里插入图片描述

2.1.6、网络和主机名设置是另一个重要的配置参数。我们在SYSTEM部分,选择网络和主机名。

在这里插入图片描述

然后在新弹出页面的右侧部分,点击打开与网络适配器-以太网相邻的开关。这样可确保系统使用来自路由器的DHCP协议动态选择IP地址。在最底部,指定主机名并单击“Apply”按钮。设置完毕后单击“Done”按钮进行保存。
在这里插入图片描述

2.1.7、接下来,我们再看下以root密码开头的“用户设置”,导航至“USER SETTINGS”部分,单击“Root Password”。

在这里插入图片描述

设置一个安全复杂的root密码并保存更改。
在这里插入图片描述

其他的参数设置,比如个性化、软件等部分可以根据需要进行相关操作,这里就不一一赘述了。待所有需要的设置都已经配置完毕。要在系统上启动 Rocky Linux 8 的安装,请单击“Begin Installation”。
在这里插入图片描述

2.1.8、Rocky Linux安装程序将首先写入硬盘驱动器上的所有分区,然后根据所选的基本环境开始安装所有必需的软件包。这个过程大约需要半小时左右,耐心等待即可。

在这里插入图片描述
安装完成后,系统会提示重新启动系统。待系统重启后,在GRUB菜单上,选择第一个选项以引导到Rocky Linux。
在这里插入图片描述
然后可进入到用户登录页面,填写之前创建的用户名及密码后便能成功登录到Rocky Linux。
在这里插入图片描述
到这里,我们便成功地安装并配置了Rocky Linux系统,接下来就可以使用该系统了。

2.2、安装ubuntu20.04 server

镜像下载

#可以去ubuntu官网下载指定版本的镜像
https://releases.ubuntu.com/20.04/

安装系统

2.2.1、选择语言

默认为英语即可
在这里插入图片描述

2.2.2、取消安装更新

在这里插入图片描述

2.2.3、选择键盘语言

在这里插入图片描述

2.2.4、配置ip,可以直接选择dhcp,这里选择配置静态ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.6、设置镜像源

使用阿里云: https://mirrors.aliyun.com/ubuntu/
在这里插入图片描述

2.2.7、磁盘配置,默认即可

在这里插入图片描述
在这里插入图片描述
格式化磁盘
在这里插入图片描述

2.2.8、设置用户名密码

在这里插入图片描述

2.2.9、设置ssh

选择不设置
在这里插入图片描述

2.2.10、服务安装

选择需要安装的服务
在这里插入图片描述

2.2.11、安装

在这里插入图片描述

2.2.12、安装更新

安装更新
如果网络不好,可以取消并重启,这里选择更新
在这里插入图片描述

2.2.13、更新完成,选择reboot

在这里插入图片描述

2.2.14、配置SSH登录

设置root密码
sudo passwd root

#配置root远程登录,切换root账户
su root 
#修改配置文件
vi /etc/ssh/sshd_config
#添加行并保存
PermitRootLogin yes 
#重启 ssh 服务
service ssh restart 

在这里插入图片描述
远程连接成功。

2.2.15、更新软件包

apt update # 检查需要更新的软件包,只检查不更新
apt list --upgradable # 列出需要更新的软件包
apt upgrade # 更新已安装的软件包

安装到此就结束了。

三、Linux中总结,1)如何通过一个简短的关键字,例如process 获取相关的命令。2)通过命令的描述,选择一个命令,获取命令的man文档。3)解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。<>, [] …等各代表什么含义。4)根据语法部分 简要的写几个操作。

在这里插入图片描述

帮助使用方法

type 查看命令是否是内置的命令,如果是用help
不是的话,开发者开发的二进制程序如果支持cmd -h |cmd --help也能看到
man man |man n package查看的详细描述手册用 rpm -ql package | whereis nginx看yum装完的服务帮助文档的具体位置

输入输出><符号使用

输出重定向
比如输入一条命令,默认行为是将结果输出到屏幕。但有时候我们需要将输出的结果保存到文件,就可以用重定向。
ps > ps.txt
< 表示的是输入重定向的意思,就是把<后面跟的文件取代键盘作为新的输入设备。
| 则表示一个管道的意思,可以理解为东西从管道的一边流向另外一边。
如:$ .cat < /etc/motd | ./a.out
命令意思就是说从/etc/motd文件中读取内容,然后把cat命令读取出来的内容作为后面一个命令 a.out的输入参数来执行a.out命令。

test[]命令使用方法

man test
在这里插入图片描述

四、切换到/etc/目录,列出fstab文件的详细信息,详细解决fstab一行,每个或每几个字符的详细含义。

  1. 第一列 Device 磁盘设备文件或者该设备的Label或者UUID
  2. 第二列 Mount point 设备的挂载点,就是你要挂载到哪个目录下。
  3. 第三列 filesystem 磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等
  4. 第四列 parameters 文件系统的参数
  5. 第五列:能否被dump备份命令作用
  6. 第六列 是否检验扇区

Async/sync
设置是否为同步方式运行,默认为async
auto/noauto
当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro
是否以以只读或者读写模式挂载
exec/noexec
限制此文件系统内是否能够进行"执行"的操作
user/nouser
是否允许用户使用mount命令挂载
suid/nosuid
是否允许SUID的存在
Usrquota
启动文件系统支持磁盘配额模式
Grpquota
启动文件系统对群组磁盘配额模式的支持
Defaults
同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置

dump是一个用来作为备份的命令。通常这个参数的值为0或者1
0
代表不要做dump备份
1
代表要每天进行dump的操作
2
代表不定日期的进行dump操作

0
不要检验
1
最早检验(一般根目录会选择)
2
1级别检验完成之后进行检验

五、简要说明FHS结构

├── bin -> usr/bin:存放用户使用的二进制可执行命令,例如:cd ,ls 等命令
├── boot:存放系统启动,引导相关文件,例如:bootloader,grub等
├── dev:存放设备文件,例如:sda1,sdb1,tty等
├── etc:存放系统配置文件,例如:网络配置文件,yum源配置文件等
├── home:用户家目录,新建用户时默认在/home目录下创建同名目录,可在新建用户时使用-d选项设置家目录
├── lib -> usr/lib:存放32位程序运行时调用的动态库及内核模块文件
├── lib64 -> usr/lib64:存放64位程序运行时调用的动态库及内核模块文件
├── media:挂载点,挂载可移动存储设备,例如:CD,
├── mnt:挂载点,挂载临时文件及存储设备
├── opt:第三方应用软件安装位置,一般习惯安装到/usr/local下
├── proc:伪文件系统,存放将内核与进程等相关信息抽象虚拟的文件,所以不占用磁盘空间
├── root:root(系统管理员)的家目录
├── run:存放系统启动以后描述系统信息的文件(放置PID的目录),关机后清空
├── sbin -> usr/sbin:存放root(系统管理员)使用的二进制可执行命令,
├── srv:可理解为”service”,系统运行时某些服务所需要调用的数据
├── sys:伪文件系统,存放将系统硬件等相关信息抽象虚拟文件,同样不占用磁盘空间
├── tmp:存放临时文件及某些应用所产生的临时文件
├── usr:此目录下目录结构也遵循FHS,称为第二层(子层)FHS结构,主要存放应用程序安装及执行的有关文件,例如:/usr/share/man目录存放man命令执行时所需调用的在线帮助文件,/usr/include存放应用程序调用的头文件
└── var:此目录下目录结构也遵循FHS,称为第二层(子层)FHS结构,主要存放日志,邮件,队列,应用相关文件
    /var/log/message 系统日志
    /var/log/boot.log 启动日志
    /var/log/dmesg 内核及硬件的有效信息
    /var/log/mail.log 邮件日志
    /var/log/cron 计划任务的日志
    /var/lib/mysql mysql数据存放目录
    /var/spool/mail 用户邮件存放目录
    /var/spool/cron 计划任务相关
    …………

六、用自己的理解总结 文件管理,用户管理,组用户,权限管理相关的命令。

Linux常见命令-用户管理命令、用户组管理命令和文件权限命令
一、用户管理命令
1.useradd添加新用户
2.passwd 设置用户密码
3.id 查看用户是否存在
4.cat /etc/passwd 查看创建了哪些用户
5. su 切换用户
6.userdel 删除用户
7.who 查看登录用户信息
8.sudo 设置普通用户具有 root 权限
9.usermod 修改用户
二、用户组管理命令
1.groupadd 新增组
2.groupdel 删除组
3.groupmod 修改组
4.cat /etc/group 查看创建了哪些组
三、文件权限类
1.文件权限说明
①文件权限符号含义含义解读
②rwx 作用文件和目录的不同解释
③文件基本属性介绍
2.chmod 改变权限
3.chown 改变所有者
4.chgrp 改变所属组
5.三种特殊权限suid、sgid、sbid

猜你喜欢

转载自blog.csdn.net/qq_46229380/article/details/126090141