1.开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
GPL:是“通用性公开许可证”(General Public License,简称GPL)的简称。GPL同其它的自由软件许可证一样,许可社会公众享有运行、复制软件的自由;发行传播软件的自由;获得软件源码的自由,以及改进软件并将自己作出的改进版本向社会发行传播的自由。
BSD:是“宽容自由软件许可证”中的一员,在软件复用上给予了最小限度的限制。BSD协议允许作者使用该协议下的资源,将其并入私人版本的软件,该软件可使用闭源软件协议发布。
MIT:MIT许可证(The MIT License)是许多软件授权条款中,被广泛使用的其中一种。与其他常见的软件授权条款(如GPL、LGPL、BSD)相比,MIT是相对宽松的软件授权条款。
Mozilla:MPL(Mozilla Public License 1.1)MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益,他要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。
Apache:
Apache License(Apache许可证),是Apache软件基金会发布的一个自由软件许可证。Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和最终原作者的著作权,同样允许源代码修改和再发布。但是也需要遵循以下条件:
需要给代码的用户一份Apache Licence。
如果修改了代码,需要在被修改的文件中说明。
在衍生的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但是不可以表现为对Apache Licence构成更改。
Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足并作为开源或商业产品发布/销售。
使用这个协议的好处是:
- 永久权利,一旦被授权,永久拥有。
- 全球范围的权利,在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
- 授权免费,无版税, 前期、后期均无任何费用。
- 授权无排他性,任何人都可以获得授权。
- 授权不可撤销,一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。
LGPL:
LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。
2. linux系统安装
此次安装的是Rocky8.7版本
3. Linux中总结
1)通过一个简短的关键字 man -k process,可以获得有关process(进程)的命令。
2)通过命令的描述,选择一个命令,获取命令的man文档。例如man top。
3)解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。<>, [] ...等各代表什么含义。
以下是一些常见的 man 命令和参数的使用示例:
查看命令的使用说明:man command
在所有手册页中搜索关键字:man -k keyword
显示所有与命令或函数相关的手册页:man -a command
显示命令或函数的手册页文件路径:man -w command
显示函数的原型:man -p function
显示指定节的手册页:man 2 open
显示未压缩的手册页:man -u command
指定手册页的源路径:man -M /usr/share/man command
man手册格式
| 章节 | 概念 |
|---|---|
| NAME | 命令名称及功能简要说明 |
| SYNOPSIS | 用法说明,包括可用的选项 |
| DESCRIPTION | 命令功能的详细说明,可能包括每一个选项的意义 |
| OPTIONS | 说明每一项的意义 |
| FILES | 此命令相关的配置文件 |
| AUTHOR | 作者 |
| BUGS | 漏洞 |
| EXAMPLES | 使用示例 |
| SEE ALSO | 另外的参照 |
命令帮助中出现的[] <>含义
在查看命令帮助时,会出现[],<>,|等符号,它们的含义如下:
- [] 表示是可选的;
- <> 表示是可变化的;
- x|y|z 表示只能选择一个;
- -abc 表示三个参数(或任何两个)的混合使用;
- {}:分组
- …:可以有多个
4)根据语法部分 简要的写几个操作。
man -k process #查看有关process的命令
man ls #查看ls的指令帮助、配置文件帮助和编程帮助等信息
4. 切换到/etc/目录,列出fstab文件的详细信息,详细解决fstab一行,每个或每几个字符的详细含义。 【cd /etc; ls -l /etc/fstab】
5. 简要说明FHS结构。
FHS是Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。
定义
FHS定义了两层规范。
第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。你能想象,你进入一个企业之后,所接触到的Linux目录配置方法竟然跟你以前学的完全不同吗?很难想象。所以,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。
第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。
默认的基本目录结构如下:
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache:应用程序缓存数据目录
lib:应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock:锁文件
log:日志目录及文件
opt:专用于为/opt下的应用程序存储可变数据
run:运行中的进程相关数据,通常用于存储进程pid文件
spool:应用程序数据池
tmp:保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
6. 用自己的理解总结 文件管理,用户管理,组用户,权限管理相关的命令。文件: 【touch/rm/rmdir/cat/head/less/more】。用户及组:user/group 【useradd/userdel/usermod; groupadd/groupdel/groupmod; chsh/...】。权限 【chmod/chown/setfacl】"
文件管理
touch:若文件不存在,touch命令用于创建一个新的文件。 也可以用于修改文件或者目录的时间属性,包括存取时间和更改时间。
rm:rm命令用于删除一个文件或者目录。
rmdir:rmdir命令删除空的目录。
cat:查看文件,用于连接文件并且打印到输入设备上。
head:用于查看文件开头的部分,常用的参数 -n 用于显示行数,如若不写默认显示前10行。
more:作用类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
less:作用基本和more类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
more和less的区别:
1、less可以按上下方向键来显示上下内容,而more不能通过上下方向键控制显示];2、less不必读整个文件,加载速度比more更快;3、less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。
用户及组管理
用户管理
useradd:可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用useradd指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
userdel:用于删除用户帐号。userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
usermod:用于修改用户帐号。usermod可用来修改用户帐号的各项设定。
组管理
groupadd:用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
相关文件:
- /etc/group 组账户信息。
- /etc/gshadow 安全组账户信息。
- /etc/login.defs Shadow密码套件配置。
groupdel:用于删除群组。需要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
groupmod:用于更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
chsh:用于更改使用者 shell 设定。使用权限:所有使用者。
权限管理
chmod(英文全拼:change mode):是控制用户对文件的权限的命令。
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
chown(英文全拼:change owner):用于设置文件所有者和文件关联组的命令。
Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 chown 需要超级用户 root 的权限才能执行此命令。
只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp 命令。
setfacl:(set file access control lists)用于设置文件访问控制列表。setfacl 可以更精确的控制权限的分配,比如让某一个用户对某一个文件具有某种权限。