1.解释开源许可证。
开源许可证:是指一种被用于计算机软件或其他产品的,允许在指定的条款内使用,修改或分发其源代码,蓝图或设计的许可证。是一种允许我们在一定条件内按照我们的需要自由使用和修改软件及其源代码的法律条款,籍此条款,这个软件的作者(可能是一个人,也可能是很多人)可以将这些权利许可给我们,并告知我们一些使用限制。这些条款有时由个人起草,有时由商业公司起草,但最广泛使用的是由非营利组织(例如 自由软件基金会,FSF)起草的各种开源许可证,通常情况下,作为开发者的我们可以通过按照这些许可证的要求放置许可证条款(有的许可证可能有别的要求,也有可能没有要求)来声明我们基于这些许可证开源。
开源许可证的类型:国际公认的开源许可证共有80多种。共同特征:都允许用户免费地使用、修改、共享源码,但是都有各自的使用条件。
根据使用条件的不同,开源许可证分成两大类:宽松式(Permissive) 许可证:BSD,MIT,Apache 2;著佐权(Copyleft) 许可证:AGPL,GPL,LGPL,Mozilla。
开源许可证GPL BSD MIT Mozilla Apache LGPL有什么区别?
GPL(通用公共许可证):由自由软件基金会发行的用于计算机软件的协议证书,使用此证书的软件称为自由软件。大多数的GNU程序和超过半数的自由软件使用它。
BSD(Berkly Software Distribution):是自由软件(开源软件的一个子集)中使用最广泛的许可证之一。BSD许可证比较宽松。事实上,BSD许可证被认为是copycenter(中间版权),界乎标准的copyright与GPL的copyleft之间。
MIT:源于大学,是十分宽松的许可协议。用户可以拿自己的代码做任何想做的事情;用户在项目副本中要包含版权声明和许可声明;用户无需承担任何责任。
Mozilla:Mozilla 公共许可证第二版(简称 MPL2.0(The Mozilla Public License))是一个弱 copyleft 许可证,但是其条款的特殊性质又使其更像一个宽松许可证。
Apache:与BSD类似,同样适用于商业软件,鼓励代码共享和尊重原作者的著作权,同样允许代码修改,但它更重视专利权。现在热门的 Hadoop、Apache 家族、SVN、MongoDB 等项目都是基于该许可协议研发的。
LGPL:是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议,同样来源于自由软件联盟GNU,可以翻译为更宽松的GPL协议,也属于传染性开源。
2.安装发行版系统。(rockyliunx centos ubuntu)
3.Linux中总结(关于man)
Linux系统提供了相对比较丰富的帮助手册(man),man是manual的缩写,在日常linux系统管理中经常用到。man 本身也提供自己的帮助手册,通过man就可以查看。
1、man手册分为多个section,每个section用一个字符表示。
section可以理解为类别,例如:man 1 passwd 和 man 5 passwd是不一样的类别。通常我们使用man passwd,这个时候man就按照预先设置的搜索路径和顺序去搜索passwd,当搜索到一个就停止继续搜索并将结果显示出来,如果我们指定了section,那么man只会在指定的section里去查找man帮助页。
2、man的配置文件。
man的配置文件是/etc/man.config,我们现学现用,可以通过man 5 man.config看看这个配置文件的帮助信息。对于man.config,我们日常使用的不多,一般都是默认的设置,比较重要的是MANPATH (man帮助文件存放的路径)和MANSECT(man搜索的顺序)两个参数,通常不建议修改。
3、man的日常使用。
man常用操作:使用man打开帮助手册,里面很多操作与我们经常使用的vi编辑器类似,当然可以通过h键查看具体的帮助信息,下面只简单谈谈我们经常使用的一些操作。上下翻页。最常用的是使用空格键向下翻页:另外,[Page Up] 可以向上翻页,[Page Down]也可以实现向下翻页,[Home]返回首页,[End]返回末页。
行移动:使用键盘方向键进行上下文移动,或者使用j键往下移动, k键向上移动。
查找:使用/string向下搜索string关键字,?string向上搜索string关键字。n键继续关键字的下一个搜索,N键反向搜索关键字。
书签:man中可以定义书签,当我们想把帮助页的某个位置记录下来以便后面查看,就可以定义个书签。例如在当前位置定义个书签letter,我们需要输入m键后,再输入定义的书签名letter即可。那么如何使用这个书签呢?在当前帮助页里输入单引号'letter就可以定位到书签的位置。
执行shell:在man页内可以执行shell,通过!号再输入shell即可执行。例如:!echo 'hello world',即可打印hello world。这个在日常工作中基本用不到,这里提出来也就想开阔下大家的思路。
退出:q键退出当前帮助手册。
man常用命令参数
man -a:搜索并打开所有man中同名帮助,例如 man passwd ,你首先会进入一个PASSWD(1) section用户命令类的帮助手册,你再按q键退出当前正在显示的帮助手册,就会进入PASSWD(5) section文件格式类的帮助手册。
man -aw:显示所有手册文件的路径。例如man -aw passwd
- /usr/share/man/man1/passwd.1.gz
- /usr/share/man/man5/passwd.5.gz
man -M:指定手册文件的搜索路径,有的时候我们自己安装的软件是带有自己的帮助文件的,通常不在我们的MANPATH 里面,那么我们就可以手动指定man搜索的文件路径。如 man -M /home/mysql/man mysql 显示的就是你安装的mysql的帮助,而不是系统默认的旧版mysql的帮助。
man -k:根据关键字搜索联机帮助,是一种模糊搜索。例如要查找"passwd"相关的信息,使用man -k passwd会找到很多和passwd相关的帮助页。
man -f:关键字精确搜索,与-k不同,它只搜索与关键字完全匹配的帮助页。
问题:
(1)如何通过一个简短的关键字,eg.process获取相关命令?
ls cpu
cat /etc/process
(2)通过命令描述,选择一个命令,获取命令的man文档。
whatis date
man 1 date <== 1
(3)解读man文档,man分几部分?man每个部分的解释,特别是语法部分。
man 页面分组
不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
- 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)根据语法部分 简要写几个操作
man -w 1 passwd
4.切换到/etc目录,列出fstab文件的详细信息,详细解决fstab一行,每个或每几个字符的详细含义。
-rw-r--r--. 1 root root 709 May 15 20:53 /etc/fstab
-(文件类型)rw-(用户的权限)r--(用户组权限)r--(其他人权限)
root (所属人)root(所属组) 709(大小) May 15 20:53 (修改时间)/etc/fstab(文件名)
5.简要说明FHS结构
Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。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 databin: 保证系统拥有完整功能而提供的应用程序sbin:lib:32位使用lib64:只存在64位系统include: C程序的头文件(header files)share:结构化独立的数据,例如doc, man等local:第三方应用程序的安装位置bin, sbin, lib, lib64, etc, share/var: variable data filescache: 应用程序缓存数据目录lib: 应用程序状态信息数据local:专用于为/usr/local下的应用程序存储可变数据lock: 锁文件log: 日志目录及文件opt: 专用于为/opt下的应用程序存储可变数据run: 运行中的进程相关数据,通常用于存储进程pid文件spool: 应用程序数据池tmp: 保存系统两次重启之间产生的临时数据/proc: 用于输出内核与进程信息相关的虚拟文件系统/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
cat命令:文本输出命令。
$ cat filename
②从键盘创建一个文件。
$ cat > filename
只能创建新文件,不能编辑已有文件.
③将几个文件合并为一个文件。
$cat file1 file2 > file
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
1.超级管理员: 拥有最高权限的账户(默认叫做root)可以正常登录 人可以使用
2.普通用户: 权限受限的用户 可以正常登录= 人可以使用
3.程序用户: 不可以正常登录,只给程序使用,人不能用
系统启动的时候, 没有登录用户,
程序用户,专门给程序使用的用户,无需登录,直接启动程序
程序用户是给程序使用 , 普通用户超级管理员用户是给人使用
不登录人使用的用户,只运行一些程序用户只给运行的程序分配 程序用户
(2)组
组是需要共享文件和其他系统资源访问权限的用户集合,组可以向一组用户授予文件访问权限。与用户相似,组也有组名称。在内部,系统通过分配唯一标识号(GID)来区分不同的组。组名称和GID的对应关系存放在组账号信息数据库中/etc/group。
主要组和附属组
主组:每个用户都有一个主组,在/etc/passwd文件中GID号对应的组。默认情况下,在创建新用户时,会创建一个与用户同名的新组,该组将用作新用户的主要组。
附属组:用户也可以有附属组,附属组的成员资格由/etc/group文件确定。根据所在的组是否有访问权限,将授予用户对文件的访问权限。
uid gid
uid :系统用来识别用户的唯一身份标识
gid: 系统用来识别组的唯一身份标识
uid 只能是整数 0-60000 不能重复
超级管理员 uid 一定是0
root 不一定是超级管理员
识别是否为超级管理员只看uid 是否为0
id + 用户名
[root@localhost data]#id root
uid=0(root) gid=0(root) 组=0(root)
uid 的范围centos7
超级管理员: uid为0
程序用户uid 范围 : 1-999
普通用户uid 范围 :1000 - 60000
修改uid 的范围(补充)
[root@localhost data]#vim /etc/login.defs
/etc/passwd 存放用户信息
每个字段用冒号隔开
ky22:x:1003:1003:nginx:/home/ky22:/sbin/nologin
第一字段:用户名
第二字段:密码占位符
第三字段:uid
第四字段:组id
第五字段:备注信息
第六字段:家目录位置
第七字段:默认shell程序
/etc/shadow 存放密码信息
每个字段用冒号隔开
zhangsan:$6$3/O6NuAjdnApLp2F.V1n.::0:99999:7:::
第一字段:用户名
第二字段:加密后的密码 如果为 * !! 无法登录
第三字段:上一次修改密码时间,数字的含义为 从1970-1-1 到改密码的时间 一共经历多少天
第四字段:最小修改密码间隔时间 如果是0 可以随意修改, 7代表7 天后才可以修改
第五字段: 密码有效期 默认99999天 273年,设置为 7 代表7天要求你重新设置密码
第六字段:密码到期提醒时间 设置为7 代表密码到期前7天会提示你
第七字段:密码过期后的宽限天数 设置为10 表示密码到期后还可以使用10天
第八字段:用户失效时间 同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间 到期后无法登录
第九字段:保留字段
useradd 添加用户
通式: useradd [选项].... 用户名
-u 指定uid
-g 指定基本组(组名和gid都可以)
-G 指定附加组(组名和gid都可以)
-d 指定家目录
-M 不建立家目录
-s 指定默认登录shel
-e 指定用户失效时间 可使用 YYYY-MM-DD 的日期格式。
-r 建立系统用户
当建立用户时不加选项
1.会按顺序使用uid号
2.会建立一个 和用户名同名的基本组
3.按顺序使用gid
4.会在/home 建立一个和用户名同名的家目录
5.会将用户信息保存在 /etc/passwd 文件中
[root@localhost zhangsan]#useradd -M -s /sbin/nologin lijiu
[root@localhost zhangsan]#tail -n1 /etc/passwd
lijiu:x:1009:1009::/home/lijiu:/sbin/nologin
修改密码 passwd
passwd 用户名
改密码 交互
[root@localhost zhangsan]#passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
passwd [选项] 用户名
-l 锁定用户 不让登录
-u 解锁
-d 清空密码 无需使用密码直接登录
-S(大写) 查看锁定状态
[root@localhost ~]#passwd -u lisi
解锁用户 lisi 的密码。
passwd: 操作成功
[root@localhost ~]#passwd -d lisi
清除用户的密码 lisi。
passwd: 操作成功
usermod 修改已有用户的属性
-l(小写L) 修改用户登录名
-L (大写) 锁定用户
-U (大写) 解锁用户
-u(小写) 指定uid
-g 指定基本组(组名和gid都可以)
-G 指定附加组(组名和gid都可以)
-d 指定家目录
-M 不建立家目录
-s 指定默认登录shel
-e 指定用户失效时间 可使用 YYYY-MM-DD 的日期格式。
[root@localhost ~]#usermod -s /sbin/nologin lisi
[root@localhost ~]#tail -n1 /etc/passwd
lisi:x:1002:1002::/home/lisi:/sbin/nologin
[root@localhost ~]#usermod -u 10000 lisi
usermod: user lisi is currently used by process 16622
[root@localhost ~]#usermod -u 10000 lisi
[root@localhost ~]#tail -n1 /etc/passwd
lisi:x:10000:1002::/home/lisi:/sbin/nologin
删除用户 userdel
-r 连家目录一起删除
[root@localhost home]#userdel zhangsan
[root@localhost home]#ll
总用量 0
drwx------. 3 1002 lisi 78 8月 26 2021 hehe
drwx------. 14 lisi lisi 271 7月 31 11:10 lisi
drwx------. 3 mysql mysql 78 8月 25 2021 mysql
drwx------. 5 1000 1000 128 8月 27 2021 zhangsan
[root@localhost home]#userdel -r lisi
[root@localhost home]#ll
总用量 0
drwx------. 3 1002 1002 78 8月 26 2021 hehe
drwx------. 3 mysql mysql 78 8月 25 2021 mysql
drwx------. 5 1000 1000 128 8月 27 2021 zhangsan
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步