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

linux第一周练习_linux

GNU通用公共许可证简称为GPL,是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件。大部分 GNU 的程序和超过一半的自由软件使用这种许可证。Linux 采用了 GPL。 GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种 linux,包括商业公司的 linux 和 linux 上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统。 当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 BSD代码鼓励代码共享,但需要尊重代码作者的著作权。

MIT源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X条款”(X License)或“X11条款”(X11 License)MIT内容与三条款 BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。 MIT 是和 BSD 一样宽范的许可协议,源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称 X11 协议。作者只想保留版权,而无任何其他限制。MIT与BSD类似,但是比BSD协议更加宽松,是目前最少限制的协议。

Mozilla即Mozilla Public License MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。 这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。

Apache是著名非盈利组织Apache采用的协议。与BSD类似,同样鼓励代码共享和尊重原作, 同样允许修改代码再次发布(作为开源或商业软件)。但需要遵循以下4点: 1.需要给代码的用户一份Apache License 2.如果修改了代码,需要在被修改的代码中进行说明 3.在衍生的代码中需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明 4.如果再发布产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。可以在Notice文件中添加自己的许可,但不可以表现为对Apache License构成更改。

LGPL:GNU宽通用公共许可证(GNU Lesser General Public License,简称GNU LGPL、LGPL)被用于一小部分(不是全部)的GNU库。LGPL是GPL的一个主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。 如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。


  1. 安装各发行版系统的安装(centos, rockylinux, ubuntu, 等) 【任选1个】

  新建一个虚拟机

linux第一周练习_linux_02

linux第一周练习_linux_03

虚拟机开机,选择第一项安装系统

linux第一周练习_linux_04

进入安装界面,选择语言

linux第一周练习_linux_05

选择system,进入分区界面

linux第一周练习_linux_06

选择custom手动分区

linux第一周练习_linux_07

选择Standard Partition

linux第一周练习_linux_08

点击“+”新建根目录“/”,分配大小100G

linux第一周练习_linux_09

依次新建swap,/boot,/data

linux第一周练习_linux_10

linux第一周练习_linux_11

linux第一周练习_linux_12

分区完点击“Done”,格式化分区

linux第一周练习_linux_13

linux第一周练习_linux_14

选择network&hostname配置网络和主机名

linux第一周练习_linux_15

linux第一周练习_linux_16

选择时区

linux第一周练习_linux_17

linux第一周练习_linux_18

点击software selction,勾选安装需要的软件

linux第一周练习_linux_19

*选GUI就表示装好的系统带图形界面

linux第一周练习_linux_20

点击Root Password,配置root密码

linux第一周练习_linux_21

如需ssh连接记得勾选

linux第一周练习_linux_22

点击User creation,创建普通用户

linux第一周练习_linux_23

linux第一周练习_linux_24

设置完毕后,点击begin install开始安装

linux第一周练习_linux_25

安装完毕重启系统

linux第一周练习_linux_26

进入登录界面,输入密码登录

linux第一周练习_linux_27

进入系统桌面,安装完毕

linux第一周练习_linux_28


  1. Linux中总结 1)如何通过一个简短的关键字 ,例如process 获取相关的命令。 man -k keyword 比如 man -k hostname

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

     man -f hostname

     man 1 hostname

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

man分为9个部分,分别是:

1.用户命令

2.系统调用

3.C库调用

4.设备文件及特殊文件

5.配置文件格式

6.游戏

7.杂项

8.管理类的命令

9.Linux内核API

man帮助段落说明

NAME 名称及简要说明

SYNOPSIS 用法格式说明--其中[]可选内容 <>必选内容 a|b二选一 {}分组 ...同一内容可多次出现

DESCRIPTION 详细说明

OPTIONS 选项说明

EXAMPLES 示例

FILES 相关文件

AUTHOR 作者

COPYRIGHT 版权信息

REPORTING BUGS bug信息

SEE ALSO 其它帮助参考

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

hostname  #显示主机名

linux第一周练习_linux_29

创建/testdir/dir3,/testdir/dir4,/testdir/dir5,/testdir/dir5/dir6,/testdir/dir5/dir7

mkdir -p /testdir/dir{3,4,5/dir{6,7}}

linux第一周练习_linux_30


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

linux第一周练习_linux_31

-rw-r--r--. 1 root root 709  6月 21 19:31 /etc/fstab

-rw-r--r--:第一个-表示文件类型,-是普通文件;rw-r--r--表示文件所有者权限,所属组群权限,其它用户选项

1:链接数

root root:文件所有者 文件所属群组

709:文件大小

6月 21 19:31:文件修改时间

/etc/fstab:文件名


  1. 简要说明FHS结构。 Linux的文件系统层级结构:FileSystem Hierarchy Standdard(简称FHS)定义了在Linux系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置哪个目录下。在Linux系统中,所有的目录和文件都是由根目录(/)开始的,然后再一个一个分下来,通常我们将这种配置方式称为目录树,如下图所示

linux第一周练习_linux_32

常见文件系统目录功能:

/boot:引导加载程序的静态文件,存放系统启动过程所需内容

/dev:设备文件,存放特殊文件和设备文件

/etc:系统配置文件目录

/home:普通用户家目录

/root:系统用户家目录

/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序

/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件

/lib64:专用于x86_64系统上的辅助共享库文件存放位置

/etc:配置文件目录

/media:便携式移动设备挂载点

/mnt:临时文件系统挂载点

/opt:第三方应用程序的安装位置

/srv:本系统提供服务的特定数据

/tmp:临时文件存储位置

/usr: 可共享的只读数据

/var: 变量数据文件

/proc: 用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统


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

1.文件管理

touch命令可以创建空文件及更改文件的时间(访问时间atime和修改时间mtime)

新建文件file1

[root@rocky2 ~]# touch file1

将文件file1的时间记录更改为7月1日19点30分

[root@rocky2 ~]# touch -c -t 07011930 /root/file1

将/root/file4文件的访问/修改时间(atime/mtime)设置成与/etc/passwd文件相同

[root@rocky2 ~]# touch -r /etc/passwd /root/file1


mkdir命令创建目录

创建目录test

[root@rocky2 ~]# mkdir test

创建目录test2,权限为777(系统默认权限755)

[root@rocky2 ~]# mkdir -m 777 test2


rmdir命令删除空目录

删除空目录test

[root@rocky2 ~]# rmdir test

删除空目录test2,-p表示递归

[root@rocky2 ~]# rmdir -p /root/test2       #由于/root目录不是空的,所以/root目录无法删除

rm命令可以删除系统中的文件和目录

删除文件file1

[root@rocky2 ~]# rm file1

删除目录test

[root@rocky2 ~]# rm -rf test


cp命令复制文件和目录到其它目录。如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息

将文件/root/file1复制到/data,并重命名为file2

[root@rocky2 ~]# cp /root/file1 /data/file2


mv命令可以对文件和目录更改名称,以及移动文件和目录

把文件file1重命名为file2

[root@rocky2 ~]# mv /root/file1 /root/file2

把文件file2移动到目录/data

[root@rocky2 ~]# mv /root/file2 /data


2.用户管理及组用户

useradd命令可以在系统中创建一个用户账户,为新账户分配用户UID、组群、主目录和登录Shell等。新创建的用户账户默认是被锁定的,无法使用,需要使用passwd命令设置密码后才能使用。创建用户账户就是在/etc/passwd文件中为新用户增加一条记录,同时更新/etc/shadow和/etc/group文件。

新建用户zhang

useradd -u 666 -d /home/www -g games -s /sbin/nologin zhang

然后/etc/passwd多出一条记录

zhang:x:666:20::/home/www:/sbin/nologin


passwd命令可以设置或修改用户的密码,普通用户只能更改自己的用户密码,root用户可以设置或修改任何用户的密码。

修改zhang的密码

passwd zhang  #不加用户名表示修改当前用户密码


usermod命令可以修改用户账户属性

修改zhang的家目录为/home/zzz,-m表示把就目录的的内容移到新目录

usermod -d /home/zzz -m zhang

修改主群和附加群

usermod -g root -G mail zhang

修改shell

usermod -s /bin/bash zhang


userdel命令可以在系统中删除用户账户

删除用户zhang

userdel zhang

连家目录一起删除

userdel -r zhang


groupadd命令可以在系统中创建组群账户

创建群组lol

groupadd lol

创建群组,GID为800

groupadd -g 800 lol800


groupmod命令可以在系统中修改组群账户

修改GID groupmod -g 900 lol800

修改群组名称为lol900

groupmod -n lol900 lol800


groupdel命令可以在系统中删除组群账户

删除群组lol

groupdel lol


3.权限

chown命令可以更改文件和目录的用户所有者和组群所有者

修改文件1.txt的所有者

chown zhang 1.txt

修改文件1.txt的组群所有者

chown :root 1.txt

修改文件1.txt的所有者和组群所有者

chown zhang:root 1.txt chown zhang.root 1.txt

将目录/data连同它的下级文件和子目录的用户所有者/组群所有者更改为zhang/root,慎用

chown -R zhang:root /data


chmod命令可以改变文件或目录的访问权限

更改1.txt文件权限,添加用户所有者为读取、写入,组群所有者为读取权限,取消其他用户读取、写入和执行的权限

chmod u+rw,g=r,o-rwx 1.txt

也可用数字来表示

chmod 640 1.txt