第一周作业

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


1、LGPL许可证

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

2、Mozilla许可证

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

3、GPL许可证

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

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

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

4、BSD许可证

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

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

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

5、MIT许可证

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

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

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

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

6、Apache许可证

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],即版权所有者。如果为个人项目,就写个人名称;若为团队项目,则宜写团队名称。

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

 CentOS 7安装

准备:VMware 、CentOS-7-x86_64-DVD-1908镜像文件、8G以上内存的电脑。

1、创建新的虚拟机

 

 

 2、新建虚拟机--选择自定义安装

 

 

 3、虚拟机 硬件兼容性选择默认

 

 

 4、选择稍后安装操作系统(需要在虚拟机安装完成之后,删除不需要的硬件,所以稍后安装操作系统)

 

 

 5、选择Linux操作系统,并在下方版本中选择CentOS 7 64位(因为我们下载的操作系统是64位的。)

 

 

 6、命名虚拟机并选择存放虚拟机文件的位置

 

 

 7、配置处理器数量,也就相当于cpu

 

 

 8、设置内存大小,这里设置的是2G,也就是2048

 

 

 9、网络类型这里选择的是桥接网络

 

 

 10、控制器类型默认、磁盘类型默认

 

 

 

 

 

 11、选择创建新的虚拟机磁盘

 

 

 12、最大磁盘大小这边设置成20G(因为是假的,所以放成200G都可以)

 

 

 12、指定磁盘文件

 

 

 13、选择自定义硬件

 

 

 14、选择CD/DVD,选择使用ISO映像文件,并在浏览中选择下载好的ISO映像文件,也可以在下方添加或删除硬件,这边就选择默认。

 

 

 

选择关闭,选择完成

15、开启些虚拟机

 

 

16、选择第一个

 

 

 17、设置语言---这边选择English,选择好后点击Continue

 

 

 18、选择时区-----Asia-----Shanghai,选择完成后,点击左上方Done

 

 

 

 

 

 19、这边为了安装快捷,选择字符界面安装,如有需要选择图形界面server with GUI或GNOME Desktop

 

 

 

 

 

 20、分区

 

 

 

 

 

 点击Done

 

 

 分区

分别创建/boot区、swap交换分区、根分区/

注意:linux系统最简单的分区方案:

1、分/boot区,给200M,/boot放启动文件

2、分交换分区(交换空间)swap,看内存总大小 ,如果内存足够大,这个空间可以设置大些,如果内存小于2G。那么这个空间设置成内存的2倍大小。

3、所有空间给/(根分区 )

 

 

21、设置网络连接和主机名 例:centos 7

 

 

 

 所有设置完成后点击Begin installation

 21、设置ROOT用户密码

 

 

 

 

 等待安装完成

 

 

 23安装完成,点击重启

选择第一项

 

输入用户名和密码,因为我们没有普通用户,所以这边直接选择使用root用户登录

 

 

 

 

 登录成功

 

 

 

Rocky 9安装 

准备:Rocky-9.0-x86_64-dvd.iso镜像,VMware 

1、因为前部分操作和以上相同,所以直接跳转到选择客户机操作系统

操作系统选择Linux 版本选择CenetOS 8 64位

 

 

 2、其他设置和以差不多一样,因为本机硬件决定,所以这边直接到开启启动

选择第一项

 

 

 3、这边选择英文安装,选择完成后点击Continue

 

 

 4、磁盘分区直接默认了,然后点Done

 

 

 5、KDUMP内核崩溃转储机制,关闭,点击Done

 

 

 6、时区选择Asia --- Shanghai

 

 

 7、这里我选择字符界面安装,可以选择图形界面,第一个选项就是图形界面

 

 

 8、网络和主机名

 

 

 9、设置root密码

 

 

 10、所有设置完成后点击Begin installation,等待安装完成

 

 

 11、安装完成后点击Reboot system 重启

 

 

 12、选择第一项

 

 

 13、输入用户名和密码

 

 

 登录成功

Ubuntu2204安装

1、前面步骤都差不多,这边直接到系统选择上

选择Ubuntu 64位

 

 

 2、直接到开机这边

选择第一项

 

 

 2、选择English回车

 

 

3、这边选择不升级,选择第二项回车

 

 

4、 语言这边默认,英语

5、网络也是默认,Done

 

 

 6、不需要代理,默认

 

 

 7、将源修改为中国阿理云的源

 

 

 8、选项Done继续

 

 

 9、选项Done

 

 

 10、选项继续

 

 

 

 

 

 ubuntu默认没有root用户

11、选择Install OpenSSH server 后,Dene

 

 

 12、这边直接选择Done

 

 

 13、等待安装完成

 

 

 reboot重启

 

 

 待重启完成

 

输入用户名和密码

 

 

 登录成功 

三、Linux中总结

1)如何通过一个简短的关键字,例如process 获取相关的命令。

man -k process

2)通过命令的描述,选择一个命令,获取命令的man文档。

 

3)解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。<>, [] ...等各代表什么含义。

 

4)根据语法部分 简要的写几个操作。


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

 <file systems> - 要挂载的分区或存储设备.

<dir> - <file systems>的挂载位置。
<type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
<options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:
auto - 在启动时或键入了 mount -a 命令时自动挂载。
noauto - 只在你的命令下被挂载。
exec - 允许执行此分区的二进制文件。
noexec - 不允许执行此文件系统上的二进制文件。
ro - 以只读模式挂载文件系统。
rw - 以读写模式挂载文件系统。
user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用 noexec, nosuid, nodev 参数。
users - 允许所有 users 组中的用户挂载文件系统.
nouser - 只能被 root 挂载。
owner - 允许设备所有者挂载.
sync - I/O 同步进行。
async - I/O 异步进行。
dev - 解析文件系统上的块特殊设备。
nodev - 不解析文件系统上的块特殊设备。
suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
nosuid - 禁止 suid 操作和设定 sgid 位。
noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async.
<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。

五、简要说明FHS结构。

 首先FHS结构它是一个文件系统层次的标准,它的标准类似于windown下的c盘文件目录,采用树形结构组织文件。

FHS定义了两层规范,第一层是, /(根) 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

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

1、用户和组的相关配置文件

/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等)

/etc/group:组及其属性信息

/etc/shadow:用户密码及其相关属性

/etc/gshadow:组密码及其相关属性

2、用户管理

id:信息查看

[root@rocky9 ~]#id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

ll /home :查看home文件夹,

[root@rocky9 ~]#id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

用户管理

useradd:添加用户

‐u:指定uid ‐g:指定gid ‐c:用户注释信息 ‐d:家目录 ‐s:指定shell(/etc/shells) ‐G:附加组 ‐r:创建系统用户 默认设置:/etc/default/useradd

usermod:修改用户组

‐ aG:将用户添加到附加组 ‐ dm:移动用户新登录目录 ‐ L:锁定用户 ‐ U:解锁用户

passwd:修改用户密码

‐n mindays:指定最短使用期限
‐x maxdays:最大使用期限
‐w warndays:提前多少天开始警告
‐i inactivedays:非活动期限
‐‐stdin:从标准输入接收用户密码
echo "PASSWD" | passwd ‐‐stdin username

userdel :删除用户

-r 连同家目录一起删除

组管理

groupadd :创建组

‐g:指定 gid ‐r:创建系统组

groupdel删除组

sudo提权

权限管理

文件的权限对象:

owner:属主,u ;group:属组,g;other:其他,o

文件的三种权限:

r:Readable 4
w:Writeable 2
x:eXcutable 1
文件:

r:可读文件内容
w:可修改其内容
x:可作为命令执行
目录:

r:可以使用ls查看此目录中的文件列表
w:可在此目录中创建mkdir,touch,也可以删除rmdir,rm -rf此目录中的文件
x:可以使用ls查看此目录中文件列表,可以cd进入此目录

权限管理(u,g,o)

chown:更改属主(组)

chgrp:更改属主

chmod:更改文件权限

getfacl:获取ACL权限

getfacl 文件或目录名

setfacl设置ACL权限

‐m :修改acl设定参数 ‐x :删除acl设定参数 ‐b :移除所有的ACL设定 ‐R :递归 ‐d :添加默认的acl权限

删除用户权限:setacl ‐x u:username filename

删除组权限:setacl ‐x g:groupname filename

删除整个acl权限:setacl ‐b filename

 

posted @ 2022-08-01 21:12  小帽子顶起来  阅读(21)  评论(0)    收藏  举报