N77-Linux第一周作业

发布时间 2023-05-19 23:03:27作者: 茨格

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

1.1. 世界上的开源许可证(Open Source License)大概有上百种,而我们常用的开源软件协议大致有GPL、BSD、MIT、Mozilla、Apache和LGPL。

​ 从下图中可以看出几种开源软件协议的区别。

​ 主要的协议的权利和义务

1.2. BSD开源协议

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

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

   如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
   如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
   不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

1.3. Apache Licence 2.0

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

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

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

1.4. GPL

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

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

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

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

1.5. LGPL

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品

1.6. MIT

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

1.7. 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条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。

二、Ubuntu-Server 22.04安装详细过程

2.1. https://ubuntu.com/download/server 乌班图镜像网址,点击下载即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232835_001.png)

2.2 选择 Install Ubuntu Server

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232849_001.png)

2.3. 选择安装语言为英语

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232852_001.png)

2.4. 安装程序更新选择不更新,继续下一步

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232913_001.png)

2.5. 键盘布局选择默认,继续下一步

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232916_001.png)

2.6. 选择安装服务器版本,server版本比mini版本配置多,可自行选择

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232918_001.png)

2.7. 网络配置,使用 DHCP 或者 静态IP(建议设置静态IP,如果选择DHCP,则在此界面直接选择 Done 后回车即可)。

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232920_001.png)

静态IP设置方法,点击ens33 然后选择ipv4

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232921_001.png)

点击Manual 手动添加ip地址

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232923_001.png)

自行根据自己网络情况填写ip地址配置,最后点击save保存退出,继续下一步即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232925_001.png)

2.8. Configure proxy配置页面的Proxy address无需配置,直接点击Done即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232927_001.png)

2.9. 设置镜像源地址,这个直接点击Done下一步

可以配置阿里云(http://mirrors.aliyun.com/ubuntu/))**下载加速 后续自行添加即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232928_001.png)

2.10. 磁盘配置,选择Done磁盘自动分配

需要手动分区的话选择 [custom storage layout]即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232929_001.png)

手动分区配置,向下移动光标选择手动分区,选择Done下一步

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232930_001.png)

选择空闲分区进行设置

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232932_001.png)

为磁盘进行分区,下图含义为 根目录设置10G大小(可根据自己磁盘大小自行配置)

类型选为ext4 最后点击Create添加即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232933_001.png)

这里设置的根目录为10G,boot为4.997G,home为5G,swap 交换空间为8GB一般为物理内存的2倍,以上设置可以根据自己磁盘大小自行配置

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232936_001.png)

再次确认 Continue 继续

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232937_001.png)

2.11. 设置主机用户名与密码及服务器名称,设置完点击Done下一步即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232939_001.png)

2.12. 按回车键 选择安装 SSH服务,方便远程连接,然后选择Done下一步即可

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232940_001.png)

2.13. 选择预置服务安装,按自己需求选取,如不需要选择Done下一步继续

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232942_001.png)

2.14. 进入安装系统环节

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232943_001.png)

2.15. 选择不安装更新,重启系统

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232945_001.png)

2.16. 这里等待时间会长一点,耐心等待

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232946_001.png)

2.17. 输入登录用户名密码,进入系统界面 后续可自行安装各种需求配置

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232948_001.png)

_Ubuntu-Server_22.04安装详细过程-图文版_叶逸丶的博客-CSDN博客\DM_20230516232950_001.png)

三、Linux中总结

3.1 如何通过一个简短的关键字【man -k man -k process】,例如process获取相关的命令。

[root@Rocky01 ~]#man -k process
awk (1)              - pattern scanning and processing language
bootup (7)           - System bootup process
chrt (1)             - manipulate the real-time attributes of a process
coredumpctl (1)      - Retrieve and process saved core dumps and metadata
cpupower (1)         - Shows and sets processor power related values
cpupower-info (1)    - Shows processor power related kernel or hardware configurations

3.2 通过命令的描述,选择一个命令,获取命令的man文档。【man top】

 以 awk为例,使用 "man -f awk" 命令来获取命令的man文档信息
  
  [root@Rocky01 ~]#man -f awk
  awk (1)              - pattern scanning and processing language
  [root@Rocky01 ~]#man 1 awk  # 介绍awk命令

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

1. man 分为9个部分
   · 1:用户命令
   · 2:系统调用
   · 3:C库调用
   · 4:设备文件及特殊文件
   · 5: 配置文件格式
   · 6:游戏
   · 7:杂项
   · 8:管理类的命令
   · 9:Linux内核API
   2.man 帮助段落说明
   · NAME        名称及简要说明
   · SYNOPSIS    用法格式说明
   · []          可选内容
   · <>          必选内容
   · a|b         二选一
   · {}          分组
   · ...         同一内容可以出现多次
   · DESCRIPTION 详细说明
   · OPTIONS     选项说明
   · EXAMPLES    示例
   · FILES       相关说明
   · AUTHOR      作者
   · COPYRIGHT   版本信息
   · REPORTING BUGS bug信息
   · SEE ALSO    其他帮助参考

3.4 根据语法部分简要的写几个操作

[root@Rocky01 ~]#awk -F ':' '{print $1}'  /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
unbound
sssd
sshd
lyc
[root@Rocky01 ~]#awk -v FS=":" '{print $1}'  /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
unbound
sssd
sshd
lyc

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

_Linux中的总结_man文档_风欲追风的博客-CSDN博客\DM_20230517003904_001.png)

以最后一行为例:

UUID=c4476508-b415-46ae-b49b-80a9d532ff95  /data/data1 ext4 defaults 0 0
​
UUID=c4476508-b415-46ae-b49b-80a9d532ff95  # 要挂载的设备或伪文件系统
/data/data1                                # 挂载点,将要挂载的设备具体挂载在系统的哪个文件夹下
ext4                                       # 要挂载的设备的文件系统类型
defaults                                   # 挂载类型,一般选择 'defaults'即可
0                                          # 转储频率: 0:不做备份 1:每天转储 2:每隔一天转储
0                                          # fsck检查的文件系统的顺序,0表示不自检

五、简要说明FHS结构。

5.1 什么是FHS结构

Linux的文件系统层级结构:FileSystem Hierarchy Standdard(简称FHS)定义了在Linux系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置哪个目录下。类似于Windows操作系统中C盘的文件目录,FHS采用树形结构组织文件,定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理和矛盾处理。

5.2 Linux FHS-文件系统层级结构标准简要说明

在Linux系统中,所有的目录和文件都是由 / (根目录)开始的,然后再一个一个分下来,通常我们将这种配置方式称为目录树,图中画出了Linux系统目录大致情况

_Linux中的总结_man文档_风欲追风的博客-CSDN博客\DM_20230517003911_001.jpg)

5.3 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相关的安全策略等信息的存储位置

六、用自己的理解总结文件管理,用户管理,组用户,权限管理相关的命令。文件:【touch/rm/rmdir/cat/head/less/more】。用户及组:user/group【useradd/userdel/usermode;groupadd/groupdel/groupmod; chsh/...】。权限 【chmod/chown/setfacl】

6.1 文件管理

touch
创建文件的命令
touch filename 创建新文件 touch后加文件名称

rm
删除文件的命令

rm filename 是删除文件,rm -f 强制删除,rm -f递归删除

rmdir 删除文件夹

mkdir
创建目录的命令,mkdir -p 递归创建

ls
查看文件列表的命令

ls -a 列出所有文件包括“."开头的隐藏文件

cat
查看文件内容,常用选项为-b,输出非空行编号。-n,对所有输出行编号

head
功能:从文本文件的头部开始查看,head命令用于查看一个文本文件的开头部分。

用法:head [选项]… [文件]…
-n 制定您想要显示文本多少行
-c number 显示多少个字节

tail
-n 默认查看文本倒数10行

more
主要功能:主要用于读取大文件,以百分比的形式查看日志,类似cat,不过会以一页一页的显示方便使用者逐页阅读,按空白键(space)就往下一页显示,按b键(back)就会往回一页显示,按回车往下一行,而且还有搜寻字符串的功能(与vi相似),使用中的说明文件,请按h,退出按q,显示到最后一行会退出more命令,如果想查看前面内容,需要重新执行more命令。

less
功能:less命令可以对文件或其他输出进行分页显示,与more命令相似。退出按q。

6.2用户管理

useradd 添加用户
userdel 删除用户
usermod 修改用户

groupadd 添加用户组
groupdel 删除用户组
groupmod 修改用户组

chsh
用来修改用户的shell类型

chsh -s /usr/sbin/nologin gao 将gao账户的shell类型改为nologin

6.3权限管理

chown:
用来更改某个目录或文件的用户名和用户组。
例子:chown root:root filename
chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径)

chmod:
用来修改某个目录或文件的访问权限。
例子:chmod -R 755 filename

setfacl
setfacl -m u:wang:rw f1.txt 给wang账户单独设置读写权限