目录
1、图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?
4、切换到/etc/目录,列出fstab文件的详细信息,详细解释fstab一行,每个或每几个字符的详细含义。 【cd /etc; ls -l /etc/fstab】
6、用自己的理解总结 文件管理,用户管理,组用户,权限管理相关的命令。
1、图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?
以下是上述协议的简单介绍:
GPL
GNU是GNU General Public Licence的简写。我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的“传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
BSD
BSD是Berkly Software Distribution的简写。BSD开源协议是一个给于使用者很大自由的协议。BSD许可证原先是用在加州大学柏克利分校发表的各个4.4BSD/4.4BSD-Lite版本上面的,后来也就逐渐沿用下来。1979年加州大学伯克利分校发布了BSD Unix,被称为开放源代码的先驱,BSD许可证就是随着BSD Unix发展起来的。BSD许可证被Apache和BSD操作系统等开源软件所采纳。
相较于GPL许可证和MPL许可证的严格性,BSD许可证就宽松许多了,一样是只需要附上许可证的原文,不过比较有趣的是,它还要求所有进一步开发者将自己的版权资料放上去,所以拿到以BSD许可证发行的软件可能会遇到一个小状况,就是这些版权资料许可证占的空间比程序还大。
MIT
MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。MIT协议又称麻省理工学院许可证,最初由麻省理工学院开发。被授权人权利:1、被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。2、被授权人可根据程式的需要修改授权条款为适当的内容。被授权人义务:在软件和软件的所有副本中都必须包含版权声明和许可声明。
MPL
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:
- MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。
- MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
- 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
- 对源代码的定义:而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”
- MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。
Apache Licence 2.0
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:
- 需要给代码的用户一份Apache Licence。
- 如果你修改了代码,需要再被修改的文件中说明。
- 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
- 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
LGPL
LGPL即GNU宽通用公共许可证,是GNU Lesser General Public License的简称。LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。
2、安装Rocky8.6
2.1 打开VMware新建虚拟机,选择典型并点击下一步
2.2 选择稍后安装系统
2.3 系统选择Linux,版本选择centos8 64位
2.4 命名虚拟机名称和选择安装位置
2.5 选择磁盘容量大小,勾选将虚拟磁盘存储为单个文件
2.6 点击自定义硬件
2.7 选择内存调整为2GB
2.8 选择处理器调整处理器数量为2,也可以默认
2.9 选择新CD/DVD(IDE)勾选使用ISO映像文件,点击浏览选择Rocky8.6镜像
2.10 开启虚拟机,默认选择第二行
2.11 选择语言,使用英语就好
2.12 选择时区,修改时区为Asia & Shanghai
2.13 选择安装Destir,然后选择Done即可,默认自动分区
2.14 开启网络和修改主机名
2.15 设置root密码
2.16 设置一个普通用户
2.17 点击开始安装
2.18 等待安装完成然后点击重新启动系统即可
3、Linux总结
3.1 如何通过一个简短的关键字 【 man -k process 】,例如process 获取相关的命令。
[13:47:45 root@rocky8 ~]#man -k process
3.2 通过命令的描述,选择一个命令,获取命令的man文档。【 man top】
部分图示
[18:07:52 root@rocky8 ~]#man top
3.3 解读man文档,man分几个部分?man每个部分的解释,特别是语法部分。<>, [] ...等各代表什么含义。
man 一般有1-9部分
不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
- 用户操作的命令
- 内核系统调用的程序接口
- C库调用
- 特殊格式
- 文件格式
- 游戏和娱乐
- 其他杂项
- 系统管理命令
- Linux内核API
man帮助段落
- NAME 名称及简要说明
- SYNOPSIS 用法格式说明
- [] 可选内容
- <> 必选内容
- a|b 二选一
- { } 分组
- ... 同一内容可出现多次
- DESCRIPTION 详细说明
- OPTIONS 选项说明
- EXAMPLES 示例
- FILES 相关文件
- AUTHOR 作者
- COPYRIGHT 版本信息
- REPORTING BUGS bug信息
- SEE ALSO 其它帮助参考
3.4 根据语法部分 简要的写几个操作
参考示例:
[18:09:20 root@rocky8 ~]#man -a echo //列出所有帮助
搜索man帮助手册:
[20:13:08 root@rocky8 ~]#man -k echo
打开man帮助文件的路径:
[20:16:17 root@rocky8 ~]#man -w echo
4、切换到/etc/目录,列出fstab文件的详细信息,详细解释fstab一行,每个或每几个字符的详细含义。 【cd /etc; ls -l /etc/fstab】
[20:17:54 root@rocky8 ~]#cd /etc/
[20:22:31 root@rocky8 etc]#ls -l fstab
[20:22:41 root@rocky8 etc]#cat fstab
每列的信息说明如下:
第1列 Device:磁盘设备文件或者该设备的Label或者UUID
第2列 Mount point:设备的挂载点
第3列 filesystem:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等
第4列 parameters:文件系统的参数
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等默认参数的设置
第5列 能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1
0 代表不要做dump备份
1 代表要每天进行dump的操作
2 代表不定日期的进行dump操作
第6列 是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。
0 不要检验
1 最早检验(一般根目录会选择)
2 1级别检验完成之后进行检验
5、简要说明FHS结构
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/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:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
6、用自己的理解总结 文件管理,用户管理,组用户,权限管理相关的命令。
文件: 【touch/rm/rmdir/cat/head/less/more】。
用户及组:user/group 【useradd/userdel/usermode; groupadd/groupdel/groupmod
权限 【chmod/chown/setfacl】
- touch
创建文件,用法:touch 文件名称
[20:41:22 root@rocky8 ~]#touch test1.txt
- rm
删除文件,常用选项为 -rf,递归删除和强制删除
[20:44:02 root@rocky8 ~]#rm -rf test1.txt
- rmdir
删除空目录,参数为p,递归删除父空目录
[20:46:56 root@rocky8 ~]#rmdir test/
- cat
查看文件内容,常用选项为-b,输出非空行编号。-n,对所有输出行编号
[20:47:31 root@rocky8 ~]#cat -bn initial-setup-ks.cfg
- head
功能:从文本文件的头部开始查看,head命令用于查看一个文本文件的开头部分。
用法:head [选项]… [文件]…
-n 制定您想要显示文本多少行
-c number 显示多少个字节
[20:57:04 root@rocky8 ~]#head -n 15 initial-setup-ks.cfg
- less
功能:less命令可以对文件或其他输出进行分页显示,与more命令相似。退出按q。
- more
主要功能:主要用于读取大文件,以百分比的形式查看日志,类似cat,不过会以一页一页的显示方便使用者逐页阅读,按空白键(space)就往下一页显示,按b键(back)就会往回一页显示,按回车往下一行,而且还有搜寻字符串的功能(与vi相似),使用中的说明文件,请按h。退出按q
[21:00:13 root@rocky8 ~]#more initial-setup-ks.cfg
- useradd userdel usermod
- useradd 添加用户
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
[21:08:02 root@rocky8 ~]#useradd -u 111 -g root -s /sbin/nologin -d /var/www cxz
- userdel 删除用户
选项:
-f, --force force some actions that would fail otherwise
e.g. removal of user still logged in
or files, even if not owned by the user
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-Z, --selinux-user 为用户删除所有的 SELinux 用户映射
[21:05:50 root@rocky8 ~]#userdel abc
- usermod 修改用户
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
[21:19:27 root@rocky8 ~]#usermod -d /var/www cxz
- groupadd groupdel groupmod
- groupadd 添加用户组
用法:groupadd [选项] 组
选项:
-f, --force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR directory prefix
[21:22:38 root@rocky8 ~]#groupadd -g 123 g1
- groupdel 删除用户组
用法:groupdel [选项] 组
选项:
-h, --help 显示此帮助信息并推出
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-f, --force delete group even if it is the primary group of a user
[21:25:09 root@rocky8 ~]#groupdel g1
- groupmod 修改用户组
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
[21:27:47 root@rocky8 ~]#groupmod -g 456 g1
- chmod chown
chown
用法:
用来更改某个目录或文件的用户名和用户组。
[21:30:37 root@rocky8 ~]#ll test1.txt
-rw-r--r--. 1 root root 0 6月 24 23:35 test1.txt
[21:30:46 root@rocky8 ~]#chown cxz test1.txt
[21:31:04 root@rocky8 ~]#ll test1.txt
-rw-r--r--. 1 cxz root 0 6月 24 23:35 test1.txt
[21:31:07 root@rocky8 ~]#chown cxz:cxz test1.txt
[21:31:16 root@rocky8 ~]#ll test1.txt
-rw-r--r--. 1 cxz cxz 0 6月 24 23:35 test1.txt
chmod
用法:
用来修改某个目录或文件的访问权限。
[21:32:51 root@rocky8 ~]#chmod -R 777 test1.txt