目录
一、 图文并茂解释开源许可证 GPL、BSD、MIT、Mozill Apache和LGPL的区别?
二. 安装各发行版系统的安装(centos, rockylinux, ubuntu, 等)
三 解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。<>, [] ...等各代表什么含义
四. 切换到/etc/目录,列出fstab文件的详细信息,详细解决fstab一行,每个或每几个字符的详细含义。 【cd /etc; ls -l /etc/fstab】
一、 图文并茂解释开源许可证 GPL、BSD、MIT、Mozill Apache和LGPL的区别?
:
-
前言
2021年12月,抖音海外版 TikTok 上线了一款名为 TikTok Live Studio 的 APP,但不久其下载页面就被删除。TikTok 官方对此事做出回应,原因是该 APP 违反 GPL 许可证,其使用 GPL 许可证下的开源软件源码,却没有按照 GPL 许可证要求开源。
随着开源软件的发展,其数量和影响力在不断地上升。开源软件具有成本低、升级快的特点,因此越来越多的企业选择使用开源软件。但是“天下没有免费的午餐”,在开源许可证的约束下,开源软件的使用并非想象中的自由。不恰当地使用开源软件,可能会给企业造成负面舆论甚至经济损失的风险。
开源许可证(“Open Source License”)
开源许可证是一种针对开源软件使用者的约束,目的在于规范受著作权保护的软件的使用或者分发行为。
常见许可证及其差异
常见的许可证主要有 GPL、LGPL、AGPL、MPL、MIT、BSD 和 Apache,各个许可证还包含不同版本。根据使用条件不同,可以将这些许可证大致分为两类:Copyleft 许可证和宽松许可证(permissive license),主要对使用、修改和分发的场景作出相应约束。
1.BSD 许可证——特点是可以自由使用、修改、再发布。但是在商用或者个人分发过程中必须带有原来代码的许可证,且不能用原作者相关信息去做宣传。
2.MIT许可证——源自麻省理工学院(Massachusetts Institute of Technology, MIT),是使用最广泛的一种开源许可证。其特点和BSD许可证类似,只要在项目的所有副本中包含版权声明和许可声明,就无需承担任何责任。
3.Apache 许可证——作为 permissive license 中的一员,Apache 多了几个限制条件,禁止使用其商标与作者的相关信息进行商业行为,必须明确指出所有修改过的文件。
4.GPL 许可证—— GPL 和 BSD 区别还是很大的,GPL 主张代码及衍生代码的开源,不允许修改后和衍生的代码作为闭源的商业软件进行发布和出售。如果已发布商业软件源码里含有 GPL 开源软件源码,则必须对该商业软件进行开源或者下架处理。
5.AGPL 许可证—— AGPL 是 GPL 的一个补充, 在GPL 的基础上加了一些限制。GPL 的约束生效前提是该软件"发布",有的公司就使用 GPL 组件编写web 系统,但是不发布系统,只用这个系统在线提供服务,这样就避免了开源系统代码。而 AGPL 要求如果云服务(即 saas )用到的代码是该许可证,那云服务的代码也必须开源。
6.LGPL 许可证—— LGPL 允许商业软件通过类库引用的方式使用 LGPL 类库,而不需要开源商业软件源码。
7.MPL 许可证——在商业软件中,如果含有 MPL 许可证的代码在单独的文件内,其他新增的文件就可以避免开源。
我们针对 C/C++、Java 两类常用编程语言的开源组件许可证分布进行统计,可以发现:
-
C/C++ 中主要使用 MIT、BSD、Apache 许可证,GPL/LGPL 约占16%,整体使用更严格
-
Java 中主要使用 Apache、MIT 许可证,GPL/LGPL占比约1%,整体使用更宽松
开源许可证在标准化
SPDX 是 Linux 基金会推出的用于交流软件材料清单信息的开放标准,SPDX 当前已经对超过400个开源许可证的名称、标识符等信息进行标准化,并在持续更新。
SPDX 还给出了开源许可证的匹配指南,鼓励开发者在代码中加入诸如 SPDX-License-Identifier: MIT的简短标识。
可以预见,未来开源许可证将变得更标准,更容易被机器识别处理。
开源合规风险
2008 年,美国联邦巡回上诉法院首次在 Jacobsen v.Katzer 一案中主张了开源许可证的著作权效力。中国在2019年的「柚子案」中默认了 GPL 许可证的法律效力。相关判例的产生,意味着开源许可证不再是君子协定,违反开源许可证会对企业带来经济和声誉上的损失。
如 GPL 许可证和 MPL 许可证,GPL 许可证要求「用户使用该许可证下的源码,必须以 GPL 许可证的许可发布整个程序的源码」,而 MPL 则要求「MPL 许可证的代码在单独的文件内,其他新增的文件就可以避免开源。」因此企业在使用同时附带GPL 和 MPL 许可证的开源软件时,就可能因为开源许可证的冲突,面临违反其中之一的风险。
国内外的相关案例
一、2019年,在数字天堂北京网络技术有限公司 诉 柚子北京科技有限公司的案件中,柚子北京 由于开发人员在2015年使用了 数字天堂 的 HBuilder 软件工具中三款插件的部分源代码,未遵守开源软件许可证,将具有开源要求的软件产品作为商业产品,被开源软件的著作权人诉请违约和侵权,故而承担法律责任。
二、2021 年 4 月 30 日,罗盒公司状告风灵公司侵权获赔 50 万元,同时要求风灵公司停止侵权行为。
在该案件中原告罗盒公司,独立开发“罗盒(Virtual App)插件化框架虚拟引擎系统 V1.0”(简称VirtualApp V1.0),在2016年引入 GPL3.0 许可证,于2017年取得计算机软件著作权登记证书,且声明用于商业用途请购买商业授权。
2018年原告发现名为“点心桌面”的软件使用了 VirtualApp V1.0 的代码,经过源码分析对比,发现两者之间高度相似,遂起诉被告福建风灵公司。
经法院审判被告赔偿原告为制止侵权行为而支出的合理费用50万元。此次判决是中国首个明确 GPL3.0 许可证具有法律效力的案例。
三、2021年12月中旬,抖音海外版 TikTok 上线一款名为 TikTok Live Studio 的 APP,有网友发现,此软件违反 GPL 许可证,违规使用开源软件 OBS(一个免费的开源视频录制和视频实时流软件,且允许任何人免费应用和商用)的源代码,既然允许商用,但是为什么还会被曝违规呢?
这里就需要再科普一下 GPL 许可证,GPL 许可证具有很强的传染性,如果一款软件使用 GPL 许可证的开源软件源码,那么该软件也必须采用 GPL 许可证,进行开源。
此事曝光之后,OBS 开发者证实此事,TikTok 也对此事进行了回应,并删除 TikTok Live Studio 的下载页面。
针对开发者/企业的建议
温馨提醒:开源千万条,合规第一条
一、软件开发者使用开源软件时,需要谨慎选择开源软件,关注其开源许可证的内容及相关条件,避免潜在的法律风险。
二、企业应当建立一个完善机制,识别企业中所使用的开源软件清单,明确对应的开源许可证及权利约束,及时规避相关合规风险。
三、通过隔离机制避免开源许可证传染,如对于 MPL 许可证下代码的使用,应把该许可证的代码放在单独的文件内避免许可证传染;LGPL 下的代码,可采用动态链接调用该许可证的库实现隔离。
解决方案
借助 murphysec 的开源工具来解决这类风险
一、使用 murphysec 开源工具扫描您的代码目录,它会帮您一键识别出来您的代码项目中使用的所有开源组件,包括直接依赖和间接依赖的组件清单,同时列出所有组件对应的开源许可证信息
二、查看报告,根据报告的提示可以明确看到对应组件的许可证在什么场景下存在许可证合规风险
三、您可以根据许可证的合规风险提示,来判断您的项目是否存在违反的可能性,并调整您所引入的组件,来解决这个风险。
一些可能你无意中踩到的坑:
1)有一些组件是存在多种许可证的,可能不同目录文件指定的许可证类型不一样,要特别注意,当然我们的开源软件也考虑到了这种情况
2)有些组件你没有直接依赖,但是可能存在间接依赖的情况,你需要特别注意查看相关组件的依赖关系
总体而言,GPL和AGPL是最严格的许可证,要求衍生作品必须以相同的许可证方式发布。LGPL和MPL在一定程度上限制了对于修改代码和衍生产品的许可。而BSD、MIT和Apache许可证相对宽松,允许自由使用、修改和分发,对衍生作品的许可没有限制。开发者在选择许可证时应根据项目的需求和目标权衡严格性和灵活性。
二. 安装各发行版系统的安装(centos, rockylinux, ubuntu, 等)
Centos7安装手册
1、关于Centos 系统的简介
2004年,Gregory Kurtzer和CentOS的其他创始成员基于开源的RHEL创建了CentOS,将Enterprise Linux引入了社区。
2014年,红帽宣布正式赞助CentOS。CentOS的几个核心团队入职Red Hat专门负责其开发。并在Red Hat的理事会中占了三席,但是其社区属性得到保留,交易结果是一部分包括将CentOS商标和IP转移到Red Hat以安全保存
CentOS 8于2019年9月交付,紧随RHEL 8之后,CentOS Stream的发布和发布是对RHEL下一个次要更新中即将发布内容的预览版本。可以说是RHEL的bete版本。
2019年,巨头IBM花重资收购了Red Hat。并承诺Red Hat忠于其开源根基不会改变,声称“Red Hat对开源的使命和坚定承诺将保持不变。”
2020年12月8日IBM宣布将惯例支持到2029年的CentOS 8,提前在2年内就终结支持,唯一的升级途径是CentOS Stream-AKA,RHEL的Beta发布,并建议不再生产环境中使用。预示着CentOS可能会正式死亡。CentOS已死,但是CentOS精神将会永存。
随后以CentOS创始人之一Gregory Kurtzer为首,8小时内250人啸聚网络,计划以创建Rocky linux(Rocky为已经逝世的另外一个CentOS创始人)取代CentOS。
Rocky Linux于REHL兼容。
目前已经创建了Github Rokcy Linux项目组织(github.com/rocky-linux/rocky)和官网(rockylinux.org)
下载CentOS 7 的镜像
目前最新版的CentOS 7 的版本为 "7.9.2009" ,建议在阿里云进行下载;
地址:centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站
新建虚拟机向导
安装CentOS 7 的镜像
通电开机
下载ubuntu 的镜像
重点配置
修改地址阿里云
不要遗漏勾选
可以通过阿里云选择ubuntu的相应镜像,然后进行安装
ubuntu 20 安装手册_ubuntu20安装教程详细_风欲追风的博客-CSDN博客
下载Rocky 8 的镜像
重点配置
更改时区
开通网络
Rocky 8的最新镜像可以通过阿里云下载,或者通过Rocky官网进行下载:
阿里下载地址:rockylinux安装包下载_开源镜像站-阿里云
Rocky 8 安装手册_rocky系统_风欲追风的博客-CSDN博客
3. Linux中总结
① 如何通过一个简短的关键字 【man -k, man -k process 】,例如process 获取相关的命令。
CentOS中man命令显示nothing appropriate问题
在新安装的CentOS中执行以下语句会出现nothing appropriate的结果:
man -f man
man -k man
这是由于其相应的资料库没有安装,需要切换到root用户:
su root
然后执行以下命令建立资料库:
mandb
该命令应该从CentOS开始才有效,以前的版本应当使用makewhatis。
1.通过关键字获取命令
1.1 man -k
1.2 man -k process
2 通过命令的描述,选择一个命令,获取命令的man文档。【 man top】
man top
三 解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。
标题 | 含义 |
NAME | 名称及简要说明 |
SYNOPSIS | 用法格式说明 |
DESCRIPTION | 详细说明 |
OPTIONS | 选项说明 |
AUTHOR | 作者 |
BUGS | bug信息 |
EXAMPLES | 使用示例 |
SEE ALSO | 其他帮助参考 |
FILES | 相关文件 |
COPYRIGHT | 版本信息 |
<>, [] ...等各代表什么含义
[]:中括号表示可选内容
<>:尖括号表示必选内容
a|b:表示二选一
{}:大括号表示分组
...:表示同一内容可出现多次
四. 切换到/etc/目录,列出fstab文件的详细信息,详细解决fstab一行,每个或每几个字符的详细含义。 【cd /etc; ls -l /etc/fstab】
1 2 3 |
|
1 2 |
|
1 |
|
[ - ] 代表是文件;
RW- 拥有者权限
R-- 所属组权限
R--- 其他人权限
(权限说明:
R (read) 代表可读权限
W (write) 代表可写权限
X (execute) 代表可执行权限)
1 连接数
root 所属者
root 所属组
655 文件大小容量
Jun 10 08:18 文件修改日期
/etc/fstab 文件名称
五、简要说明FHS结构
FHS(Filesystem Hierarchy Standard)是一个规定了Linux和其他类Unix系统中文件系统的标准布局的标准。它定义了文件和目录在系统中的组织结构,以提供一致性和可移植性。
FHS结构的主要目的是使不同的Linux发行版和Unix系统能够在文件系统的组织和使用上保持一致,使开发者和用户更容易在不同系统之间进行迁移和交互。
以下是FHS结构的主要组成部分:
1. /:根目录,是整个文件系统的起点。
2. /bin:存放基本系统命令(如ls、cp、mv等)的目录。
3. /boot:存放启动系统时所需的文件,如内核和引导加载程序。
4. /dev:存放设备文件,包括硬件设备、随机设备以及其他外部设备。
5. /etc:存放系统的配置文件,如网络、用户账户和服务配置。
6. /home:存放用户的主目录,每个用户在这个目录下有一个以用户名命名的子目录。
7. /lib:存放系统所需的库文件,这些库文件被可执行文件使用。
8. /media:存放可移动媒体设备(如光盘、U盘等)的挂载点。
9. /opt:存放本地安装的额外软件的目录。
10. /root:超级用户(root)的主目录。
11. /sbin:存放系统管理员命令(如shutdown、reboot等)的目录。
12. /tmp:存放临时文件的目录,系统重启后将被清空。
13. /usr:存放用户应用程序和文件的目录,它包含了众多子目录,如/usr/bin、/usr/lib等。
14. /var:存放可变的数据文件,如日志文件、邮件和打印队列等。
六、用自己的理解总结 文件管理,用户管理,组用户,权限管理相关的命令
文件管理:
touch 命令用于创建空白文件或者修改文件的访问和修改时间戳;
rm 命令是系统中用于删除文件或者目录的命令
rmdir 命令用于删除空目录
cat 命令用于显示文件内容
head 命令显示文件的开头部分内容
less 命令用于分页的方式浏览文件的内容
more 命令也是用于分页方式浏览文件的容,与less相比,more提供了较比简单的界面和操作方式,只能向下翻页,不能向上翻页或搜索
管理用户及组:
useradd 命令用于添加用户
userdel 命令用于删除用户
usermod 命令用于修改用户账户属性和配置
groupadd 命令用于添加用户组
groupdel 命令用于删除用户组
groupmod 命令用于修改用户组属性和配置
chsh 命令用于修改用户的登录shell(默认是shell)
管理权限:
chmod 命令用于修改文件或目录的权限
chown 命令用于更改文件或目录的所有者和所有组
setfacl 命令用于设置文件或目录的访问控制列表(ACL)