2.4 使用命令行工具管理文件
目标: 学习完本节后, 学员应能够: 创建、复制、移动和删除文件与目录。
2.4.1 创建目录
mkdir 命令可创建一个或多个目录或子目录 (mkdir dir1 dir2 可以创建多个目录) 。
1 | mkdir "目录名称" |

mkdir -p 可以创建目录树, 但是需要小心拼写错误。
1 | mkdir -p /递/归/路/径/ |

2.4.2 复制文件和目录
cp 命令可复制文件, 在当前目录或指定目录中创建新文件。它也可将多个文件复制到某一目录中。
注意: 如果目标文件已存在, 则 cp 命令会覆盖该文件。
1 | cp 源文件 (可以为多个文件 空格分隔) 目标文件 |

在通过一个命令复制多个文件时, 最后一个参数必须为目录。默认情况下, cp 不复制目录, 而会忽略它们。

cp -r 递归, 可以复制目录及其子目录。
1 | cp -r 源目录 目标目录 |

2.4.3 移动文件和目录
mv 命令可将文件 (或目录 不需要-r参数也可以移动目录) 从一个位置移动到另一个位置。
1 | mv 文件 目标目录 |

如果位置相同, 这实际上是重命名。

2.4.4 删除文件和目录
rm 命令删除文件 (不能删除目录) 。
1 | rm 文件名 |

rm -r 删除目录。
1 | rm -r 目录名 |

rm -rf 强制递归删除, 不会进行提示。
1 | rm -rf 文件/目录 |

2.4.5 文本文件读取
2.4.5.1 cat
用来阅读短文件, 直接显示整个文件的全部内容。
1 | cat 文件名 |

2.4.5.2 less
用来阅读长文件, 先显示文件的第一屏的内容, 通过PgUp, PgDn翻页来阅读, 按q退出。
1 | less 文件名 |


2.4.5.3 head
用来阅读文件, 不加任何选项默认只显示前十行。
常用选项: -数字 (数字是任意) 。
1 | head -行数 文件名 |

2.4.5.4 tail
用来阅读文件, 默认显示最后10行。
常用选项: -数字 (数字是任意) 。
1 | tail -行数 文件名 |

2.4.6 用户账户切换
su: 切换到另一个用户的身份。
管理员 (root身份) 切换到普通用户的时候是不需要密码。
普通用户切换到普通用户的时候需要密码。
普通用户切换到root也是需要密码。
常用选项: -l (简写为-) , 模拟登陆过程。
1 | su -(模拟登陆) 用户名 |

2.4.7 获取命令的帮助
执行man命令名来获取这个命令的使用帮助。
重点查看SYBOPSIS (语法格式) 、DESCRIPTION (选项的含义和用法描述) 。
按/查找的内容, 例如: /word,就会查找包含word的文字描述, 按n或者N来切换不同的查找的结果。按 PgUp 、PgDn 翻页, 按q键退出。


2.5 使用systemctl控制服务
目标
学习完本节后, 学员应能够: 使用systemctl系统控制器, 用来管理linux系统服务的开启/关闭资源的运行状态。
控制服务当前运行的状态:
1 | systemctl start/stop/restart/status 服务名称 |
2.5.1 查看服务状态
1 | systemctl status 服务名称 |

2.5.2 启用开机自启
1 | systemctl enable 服务名称 |

2.5.3 禁用开机自启
1 | systemctl disable 服务名称 |

2.5.4 启动服务
1 | systemctl start 服务名称 |

2.5.5 关闭服务
1 | systemctl stop 服务名称 |

2.5.6 重启服务
1 | systemctl restart 服务名称 |

3 从红帽和 DNF 软件仓库下载、安装、更新和管理软件包
目标:
1.使用 dnf 命令查找、安装和更新软件包。
2.启用和禁用红帽或第三方 DNF 软件仓库。
3.1 使用dnf或者yum来安装和删除软件
1 | dnf -y install 软件名 //安装指定的软件包 (同时安装此软件包的依赖) |
3.2 软件存储库解释
存放软件地方、通过地址获取。
BaseOS 存储库: http://content/rhel9.0/x86_64/dvd/BaseOS
应用流(AppStream)存储库: http://content/rhel9.0/x86_64/dvd/AppStream
3.3 配置软件包源
需要修改或新建
/etc/yum.repos.d
目录下任意一个后缀为repo的文件。
3.3.1 直接编辑文件
前提 (建议大家删掉系统自带, 这样才能更好验证自己是否做对)
1 | rm /etc/yum.repos.d/*.repo //删除该目录下所有文件 |
3.3.1.1 创建新的配置文件
1 | touch /etc/yum.repos.d/rhcsa.repo //创建配置文件为后缀repo的文件 |
3.3.1.2 修改新的配置文件
配置文件内容格式为
1 | [仓库1标识] //注: 标识这里不能留有空格 |
在我们的案例中 我们的配置文件内容应为
1 | [BaseOS] |
使用vim进行编辑。
1 | vim /etc/yum.repos.d/rhcsa.repo |


3.3.2 使用命令进行软件包源配置
根据 RedHat Documentation 中 Red Hat Enterprise Linux 9 文档的 Chapter 10. Managing custom software repositories 部分, 是可以使用命令进行软件包源的管理的。
1 | dnf config-manager --add-repo <repository_URL> //10.2. Adding a DNF repository |

3.5 验证配置内容
修改完dnf的配置文件之后, 需要执行相应的命令去验证是否能正常使用yum或者dnf。
1 | dnf clean all //清理缓存 |

3.6 查找软件包
使用dnf或者yum查找软件。
1 | dnf provides 工具名 //查询哪一个软件包能提供xxx文件 |
4 创建、管理和删除本地用户和组
描述 Linux 系统上用户和组的用途。
创建、修改和删除本地定义的用户帐户。
创建、修改和删除本地定义的组帐户。
4.1 描述用户和组概念
目标: 学习完本节后, 学员应能够: 描述 Linux 系统上用户和组的用途。
4.1.1 用户概念
用户账户为不同人员和运行的程序之间提供安全边界。
用户使用 username 进行标识, 操作系统为其分配唯一标识号 (UID) , 用户可能含有密码。
系统中的每个程序都以一个特定用户运行, 每个文件都有一个特定用户作为所有者。
用户帐户有三种主要类型:
- 超级用户 superuser
- 系统用户 system users
- 普通用户 regular users
superuser 就是 root 用户, UID=0, 具有系统的最高权限
system user 用于系统管理, 例如运行服务, 不需要用于系统登录
regular user 供用户进行日常系统管理, 通常具有权限限制
4.1.1.1 查看用户信息
可以使用 id 命令查看当前登录的用户或某用户信息。
1 | id 用户名 // 不加用户名的话就是当前用户 |

4.1.1.2 查看所属用户
ls -l 命令查看文件所属用户, ls -ld命令查看目录所属用户。
1 | ls -l 文件名 |

4.1.1.3 查看本地用户信息
系统使用/etc/passwd 文件存储有关本地用户的信息。/etc/passwd文件的每一行都包含了有关某个用户的信息。
1 | cat /etc/passwd |

文件内容的规则为
用户名: 用户的加密密码 (占位符) : 用户的UID编号: 主要组的GID : 该用户的简短注释、描述的信息 : 用户的家目录 : 可以使用交互式登陆
4.1.2 组概念
组是用户的集合, 组中用户共享文件和其他系统资源的访问权限。
组有 group name 和 GID, 匹配关系保存在 /etc/group 文件中。
1 | tail -5 /etc/group //查看最后五行 |

每个组条目被分为四个以冒号分隔的字段
wangpingan:x:8896:yang,wangdaye
组名:占位符:组ID:属于此组成员的用户列表, 作为补充组 (附加组)
主要组 (私有组或者基本组) 和补充组 (附加组) :
每个用户只属于一个 主要组 (GID) , 对应 GID 在 /etc/passwd 中。
创建普通用户时, 会创建一个与用户同名的组, 作为该用户的主要组, 该用户是这个用户主要组的唯一成员。
用户还可以有补充组, 补充组中的成员资格存放在/etc/group文件中, 根据所在组是否具有访问权限, 将授予用户对文件的访问权限, 不论这些组时主要组还是补充组。
id 命令可以显示用户的组信息:
1 | id 用户名 // 不加用户名的话就是当前用户 |

4.2 管理本地用户帐户
目标: 学习完本节后, 学员应能够: 创建、修改和删除本地用户帐户。
4.2.1 UID 范围
- UID 0 永远分配给 root 。
- UID 1-200 分配给 system users (红帽的系统服务) 。
- UID 201-999 分配给 system users, 供文件系统中没有自己的文件的系统进程使用。通常在安装需要它们的软件时, 从可用池中动态分配它们。程序以这些“无特权”系统用户身份运行, 它们仅访问运行所需的资源。
- UID 1000+ 分配给普通非特权用户。
4.2.2 用户新增
4.2.2.1 从命令行中创建用户
1 | useradd 用户名 |

4.2.2.2 新增用户指定新用户的UID
1 | useradd -u 1100 user002 |

4.2.2.3 新增用户指定家目录
1 | // 这里老师说要先新建好目录再创建用户 |

4.2.2.4 新增禁止登陆用户
1 | useradd -s /sbin/nologin user004 |

4.2.2.5 为新增用户指定主要组
1 | useradd -g wheel user005 |

4.2.2.6 为新增用户指定附加组
1 | useradd -G wheel user006 |

4.2.3 用户删除
4.2.3.1 从命令行中删除用户账户
1 | userdel user001 //只是删除用户, 并没有删除用户的家目录。 |

4.2.3.2 同时删除家目录
1 | userdel -r user002 //添加 -r 选项 删除用户同时删除用户的家目录。 |

4.2.4 修改用户
4.2.4.1 更改现有用户的UID
1 | usermod -u 1200 user003 |

4.2.4.2 更改现有用户登录的shell
1 | usermod -s /sbin/nologin user003 |

4.2.4.3 交互式修改用户密码
1 | passwd user003 |

4.2.4.4 非交互式修改密码 #1
1 | echo 123456 | passwd --stdin user003 |

4.2.4.4 非交互式修改密码 #2
1 | echo user003:123456 | chpasswd |

4.2.5 查询用户信息
id 命令可以显示用户的组信息:
1 | id 用户名 // 不加用户名的话就是当前用户 |

通过/etc/shadow查询用户信息
1 | cat /etc/shadow | grep student |
