前言:本教程适合Linux零基础学习,也适合Linux期末考试的小伙伴,从头到尾理论与实操相结合,让你快速对Linux进行了解和掌握。
一、Linux概述
为什么要学习Linux操作系统?
完全免费-开源
任何用户均可下载使用
安全稳定
极少蓝屏
支持多平台
多用户多任务
等等
了解Unix与Linux发展史
Linux内核官网
www.kernel.org(内核下载地址)
Linux内核版本说明
举个例子:6.10.6:6表示主版本、10表示次版本、6是末版本
在Linux系统中我们可以使用uname -r指令查看内核版本
下面是我在kali linux系统使用uname -r指令查看内核版本
开发版
厂商加入自己的桌面应用程序之后开发
偶数次版本号(如 6.2、6.4等)表示稳定版本。
奇数次版本号(如 6.3、6.5等)表示开发中的不稳定版本,通常用于测试新功能。
发行版
目前发行版本:RHEL系列(商业版本)与Debian系列(社区版本) 两者命令有细微差别
二、用户管理
用户和用户组概述
用户
用户就是使用系统的人。
Linux操作系统中每一个用户都有一个用户名(账号),系统为每一个用户分配一个唯一的用户标识,称为UID。
UID是系统辨识用户的唯一标识。
root用户
root用户也被称为超级用户或系统管理员用户,其UID为0。root用户在Linux操作系统中拥有最高权限。root用户权限过高,为了保证系统安全,一般不通过root用户登录Linux操作系统,而且要避免普通用户得到root权限。
系统用户
系统用户是Linux操作系统为满足自身系统管理需要而内建的一类用户,通常在安装操作系统或相应软件时自动创建并保持默认状态。系统用户权限低于root用户,UID通常为1~999(改动)。系统用户由操作系统自动管理的,不能用于登录系统,所以系统用户也称为虚拟用户。
普通用户
普通用户是由root用户创建的用户,可以登录操作系统并使用系统资源,但它只能操作自己所拥有权限的文件和目录。可以通过root用户设置普通用户的权限,但为保证系统安全,一般不会给普通用户设置太高权限。普通用户的UID通常为1000~6000(动)。
在普通用户的条件下使用id指令可以查看自身的UID,通过图片可以看到用户id=1000,说明kali是个普通用户。然后使用sudo su指令输入密码后进入root用户,在root权限下再使用id指令我们可以看到用户id=0。
用户组
在Linux 操作系统中,为了方便系统管理员按照用户的特性组织和管理用户,提高工作效率,产生了用户组的概念。用户组是具有相同特性的用户集合。当系统管理员统一为某个用户组赋予某种权限时,用户组中的所有用户都会同时拥有该权限。Linux操作系统也会为不同的用户组分配一个唯一标识,称为GID(Group Indentifcation )。
一个用户可以同时是多个用户组的成员,当一个用户属于多个用户组时,这些用户组分为基本组与附加组,其中基本组只有一个,而附加组可以有多个。基本组和附加组都可以在添加用户时指定。如果添加用户时没有指定用户所属的组,系统会默认为用户指定一个基本组,这个基本组的名称与用户名相同,但系统不会为用户指定默认的附加组。基本组是用户的主组,例如,一个人职业为医生,同时他还在大学中给医学院学生授课,也就是说他同时归属于医生和老师两个群体,但是当向别人介绍他时,只会说他是一名医生,医生就是他的基本组,老师是他的附加组。
用户账号文件/etc/passwd
在Linux操作系统中,用户账号的相关信息(密码除外)都保存在/etc/passwd文件中。
所有用户都可以查看/etc/passwd文件中的内容。
案例2-1 查看/etc/passwd文件内容
cat /etc/passwd
root:x:0:0:root:/root:/usr/bin/zsh root用户
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
.....
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin 系统用户
kali:x:1000:1000:kali,,,:/home/kali:/usr/bin/zsh
newuser:x:1001:1001::/home/newuser:/bin/sh 普通用户
用户影子文件/etc/shadow
/etc/shadow文件是根据/etc/passwd文件产生的,称为影子文件。因为/etc/passwd文件权限是全局可读,任务一个用户都可以读取该文件的内容,所以Linux操作系统将密码进行加密后转移到了/etc/shadow文件中。/etc/shadow文件只有root用户可读。
案例2-2 查看/etc/shadow文件内容
cat /etc/shadow
添加用户useradd命令
添加用户就是在系统中创建一个新的账号,并为该账号设置用户名称、用户组、主目录、登录Shell等资源。 添加用户的命令为useradd。 很重要
格式:useradd 选项 用户名
useradd命令常用选项(标黄需要重点记忆)
|----|---------------------------------|
| 选项 | 说明 |
| -d | 指定用户登录目录 |
| -c | 指定账号的备注文字 |
| -e | 指定账号的有效期限 |
| -f | 缓冲天数,密码过期时在指定天数后关闭该账号 |
| -g | 指定用户基本组 |
| -G | 指定用户所属的附加用户组 |
| -m | 自动建立用户的登录目录 |
| -r | 创建系统账号 |
| -s | 指定用户的登录Shell |
| -u | 指定用户的用户ID。若添加-o选项,则用户ID可与其他用户重复 |
案例2-4 添加用户长岛icetea
useradd 长岛icetea
案例2-5 添加用户itcast,并指定用户的主目录为/usr/itcast
useradd -d /usr/itcast -m itcast
案例2-7 添加用户Addy,并设置用户ID为1024
useradd Addy -u 1024
设置用户密码passwd命令
Linux系统中使用passwd命令为用户设置密码。
格式:passwd 选项 用户名
passwd命令常用选项
|----|----------------------------|
| 选项 | 说明 |
| -l | 锁定密码,锁定后密码失效,无法登录(新用户默认锁定) |
| -u | 解除密码锁定 |
| -d | 删除密码,仅系统管理员可使用 |
| -S | 列出密码相关信息,仅系统管理员可使用 |
| -f | 强行执行 |
案例2-8 为新添加的itcast用户设置密码
passwd itcast
删除用户命令userdel命令
userdel命令可以删除指定用户及用户相关的文件和信息
格式 userdel 选项 用户名
userdel命令常用选项
|----|----------------------|
| 选项 | 说明 |
| -f | 强制删除用户,即便该用户为当前用户 |
| -r | 删除用户的同时,删除与用户相关的所有文件 |
三、文件管理
Linux文件类型
|---------|----------------------------|
| 文件类型标识符 | 含义 |
| - | 普通文件。文件属性信息长列表中以"-"开头。 |
| d | 目录文件。文件属性信息长列表中以"d"开头。 |
| l | 链接文件。文件属性信息长列表中以"l"开头。 |
| c | 字符设备文件。文件属性信息长列表中以"c"开头。 |
| b | 块设备文件。文件属性信息长列表中以"b"开头。 |
| p | 管道文件。文件属性信息长列表中以"p"开头。 |
| s | Socket文件。文件属性信息长列表中以"s"开头。 |
案例3-1 分别查看/etc目录下的文件类型
cd /etc #切换到/etc目录
ls --l #查看所有文件属性信息
目录操作命令
ls命令
ls命令用于列出参数的属性信息。
格式 ls 选项 参数
参数既可以是目录,也可以是文件。
ls命令常用选项
|----|----------------------------------------|
| 选项 | 说明 |
| -l | 以详细信息的形式展示出当前目录下的文件 |
| -a | 显示当前目录下的全部文件(包括隐藏文件) |
| -d | 查看目录属性 |
| -t | 按创建时间顺序列出文件 |
| -i | 输出文件的i-node编号 |
| -R | 列出当前目录下的所有文件信息,并以递归方式显示各个子目录中的文件和子目录信息 |
案例3-4:查看当前目录下的文件
ls
案例3-5:查看当前目录下的所有文件,包括隐藏文件
ls -a
mkdir命令
mkdir命令用于创建目录。
格式 mkdir 选项 参数
mkdir命令常用选项
案例3-6 在当前目录下创建itheima目录
mkdir itheima
rmdir命令
rmdir命令用于删除目录。
格式 rmdir -p 参数
rmdir命令的参数既可以是目录也可以是路径。
rmdir命令只有一个常用的选项-p,-p选项表示递归删除,当参数为路径时,如果子目录被删除后,其上层目录也成为空目录,则上层目录会一并删除。当参数为一个空目录时,不需要使用选项,直接删除目录。
使用rmdir -p itheima指令删除,然后通过ls -l 查看已经被删除。
文件内容显示命令
cat命令
cat命令用于将文件内容打印到输出设备。
格式 cat 选项 文件名
cat命令常用选项
cat 1.sh
查看1.sh的内容
案例3-9:显示/etc/passwd文件内容,并对每一行进行编号。
cat -n /etc/passwd
more命令
more命令用于分页显示文件内容。
格式 more 选项 文件名
more命令常用选项
|----|-----------------|
| 选项 | 说明 |
| +n | 从第n行开始显示文件内容 |
| -n | 定义屏幕大小为n行 |
| -c | 从顶部清屏,然后显示后面的内容 |
| -p | 与-c选项类似,通过清屏换页 |
| -s | 把连续的多个空行显示为一行 |
| -u | 去掉文件内容中的下画线 |
案例3-10:分页显示/etc/passwd文件内容
more /etc/passwd
less命令
less命令也可用于分页显示文件内容,但与more命令不同的是,less既支持向下翻页,也支持向上翻页。
格式 less 选项 文件名
less命令常用选项
|----|----------------------------------|
| 选项 | 说明 |
| -e | 文件显示结束后,自动退出文件。如果不加该选项,必须按q键退出文件 |
| -i | 忽略搜索时的大小写 |
| -m | 显示查看文件内容的百分比 |
| -N | 显示每行的行号 |
| -s | 将连续空行显示为一行 |
案例3-11:分页显示/etc/passwd文件内容,要求可以向上翻页
less /etc/passwd
head命令
head命令用于查看文件的前n行内容
格式 head 选项 文件名
head命令常用选项
|----|---------------|
| 选项 | 说明 |
| -n | 显示的行数,默认显示10行 |
| -v | 显示文件名 |
案例3-12:显示/etc/passwd的前6行内容
head -6v /etc/passwd
tail命令
tail命令用于显示文件的后n行内容
格式 tail 选项 文件名
tail命令的常用选项及含义与head命令相同,只是tail命令从文件末尾开始计算行数。
案例3-13:显示/etc/passwd的后4行内容
tail -4 /etc/passwd
文件查找命令
find命令
find命令可以通过关键字,从指定的目录开始递归搜索各个子目录,查找符合条件的文件。
格式 find 路径 选项 查找关键字
路径补充:./表示当前目录
/ 表示跟目录
../表示上级目录
find命令常用选项
|----------|--------------------|
| 选项 | 说明 |
| -name | 根据文件名查找文件 |
| -lname | 根据文件名查找符合条件的符号链接文件 |
| -size | 根据文件大小查找文件 |
| -user | 根据文件所有者查找文件 |
| -group | 根据用户组查找文件 |
| -uid n | 查找UID为n的用户所有的文件 |
| -gid n | 查找GID为n的用户组所有的文件 |
| -empty | 查找大小为0的目录或文件 |
| -type x | 查找类型为x的文件 |
| -atime n | 查找n天以前访问过的文件 |
案例3-14:查找当前目录下名称为passwd的文件。
find -name passwd
当前目录下没有名称为passwd的文件,find命令没有输出任何结果。
which命令
which命令主要用于搜索可执行文件的位置。
格式 which 命令
案例3-16:查看命令ls的文件位置。
which ls
whereis命令
whereis命令的功能与which命令类似,但whereis命令除了可以查找可执行文件,还可以查找帮助文件。
格式 whereis 选项 命令
whereis命令常用选项
|----|-------------|
| 选项 | 说明 |
| -b | 只查找可执行文件的位置 |
| -m | 只查找帮助文件 |
案例3-17:分别查找命令ls的可执行文件和帮助文档位置。
whereis -b ls
whereis -m ls
文件复制、移动、删除
文件复制命令cp
cp命令原意为"copy",即拷贝,该命令可以将一个或多个文件复制到指定目录。
格式 cp 选项 源文件 / 目录 目标文件 / 目录
cp命令常用选项
|----|-------------------------------------|
| 选项 | 说明 |
| -a | 递归复制目录及目录下的文件,在复制时保留原有文件的属性信息(如时间戳) |
| -R | 递归复制目录及目录下的文件,在复制时使用新的文件属性信息 |
| -p | 复制的同时不修改文件属性,包括所有者、所属组、权限和时间 |
| -f | 强行复制文件/目录,无论目标文件/目录是否存在,即覆盖原文件 |
| -i | 与-f选项相反,在覆盖原文件之前给出提示 |
示 例1: 使用cp命令将a.txt文件中的内容复制到b.txt文件中
cp a.txt b.txt
示 例2: 使用cp命令将a.txt文件和b.txt文件复制到dir目录下。
mkdir dir
cp a.txt b.txt dir
文件移动命令mv
mv命令有两个功能: 第一个功能是重命名文件。
第二个功能是移动文件/目录到指定目录。
格式 mv 选项 文件/目录 目标文件/目录
mv命令常用选项
|----|---------------------------|
| 选项 | 说明 |
| -f | 强制复制移动文件或重命名文件 |
| -i | 与-f选项相反,在移动文件或重命名文件之前给出提示 |
案例3-19:在当前目录下创建mvdir目录,并将a.txt、b.txt文件、dir目录移动到mvdir目录。
mv a.txt b.txt dir mvdir
文件删除命令rm
rm命令用于删除文件/目录。
格式 rm 选项 文件/目录
rm命令常用选项
|-----|-----------------------------------|
| 选项 | 说明 |
| -f | 强制删除文件/目录 |
| -rf | 选项-r与-f结合,删除指定目录中所有文件和子目录,并且不逐一确认 |
| -i | 在删除文件/目录时对要删除的内容逐一进行确认(y/n) |
案例3-20:删除mvdir目录。
rm -rf mvdir
文件更新
touch命令用于修改文件/目录,时间为系统当前时间,包括文件存取时间和修改时间。如果文件不存在,则创建一个新的文件。
格式 touch 选项 文件名
touch命令常用选项
|----|--------------------|
| 选项 | 说明 |
| -a | 只修改文件读取时间 |
| -c | 如果文件不存在,不创建新文件 |
| -d | 使用指定的日期,而不使用系统当前时间 |
| -m | 只修改文件的修改时间 |
案例3-21:修改文件a.txt的时间戳为系统当前时间
文件打包tar命令
tar命令是一个文件/目录打包归档命令,它可以把许多文件/目录打包成.tar格式的文件包(通常为tar包)。但tar命令不是压缩命令,因为它打包之后的文件与原来大小相同。
格式 选项 包名 文件/目录
tar命令常用选项
|----|----------------------------|
| 选项 | 说明 |
| -c | 创建新的备份文件 |
| -f | 指定备份文件名,该选项通常是必选项 |
| -x | 从备份文件中还原文件 |
| -t | 列出备份文件内容,即查看备份了哪些文件 |
| -v | 显示打包过程 |
| -z | 打包完成后使用gzipp命令将包压缩 |
| -j | 打包完成后使用bzip2命令将包压缩 |
| -p | 打包时保留文件原来的属性 |
| -k | 保留原文件,例如,还原包中文件时,遇到同名文件不覆盖 |
案例3-27:将/usr/bin目录下的文件打包并使用gzip命令压缩。
chmod命令
1. 采用字符方式更改文件/目录权限
2. 采用数字方式更改文件/目录权限
使用数字设置文件/目录权限时,不同的权限对应不同的数值,读权限对应数值为4(100),写权限对应数值为2(010),执行权限对应数值为1(001)。
用户对文件/目录的权限由读、写、执行这3种权限的数值相加结果表示。
格式 chmod 数值表示的权限 文件/目录
案例3-30:设置a.txt文件的权限,所有者具有读、写、执行权限,同组用户和其他用户只具有读权限
(未完待续)