系列文章目录
本系列为我自己学习Linux过程中记录的笔记。
第一章 Linux简介:Linux发行版、内核版本号的形式和含义、Linux常见目录
第二章 Linux虚拟机配置: CentOS7/openEuler NAT网络配置 关闭SELinux 关闭防火墙 设置静态IP
第三章 Linux基础之软件包管理工具:CentOS/openEuler的rpm、yum;Debian/Ubuntu的dpkg、apt
第四章 Linux符号链接(软链接)、硬链接的创建方式、特性和常见用途
第五章 Linux运行级别 进入不同控制台的快捷键 VI/VIM极速入门
第六章 Linux磁盘管理 硬盘&分区命名规则 Linux目录结构介绍 /etc/fstab详解 新硬盘挂载流程
第七章 Linux(CentOS)中共享文件的方法:U盘/移动硬盘、VMware Tools、FTP、Samba、http.server
文章目录
前言
太长不看 ,这里介绍了常见Linux发行版
、内核版本号
的形式和含义、常见目录
的介绍。
一、Linux发行版
Linux内核和发行套件
RHEL全称为Red Hat Enterprise Linux。
CentOS是RHEL的免费版,后被RedHat收购,CentOS 8 Stream之后停止更新。
OpenEuler十分类似CentOS。
本系列主要使用的是CentOS7。
二、内核版本
可用命令uname -a
查看内核版本号。
第一种形式
Linux 的版本号分为两部分,即内核版本与发行版本。内核版本号由3个数字组成:A.B.C
。各数字含义如下:
- A:内核主版本号。这是很少发生变化,只有当发生重大变化的代码和内核发生才会发生。在历史上曾改变两次的内核:1994年的1.0及1996年的2.0。
- B:内核次版本号。是指一些重大修改的内核。偶数表示稳定版本;奇数表示开发中版本。
- C:内核修订版本号。是指轻微修订的内核。这个数字当有安全补丁,bug修复,新的功能或驱动程序,内核便会有变化。
第二种形式
major.minor.patch-build.desc
- major : 主版本号,有结构变化才变更
- minor : 次版本号,新增功能时才发生变化,一般技术表示测试版,偶数表示生产版
- patch : 补丁包数或次版本的修改次数
- build : 编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
- desc : 当前版本的特殊信息,其信息由编译时指定,具有较大的随意性,有如下的标识是常用的:
- rc(或r),表示发行候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。
- smp,表示对称多处理器(Symmetric MultiProcessing)。
- pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。
- EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。
- mm,表示专门用来测试新的技术或新功能的版本。
- fc,在Red Hat Linux中表示Fedora Core。
三、常见目录介绍
bin
/bin
是系统的一些指令。bin为binary的简写,主要放置一些系统的必备程序,例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/sbin
一般是指超级用户指令。主要放置一些系统管理的必备程序,例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/bin
是用户安装的软件。主要放置一些应用软件的必备程序,例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb、wget等。
/usr/sbin
放置一些用户安装的系统管理的必备程序,例如:dhcpd、httpd、imap、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
如果运行一些很正常的诸如shutdown,fdisk的命令时,终端悍然提示:bash:command not found
,那么首先就要考虑root 的$PATH
里是否已经包含了这些环境变量。
运行echo $PATH
,查看$PATH
的内容,如果不全,则需要使用export
命令向PATH环境变量添加缺失的若干目录,如添加目录/usr/bin
到$PATH
:export PATH=$PATH:/usr/bin
。
etc
/etc/passwd
注意⚠️:虽然"x"并不表示真正的密码,但也不能删除,如果删除了 “x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以)。
把最后一项默认Shell改为/sbin/nologin
能禁止相应用户登陆。
/etc/shadow
$ man 5 shadow
- 为什么用户的密码信息没有保存在/etc/passwd文件中?
解:因为在/etc/passwd文件中保存了用户信息,所以很多操作过程中会调用这些信息,调用这些信息的时候就会读取/etc/passwd文件,用“ll”命令可以看到每个用户对/etc/passwd文件都有读的权限,若是真的把加密后的密码放在/etc/passswd中,那么任何用户都可以拿到加密的密码,然后去尝试破解这个密码,这种情况就比较危险了。在早期,加密的密码的确是存在/etc/passwd文件中的,后面为了安全性考虑。将加密的密码文件存在了/etc/shadow(影子口令文件)中了。
root@localhost:~#ll /etc/passwd
-rw-r--r-- 1 root root ... /etc/passwd
root@localhost:~#ll /etc/shadow
---------- 1 root root ... /etc/shadow
说明:
- /etc/passwd对所有用户都有读的权限;
- /etc/shadow相对来说很安全,但是之前说过,超级用户很多权限不受限制,所以超级用户可以编辑该文件。
每个用户的密码信息包含内容 用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:账号限制时间:失效时间:标志。这些信息中只有前两者比较重要,其他的大多数可以借助第三方工具,还有一些就真的很少用到。
用户密码:最好是≥8位 数字、字符、符号的组合。
- 为什么用户密码要8位以上?
Unix最早采用的加密算法是DES。DES能识别的密码为只有8位,所以早期的时候如果给用户设置10位长度的密码,其实真正有用的只有前8位,后面两位甚至可以不输入即可登录系统。但是现在Linux采用的加密算法大多是DES+MD5混合使用的,密码长度最长是255位,密码强度比较大。
MD5密码加密规则:输入长度不固定,输出长度固定;没有办法根据输出推断输入的值,即单向不可逆;
所以大多数破解密码不是根据输出推断输入,而是猜密码,只要CPU运算速度足够快,那么密码就可以破解,若是运算200年都不一定算出来,那么这样的密码就是可看作不可破解的。
用户密码有两点要求:一是强度足够,二是经常改变。
- 将
/etc/shadow
某行的第二项改为!!
能够禁止相应用户登陆
/etc/group
用户组配置文件,即用户组的所有信息都存放在此文件中。
记录组 ID(GID)和组名相对应的文件。etc/passwd
文件中每行用户信息的第四个字段记录的是用户的初始组 ID,那么,此 GID 的组名到底是什么呢?就要从/etc/group
文件中查找。
每行四个字段的含义
组名:密码:GID:该用户组中的用户列表
- 组名:也就是是用户组的名称,由字母或数字构成。同 /etc/passwd 中的用户名一样,组名也不能重复。
- 组密码:和 /etc/passwd 文件一样,这里的 “x” 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。
不过,用户设置密码是为了验证用户的身份,那用户组设置密码是用来做什么的呢?
用户组密码主要是用来指定组管理员的,由于系统中的账号可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。
- 组ID (GID)
就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。
这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。
- 组中的附加用户
此字段列出每个群组包含的所有用户。
需要注意的是,如果该用户组是某个用户的初始组,则该用户不会写入这个字段,可以这么理解,该字段显示的用户都是这个用户组的附加用户。
/etc/gshadow
/etc/gshadow
文件在类Unix系统中存储了组密码的信息。该文件的每一行包含了一个组条目,由冒号分隔的三个字段组成:
- 组名:这是组账户名称。
- 密码:这是组密码,通常用于允许组成员更改他们的用户账户密码。
- 组管理员列表:这是一个逗号分隔的列表,包含了被授权管理该组的用户列表。
- 组成员列表:这是一个逗号分隔的列表,包含了属于该组的用户。
这个文件通常只能由root用户读取和修改。
下面是/etc/gshadow
文件的一个简单示例:
root:::
bin:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::user1,user2
在这个例子中,wheel
组有两个管理员,即user1
和user2
。
其他组没有指定管理员,因此除root用户外,只有组成员可以管理它们自己的账户。