Linux学习入门
一:web架构全景
1.0 用户请求链路
当运维把应用程序部署完成后,用户请求链路如图:
- 首先用户在浏览器上输入域名,进行访问。
- 然后通过DNS进行解析域名,把域名解析成服务器IP地址。
- 当DNS解析成功后,用户客户端会给服务器进行TCP三次握手建立链接。
- 当链接成功后,会给服务器发送http请求报文。
- 服务器收到请求报文后,域名代理服务器首先进行判断路由。
- 如果路由是动态资源,则会访问后端服务。
- 后端服务先判断Redis缓存数据库中是否有数据,如果有则发送响应报文给用户客户端进行渲染显示。
- 如果Redis缓存数据库中没有数据,则从MySQL数据库中进行读取数据并且发送响应报文给客户端进行渲染显示,并且把数据缓存给Redis数据库。

1.1Dns解析域名
Dns域名解析是把域名解析成服务器的IP地址,具体解析步骤如下(如图):
- 首先用户在浏览器上输入www.baidu.com进行访问。
- 先查看本地缓存中和本地/etc/host文件中是否有www.baidu.com域名记录,如果直接跳转到页面。
- 如果没有,则会向递归DNS发送解析www.baidu.com请求。
- 当递归接收到解析请求,先向根DNS发送解析.com的请求,根DNS收起请求后,会向递归dns发送.com顶级域名的地址。
- 递归dns则会向.com顶级域名发送baidu.com解析请求,顶级域名则会向递归DNS响应权威DNS地址。
- 递归DNS向权威dns发送解析www.baidu.com请求,权威DNS进行解析并且把解析地址响应给递归DNS。
- 递归DNS接收到解析的IP地址,保持到缓存中,以便下次进行解析,并且响应给用户。
- 用户收到递归DNS的解析的地址,并且保存到缓存中,以便下次进行解析

1.2 三次握手
当dns解析成功后,客户端向服务器端发送三次握手请求。
- 客户端向服务端送上请求(SYN)连接,这时客户端进入SYN_SENT状态。
- 服务端收到客户端口请求,并且向客户端发送SYN+ACK响应,服务的进入了SYN_RCVD状态。
- 客户端收到服务的的响应,进入了ENTABLISHED状态,并且向服务端发送ACK,客户端准备就绪。
- 服务端收到客户端的ACK,并且进入ENTABLISHED状态,链接建立成功。

二:Linux系统安装
2.2 Linux服务器系统安装
2.2.1 rockyLinux服务器系统安装
rockylinux镜像系统下载地址: https://rockylinux.org/download
2.2.1.0 rockylinux 10桌面版安装:
- VM虚拟机创建:














- 安装系统:
开启虚拟机:


选择语言:

选择软件安装:


磁盘进行分区:


网络主机名设置:


root用户设置,在生产环境中root用户是禁用的:


普通用户设置:


进行安装系统:

安装的软件包:

安装成功后进行重启:

把熄屏时间设置成永久不关闭,否则桌面点击不进去:


2.2.1.1 安装rockyLinux 10 server版
- 虚拟机创建根据桌面版进行创建,此处不在书写操作步骤
选择的操作系统是:

- 安装系统:
开启虚拟机:

选择语言:

软件选择:

自定义对硬盘分区:







设置网络和主机名:

设置root用户:

设置普通用户:

进行安装系统:

重启系统:

查看是否能登进去:

2.2.2 Ubuntu服务器系统安装
Ubuntu镜像下载地址:https://ubuntu.com/navigation#products-navigation

2.2.2.1 Ubuntu26桌面安装:
- 新建虚拟机,新建的步骤不详细,只写注意的事项:
安装前,先把网络断开 :


选择对应的操作系统镜像:

- 进行安装系统:
开启虚拟机:

设置语言:



链接互联网:

更新可用:

安装系统:


安装的应用软件:


磁盘分区:


创建用户:

选择时区:

进行安装系统:


安装成功:

重启:

进行登录:

解决每隔5分钟黑屏,并且怎么点无法进入桌面:


打开网络:






2.2.2.2 Ubuntu26 server版安装:
- 新建虚拟机:和桌面版安装基本一样,只记录不一样的

开启虚拟机:

- 安装系统:

选择语言:

是否更新:

选择键盘方式:

选择安装的系统:

配置网络:


安装软件:

磁盘分区:



用户配置:

是否升级到专业版:

是否安装openssh,桌面版是没有安装的:
如果没有安装,系统安装成功手动安装,手动安装方式如下:

安装其他软件:

安装系统:

安装成功:

查看是否安装成功:

三. Linux基础-文件管理、链接机制与归档压缩
3.1 shell与终端及命令通用格式和命令帮助
3.1.1 shell与终端
终端:终端是命令行的窗口。
shell:shell是解释器,当我们在终端窗口输入命令后,shell会把指令解释成内核所识别的字符,内核执行完成并且通过shell输出到终端。
内核:执行shell所给的指令。
3.1.2 shell提示符:
打开终端会看到shell提示符:
wmn@strudy:~$
| 字段 | 含义 |
|---|---|
| wmn | 当前登录服务器的用户名 |
| strudy | 服务器的主机名 |
| ~ | 当前所在的目录,~是当前所在位置是用户的家目录 |
| $ | 提示符,$代表的是普通用户,#代表的是root用户(超级用户) |
3.1.3 命令格式与帮助
3.1.3.1 命令格式
通用的命令格式由三部分组成:
| 组成部分 | 含义 |
|---|---|
| command | 执行的命令 |
| [options] | 命令的选项,根据实际情况可有可无 |
| [arguments] | 命令的参数,根据实际情况可有可无 |
3.1.3.2 命令的帮助
- --help/-h:快速查看帮助
应用实例:
1)查看ls的帮助:
wmn@strudy:~$ ls --help
- man: 命令的帮助手册:
常用的章节:
| 章节 | 含义 | 什么时候用 |
|---|---|---|
| 1 | 查看命令的帮助手册,默认的章节 | 查看普通的指令,如ls,tar,grep等用法 |
| 5 | 查看配置文件的手册 | 修改/etc/passwd等文件使用 |
| 8 | 查看系统管理命令的手册 | 使用fdisk分区、iptable等配置查看参数 |
常用的参数:
-f: 查看手册的章节
例子:
1)查看passwd的帮助:
wmn@strudy:~$ man passwd
2)查看passwd的章节:
wmn@strudy:~$ man -f passwd
passwd (1) - 更改用户密码
passwd (5) - 密码文件
passwd (1ssl) - OpenSSL application commands
3)查看passwd的第5章节:
wmn@strudy:~$ man 5 passwd
3.2 Linux的文件管理
3.2.1 Linux的目录
- 目录结构
Linux的目录结构像倒挂的树一样,如下图:

常用的目录:
| 目录名称 | 用途 |
|---|---|
| /etc | 主要存放系统和服务的配置文件 |
| /home | 用于存放普通用户家目录 |
| /root | root用户家目录 |
| /var | 主要存放一些经常数据变化的文件,比如说日志文件、缓存文件等 |
| /tmp | 临时目录,主要用于存放进程运行时临时数据文件,运行完自动删除,或者系统30日自动删除,用户都可以进行存放,但是只能自己删除自己存放的文件 |
| /bin | 主要存放普通用户能执行的二进制指令文件 |
| /sbin | 主要存放超级用户执行的二进制指令文件 |
| /boot | 主要存放系统和引导程序文件。vmlinuz:内核文件。initrd.img:初始化文件。grub:引导程序 |
| /lib | 开发使用的库 |
| /proc | 虚拟目录。主要存放系统正在运行进程的文件,进程不运行自动删除。 |
| /usr | 应用程序安装的位置 |
- 路径:
路径分为相对路径和绝对路径。
| 路径 | 含义 | 例子 |
|---|---|---|
| 绝对路径 | 以/开头的路径是绝对路径 | /etc/sysconfig |
| 相对路径 | 不是以/开头的路径是相对路径 | etc/sysconfig |
路径特殊符号:
| 符号 | 含义 |
|---|---|
| ~ | 家目录 |
| . | 当前目录 |
| .. | 上一级目录 |
| - | 上一次所在的目录,cd能使用 |
3.2.2 文件和目录指令
3.2.2.1 导航与查看
3.2.2.1.0 pwd(查看当前所在的目录)
pwd是查看当前所在的目录。
例子:
wmn@strudy:/etc/default$ pwd
/etc/default
3.2.2.1.1 cd(切换目录)
cd是切换目录,默认是切换到家目录。
- 例子:
切换到绝对路径目录:
wmn@strudy:/etc/default$ cd /etc/default/
wmn@strudy:/etc/default$ pwd
/etc/default
切换到用户的家目录:
wmn@strudy:/etc/default$ cd ~
wmn@strudy:~$ pwd
/home/wmn
或者:
wmn@strudy:/etc/default$ cd
wmn@strudy:~$ pwd
/home/wmn
切换到根目录:
wmn@strudy:~$ cd /
wmn@strudy:/$ pwd
/
切换到相对路径etc目录(当前在/目录)
wmn@strudy:/$ cd etc
wmn@strudy:/etc$ pwd
/etc
切换到上级目录:
wmn@strudy:/etc$ cd ../
wmn@strudy:/$ pwd
/
切换到上一次所在的目录:
wmn@strudy:/$ cd -
/etc
wmn@strudy:/etc$ pwd
/etc
切换到某个用户的家目录:
root@strudy:~# cd ~wmn
root@strudy:/home/wmn# pwd
/home/wmn
3.2.2.1.2 ls(查看目录内容)
ls是查看目录内容,默认是查看当前所在目录的内容。
- 常用的参数:
| 选项 | 说明 |
|---|---|
| -l | 显示详细信息 |
| -a | 显示目录下所有的内容,包括隐藏文件和目录(以.开头) |
| -h | 以人类可查看形式显示信息,一般和-l一起使用才能看出效果 |
| -d | 查看目录本身的信息,不是查看目录内容下的信息 |
| -S | 按照文件大小进行排序,一般和-l一起使用才能看出效果 |
| -t | 按照文件修改时间进行排序,一般和-l一起使用才能看出效果 |
| -r | 逆向排序,一般和-l,-t或-S一起使用才能看出效果 |
- 例子:
查看当前目录下的内容:
wmn@strudy:~$ ls
snap 下载 公共 图片 文档 桌面 模板 视频 音乐
查看/tmp目录下的内容:
wmn@strudy:~$ ls /tmp/
VMwareDnD
snap-private-tmp
systemd-private-417320f212634de38215ead676bbdcf8-ModemManager.service-nG2FqP
systemd-private-417320f212634de38215ead676bbdcf8-chrony.service-EiqwgC
systemd-private-417320f212634de38215ead676bbdcf8-colord.service-o3D4IP
systemd-private-417320f212634de38215ead676bbdcf8-fwupd.service-6JQclp
systemd-private-417320f212634de38215ead676bbdcf8-polkit.service-lO6aPC
systemd-private-417320f212634de38215ead676bbdcf8-power-profiles-daemon.service-zqmBGG
systemd-private-417320f212634de38215ead676bbdcf8-switcheroo-control.service-FbiNSs
systemd-private-417320f212634de38215ead676bbdcf8-systemd-logind.service-BiNo1m
systemd-private-417320f212634de38215ead676bbdcf8-upower.service-hI4LjG
vmware-root_1125-4022177662
查看当前目录下所有内容,包括隐藏文件:
wmn@strudy:~$ ls -a
. .bash_history .bashrc .config .profile snap 公共 文档 模板 音乐
.. .bash_logout .cache .local .ssh 下载 图片 桌面 视频
详细显示目录下所有文件内容:
wmn@strudy:~$ ls -la
total 76
drwxr-x--- 15 wmn wmn 4096 Sep 5 11:46 .
drwxr-xr-x 3 root root 4096 Sep 5 10:47 ..
-rw------- 1 wmn wmn 524 Sep 5 12:17 .bash_history
-rw-r--r-- 1 wmn wmn 220 Feb 13 2026 .bash_logout
-rw-r--r-- 1 wmn wmn 3771 Feb 13 2026 .bashrc
drwx------ 13 wmn wmn 4096 Sep 5 12:06 .cache
drwx------ 14 wmn wmn 4096 Sep 5 11:50 .config
drwx------ 4 wmn wmn 4096 Sep 5 11:40 .local
-rw-r--r-- 1 wmn wmn 807 Feb 13 2026 .profile
drwx------ 2 wmn wmn 4096 Sep 5 11:32 .ssh
drwx------ 5 wmn wmn 4096 Sep 5 12:00 snap
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 下载
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 公共
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 图片
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 文档
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 桌面
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 模板
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 视频
drwxr-xr-x 2 wmn wmn 4096 Sep 5 11:40 音乐
以人类可读的形式显示内容信息:
wmn@strudy:~$ ls -lah
total 76K
drwxr-x--- 15 wmn wmn 4.0K Sep 5 11:46 .
drwxr-xr-x 3 root root 4.0K Sep 5 10:47 ..
-rw------- 1 wmn wmn 524 Sep 5 12:17 .bash_history
-rw-r--r-- 1 wmn wmn 220 Feb 13 2026 .bash_logout
-rw-r--r-- 1 wmn wmn 3.7K Feb 13 2026 .bashrc
drwx------ 13 wmn wmn 4.0K Sep 5 12:06 .cache
drwx------ 14 wmn wmn 4.0K Sep 5 11:50 .config
drwx------ 4 wmn wmn 4.0K Sep 5 11:40 .local
-rw-r--r-- 1 wmn wmn 807 Feb 13 2026 .profile
drwx------ 2 wmn wmn 4.0K Sep 5 11:32 .ssh
drwx------ 5 wmn wmn 4.0K Sep 5 12:00 snap
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 下载
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 公共
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 图片
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 文档
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 桌面
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 模板
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 视频
drwxr-xr-x 2 wmn wmn 4.0K Sep 5 11:40 音乐
按照文件大小进行排序显示内容信息:
1)正向排序
wmn@strudy:~$ ls -lhS /etc/
total 1.2M
-rw-r--r-- 1 root root 77K Oct 14 2025 mime.types
-rw-r--r-- 1 root root 62K Sep 5 11:53 ld.so.cache
-rw-r--r-- 1 root root 31K Mar 20 18:33 brltty.conf
-rw-r--r-- 1 root root 13K Mar 16 2025 services
-rw-r--r-- 1 root root 12K Nov 21 2025 nanorc
-rw-r--r-- 1 root root 11K Feb 3 2026 sensors3.conf
-rw-r--r-- 1 root root 9.6K Mar 13 19:02 sudo_logsrvd.conf
-rw-r--r-- 1 root root 9.5K Sep 5 11:32 locale.gen
2)逆向排序:
wmn@strudy:~$ ls -lhSr /etc/
total 1.2M
-rw-r--r-- 1 root root 0 Apr 23 09:15 subuid-
-rw-r--r-- 1 root root 0 Apr 23 09:15 subgid-
-rw-r--r-- 1 root root 7 Sep 5 10:47 hostname
-rw-r--r-- 1 root root 10 Apr 20 16:46 debian_version
lrwxrwxrwx 1 root root 13 Feb 20 2026 rmt -> /usr/sbin/rmt
-rw-r--r-- 1 root root 14 Sep 5 11:32 timezone
lrwxrwxrwx 1 root root 16 Apr 23 09:15 vconsole.conf -> default/keyb
按照修改时间进行排序:
1)正向排序:
wmn@strudy:~$ ls -lht /etc/
total 1.2M
drwxr-xr-x 5 root lp 4.0K Sep 6 15:41 cups
drwxr-xr-x 4 root root 4.0K Sep 5 12:01 ssh
drwxr-xr-x 2 root root 4.0K Sep 5 12:01 rc3.d
drwxr-xr-x 2 root root 4.0K Sep 5 12:01 rc4.d
drwxr-xr-x 2 root root 4.0K Sep 5 12:01 rc5.d
drwxr-xr-x 2 root root 4.0K Sep 5 12:01 rc2.d
2)逆向排序:
wmn@strudy:~$ ls -lhtr /etc/
total 1.2M
-rw-r--r-- 1 root root 3.1K Oct 18 2022 protocols
-rw-r--r-- 1 root root 911 Oct 18 2022 rpc
-rw-r--r-- 1 root root 460 Jan 20 2023 zsh_command_not_found
-rw-r--r-- 1 root root 4.4K Apr 16 2024 hdparm.conf
-rw-r--r-- 1 root root 27 Jun 13 2024 libao.conf
-rw-r--r-- 1 root root 20 Feb 21 2025 fprintd.conf
查看目录详细信息:
wmn@strudy:~$ ls -ld /
drwxr-xr-x 20 root root 4096 Sep 5 10:46 /
- ls -l查看出内容说明:

根据上图的序列号进行说明:
| 序列号 | 说明 |
|---|---|
| 序列1 | 显示类型,-是文件类型,d是目录类型,l是链接类型 |
| 序列2 | 默认显示是B |
| 序列3 | 文件或目录最后修改时间 |
3.2.2.1.3 tree(以树形式查看目录)
tree是以树形结构进行查看目录,默认查看目录下所有内容。
- 常见的选项参数:
| 选项 | 说明 |
|---|---|
| -d | 只看目录 |
| -l | 查看目录几级内容 |
- 例子:
查看目录树:
wmn@strudy:~$ tree
.
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
├── 桌面
└── snap
├── firmware-updater
│ ├── 226
│ ├── common
│ └── current -> 226
├── prompting-client
│ ├── 204
│ ├── 222
│ ├── common
│ └── current -> 222
└── snapd-desktop-integration
├── 361
├── common
└── current -> 361
只查看目录内容下的目录:
wmn@strudy:~$ tree /var -d
查看目录下2级内容:
wmn@strudy:~$ tree -L 2 /etc
查看多个目录的树形结构:
wmn@strudy:~/wmn-dir$ cp -r dir1 dir1_backup
wmn@strudy:~/wmn-dir$ tree dir1 dir1_backup/
dir1
└── docs
└── images
dir1_backup/
└── docs
└── images
3.2.2.2 文件目录操作
3.2.2.2.0 目录文件创建
3.2.2.2.0.1 mkdir创建目录
mkdir默认是创建空目录,可以创建多个空目录。
- 选项参数
| 选项参数 | 用途 |
|---|---|
| -p | 递归创建多级目录 |
- 例子:
创建一个空目录:
wmn@strudy:~/wmn-dir$ mkdir dir1
wmn@strudy:~/wmn-dir$ ls
dir1
创建多个空目录:
wmn@strudy:~/wmn-dir$ mkdir dir2 dir3 dir4 backup
wmn@strudy:~/wmn-dir$ ls
backup dir1 dir2 dir3 dir4
递归创建多级目录:
wmn@strudy:~/wmn-dir$ mkdir -p dir1/docs/images
wmn@strudy:~/wmn-dir$ tree dir1
dir1
└── docs
└── images
3 directories, 0 files
在dir2目录下批量创建dir1到dir10目录:
wmn@strudy:~/wmn-dir$ mkdir dir2/dir{1..10}
wmn@strudy:~/wmn-dir$ tree dir2/
dir2/
├── dir1
├── dir10
├── dir2
├── dir3
├── dir4
├── dir5
├── dir6
├── dir7
├── dir8
└── dir9
在dir3目录下创建dirw和dirm、dirn目录:
wmn@strudy:~/wmn-dir$ mkdir dir3/dir{w,m,n}
wmn@strudy:~/wmn-dir$ tree dir3/
dir3/
├── dirm
├── dirn
└── dirw
3.2.2.2.0.2 touch(创建文件)
touch是创建空文件,该命令没有常用的选项参数。
- 例子:
创建一个空文件:
wmn@strudy:~/wmn-dir$ touch file1.txt
wmn@strudy:~/wmn-dir$ ls
backup dir1 dir2 dir3 dir4 file1.txt
创建多个空文件:
wmn@strudy:~/wmn-dir$ touch file2.txt file3.txt file4.txt
wmn@strudy:~/wmn-dir$ ls *.txt
file1.txt file2.txt file3.txt file4.txt
在dir4目录下批量创建file01...file10空文件:
wmn@strudy:~/wmn-dir$ touch dir4/file{01..10}
wmn@strudy:~/wmn-dir$ tree dir4/
dir4/
├── file01
├── file02
├── file03
├── file04
├── file05
├── file06
├── file07
├── file08
├── file09
└── file10
1 directory, 10 files
在backup目录下创建file01,file02,file10空文件:
wmn@strudy:~/wmn-dir$ touch backup/file{01,02,10}
wmn@strudy:~/wmn-dir$ tree backup/
backup/
├── file01
├── file02
└── file10
1 directory, 3 files
3.2.2.2.1 cp(复制文件或目录)
cp是把文件或目录复制到某个目录下,也叫备份,默认是只能复制文件,在覆盖已存在的文件默认是不进行提示的。
- 常用选项参数:
| 选项参数 | 含义 |
|---|---|
| -r | 递归复制目录及目录下的内容 |
| -i | 在复制是出现覆盖提示确认 |
| -v | 显示复制过程 |
- 例子:
把file1.txt复制到同目录下,并且复制名为file1_backup.txt,这种叫改名:
wmn@strudy:~/wmn-dir$ cp file1.txt file1_backup.txt
wmn@strudy:~/wmn-dir$ ls file1*
file1.txt file1_backup.txt
把file1.txt复制到/tmp目录下:
wmn@strudy:~/wmn-dir$ cp file1.txt /tmp/
wmn@strudy:~/wmn-dir$ ls /tmp/file*
/tmp/file1.txt
把/etc/passwd复制到当前目录下:
wmn@strudy:~/wmn-dir$ cp /etc/passwd .
wmn@strudy:~/wmn-dir$ ls
backup dir2 dir4 file1_backup.txt file3.txt passwd
dir1 dir3 file1.txt file2.txt file4.txt
把/etc/passwd文件复制到/tmp目录,并且复制名称为passwd_tmp
wmn@strudy:~/wmn-dir$ cp /etc/passwd /tmp/passwd_tmp
wmn@strudy:~/wmn-dir$ ls /tmp/passwd*
/tmp/passwd_tmp
把dir1目录复制到当前目录下,并且改名为dir1_backup:
wmn@strudy:~/wmn-dir$ cp -r dir1 dir1_backup
wmn@strudy:~/wmn-dir$ tree dir1 dir1_backup/
dir1
└── docs
└── images
dir1_backup/
└── docs
└── images
把dir1目录复制到/tmp目录下:
wmn@strudy:~/wmn-dir$ cp -r dir1 /tmp/
wmn@strudy:~/wmn-dir$ tree /tmp/dir1/
/tmp/dir1/
└── docs
└── images
3 directories, 0 files
复制/etc/passwd文件到当前目录下,并且显示复制过程:
wmn@strudy:~/wmn-dir$ cp -v /etc/passwd .
'/etc/passwd' -> './passwd'
wmn@strudy:~/wmn-dir$ ls
backup dir1_backup dir3 file1.txt file2.txt file4.txt
dir1 dir2 dir4 file1_backup.txt file3.txt passwd
复制/etc/passwd文件到当前目录下,并且覆盖前提示确认:
wmn@strudy:~/wmn-dir$ cp -i /etc/passwd .
cp:是否覆盖'./passwd'? y
3.2.2.2.2 mv移动
mv含义是移动,把文件或目录移动到某个位置,在Linux中重命名也叫移动。
- 例子:
把file1.txt文件重命名为data.txt:
wmn@strudy:~/wmn-dir$ mv file1.txt data.txt
wmn@strudy:~/wmn-dir$ ls
backup dir1 dir2 dir4 file2.txt file4.txt
data.txt dir1_backup dir3 file1_backup.txt file3.txt passwd
把data.txt移动到/tmp目录下:
wmn@strudy:~/wmn-dir$ mv data.txt /tmp/
wmn@strudy:~/wmn-dir$ ls /tmp/data*
/tmp/data.txt
把所有的txt结尾的文件移动到/tmp目录下:
wmn@strudy:~/wmn-dir$ mv *txt /tmp/
wmn@strudy:~/wmn-dir$ ls /tmp/*txt
/tmp/data.txt /tmp/file1_backup.txt /tmp/file3.txt
/tmp/file1.txt /tmp/file2.txt /tmp/file4.txt
把dir1目录移动到/tmp目录下:
wmn@strudy:~/wmn-dir$ mv dir1 /var/tmp/
wmn@strudy:~/wmn-dir$ ls /var/tmp/
dir1
当移动已存在的目录会报错:
wmn@strudy:~/wmn-dir$ mv dir1 /tmp/
mv: 无法进行跨设备的移动:'dir1' 至'/tmp/dir1';无法删除目标: 目录非空
3.2.2.2.3 rm(删除文件或目录)
rm是删除意思,默认只能删除文件,注意使用这个指令,删除掉了无法恢复,建议删除之前要进行备份
- 常用的选项:
| 选项 | 说明 |
|---|---|
| -i | 交互式删除:删除前进行确认是否删除 |
| -r | 删除目录 |
| -f | 强制删除 |
- 例子:
删除/tmp/file1.txt文件:
wmn@strudy:~/wmn-dir$ rm /tmp/file1.txt
wmn@strudy:~/wmn-dir$ ls /tmp/*txt
/tmp/data.txt /tmp/file1_backup.txt /tmp/file2.txt /tmp/file3.txt /tmp/file4.txt
交互式删除文件:
wmn@strudy:~/wmn-dir$ rm -i /tmp/*.txt
rm:是否删除regular empty file '/tmp/data.txt'? y
rm:是否删除regular empty file '/tmp/file1_backup.txt'? y
rm:是否删除regular empty file '/tmp/file2.txt'? y
rm:是否删除regular empty file '/tmp/file3.txt'? y
rm:是否删除regular empty file '/tmp/file4.txt'? y
wmn@strudy:~/wmn-dir$ ls /tmp/*txt
ls: cannot access '/tmp/*txt': No such file or directory
删除目录:
wmn@strudy:~/wmn-dir$ rm -r /tmp/dir1
wmn@strudy:~/wmn-dir$ ls -d /tmp/dir1
ls: cannot access '/tmp/dir1': No such file or directory
删除多个目录:
wmn@strudy:~/wmn-dir$ rm -r dir2 dir3 dir4
wmn@strudy:~/wmn-dir$ ls
backup dir1_backup passwd
强制所有的文件和目录: -rf 在生产环境中建议使用,容易把服务器/删除掉,容易跑路。
wmn@strudy:~/wmn-dir$ ls
backup dir1_backup passwd
wmn@strudy:~/wmn-dir$ rm -rf *
wmn@strudy:~/wmn-dir$ ls
删除空目录(rmdir):
wmn@strudy:~/wmn-dir$ ls
dir5
wmn@strudy:~/wmn-dir$ rmdir dir5/
wmn@strudy:~/wmn-dir$ ls
3.2.2.4 查看文件内容
3.2.2.4.1 cat(一次性显示整个文件)
cat查看文件内容,它是一次性显示整个文件内容,查看大型文件不建议使用,它适合查看小文件。
- 常用选项参数:
| 选项参数 | 含义 |
|---|---|
| -n | 查看文件显示行号 |
- 例子
查看/etc/hosts文件内容:
[wmn@studry ~]$ cat /etc/hosts
# Loopback entries; do not change.
# For historical reasons, localhost precedes localhost.localdomain:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# See hosts(5) for proper format and other examples:
# 192.168.1.10 foo.example.org foo
# 192.168.1.13 bar.example.org bar
查看/etc/hosts并显示行号:
[wmn@studry ~]$ cat -n /etc/hosts
1 # Loopback entries; do not change.
2 # For historical reasons, localhost precedes localhost.localdomain:
3 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
5 # See hosts(5) for proper format and other examples:
6 # 192.168.1.10 foo.example.org foo
7 # 192.168.1.13 bar.example.org bar
3.2.2.4.2 less(分页查看大文件内容)
less查看文件内容,它适合大文件内容,比如说查看日志文件内容,less的功能比more的功能更强,所以使用less
- less视图使用:
| 按键 | 作用 |
|---|---|
| 空格 | 向下翻页 |
| b | 向上翻页 |
| 向下箭头/回车键 | 向下逐行移动 |
| 向上箭头 | 向上逐行移动 |
| /关键字 | 向下搜索关键字(按n跳到下一个) |
| q | 退出 |
3.2.2.4.3 head和tail
head:显示文件前几行内容
head是显示文件前几行内容,默认是显示文件的前10行内容。
- 选项参数:
| 参数 | 说明 |
|---|---|
| -n 行数或者-n行数或者-行数 | 显示前几行文件内容 |
- 例子:
显示/etc/passwd前10行文件内容:
wmn@strudy:~/wmn-dir$ head /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
显示/etc/passwd的前5行文件内容:
wmn@strudy:~/wmn-dir$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
wmn@strudy:~/wmn-dir$ head -n5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
tail:显示文件后几行内容
tail是显示文件后几行内容,默认也是后10行文件内容,它可以实时跟踪文件的变化,主要用来查看日志的。
- 选项参数:
| 选项参数 | 含义 |
|---|---|
| -n 行数或-行数或-n行数 | 显示文件后几行内容 |
| -f | 实时追踪文件最新内容,ctrl +c结束追踪 |
- 例子:
查看服务器安全日志后10行内容:
1)rockyLinux系统:
wmn@study:~$ sudo tail /var/log/secure
[sudo] wmn 的密码:
Sep 6 14:13:53 study sshd[1369]: Server listening on 0.0.0.0 port 22.
Sep 6 14:13:53 study sshd[1369]: Server listening on :: port 22.
Sep 6 14:13:54 study (systemd)[1437]: pam_unix(systemd-user:session): session opened for user gdm(uid=42) by gdm(uid=0)
Sep 6 14:13:55 study gdm-launch-environment][1409]: pam_unix(gdm-launch-environment:session): session opened for user gdm(uid=42) by (uid=0)
Sep 6 16:29:09 study sshd-session[3340]: Accepted password for wmn from 10.0.0.1 port 64492 ssh2
Sep 6 16:29:09 study (systemd)[3346]: pam_unix(systemd-user:session): session opened for user wmn(uid=1000) by wmn(uid=0)
Sep 6 16:29:10 study sshd-session[3340]: pam_unix(sshd:session): session opened for user wmn(uid=1000) by wmn(uid=0)
Sep 6 16:30:13 study sudo[3402]: wmn : TTY=pts/0 ; PWD=/home/wmn ; USER=root ; COMMAND=/bin/dnf install -y tree
Sep 6 16:30:13 study sudo[3402]: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
Sep 6 16:30:31 study sudo[3402]: pam_unix(sudo:session): session closed for user root
2)Ubuntu系统:
wmn@strudy:~/wmn-dir$ sudo tail /var/log/auth.log
[sudo: authenticate] 密码:
2026-09-06T16:37:35.436673+08:00 strudy sudo: wmn : TTY=/dev/pts/1 ; PWD=/home/wmn/\u{684c}\u{9762} ; USER=root ; COMMAND=/usr/bin/apt install tree
2026-09-06T16:37:43.598355+08:00 strudy sudo: pam_unix(sudo:session): session closed for user root
2026-09-06T16:39:51.872628+08:00 strudy pkexec: pam_unix(polkit-1:session): session opened for user root(uid=0) by wmn(uid=1000)
2026-09-06T16:39:51.877031+08:00 strudy pkexec[7572]: wmn: Executing command [USER=root] [TTY=unknown] [CWD=/home/wmn] [COMMAND=/usr/lib/update-notifier/package-system-locked]
2026-09-06T17:17:01.107600+08:00 strudy CRON[7831]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0)
2026-09-06T17:17:01.121578+08:00 strudy CRON[7831]: pam_unix(cron:session): session closed for user root
2026-09-06T17:30:01.152332+08:00 strudy CRON[7934]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0)
2026-09-06T17:30:01.162349+08:00 strudy CRON[7934]: pam_unix(cron:session): session closed for user root
2026-09-06T18:06:49.759820+08:00 strudy sudo: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
2026-09-06T18:06:49.762278+08:00 strudy sudo: wmn : TTY=/dev/pts/3 ; PWD=/home/wmn/wmn-dir ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
查看后5行服务器安全日志:
1)Ubuntu系统:
wmn@strudy:~/wmn-dir$ sudo tail -n 5 /var/log/auth.log
2026-09-06T18:06:49.759820+08:00 strudy sudo: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
2026-09-06T18:06:49.762278+08:00 strudy sudo: wmn : TTY=/dev/pts/3 ; PWD=/home/wmn/wmn-dir ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
2026-09-06T18:06:49.775257+08:00 strudy sudo: pam_unix(sudo:session): session closed for user root
2026-09-06T18:08:28.382217+08:00 strudy sudo: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
2026-09-06T18:08:28.382741+08:00 strudy sudo: wmn : TTY=/dev/pts/3 ; PWD=/home/wmn/wmn-dir ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/auth.log
2)rockyLinux系统:
wmn@study:~$ sudo tail -5 /var/log/secure
Sep 6 16:30:13 study sudo[3402]: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
Sep 6 16:30:31 study sudo[3402]: pam_unix(sudo:session): session closed for user root
Sep 6 18:07:16 study sudo[3658]: wmn : TTY=pts/0 ; PWD=/home/wmn ; USER=root ; COMMAND=/bin/tail /var/log/secure
Sep 6 18:07:16 study sudo[3658]: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
Sep 6 18:07:16 study sudo[3658]: pam_unix(sudo:session): session closed for user root
实时查看系统的安全日志:
1)ubuntu:
wmn@strudy:~/wmn-dir$ sudo tail -f /var/log/auth.log
2026-09-06T18:10:35.649617+08:00 strudy sshd-session[8160]: Accepted password for wmn from 10.0.0.1 port 53804 ssh2
2026-09-06T18:10:35.654860+08:00 strudy sshd-session[8160]: pam_unix(sshd:session): session opened for user wmn(uid=1000) by wmn(uid=0)
2026-09-06T18:10:35.669171+08:00 strudy systemd-logind[1524]: New session '14' of user 'wmn' with class 'user' and type 'tty'.
2)rockyLinux:
wmn@study:~$ sudo tail -f /var/log/secure
Sep 6 18:11:59 study sshd-session[3688]: Accepted password for wmn from 10.0.0.1 port 53917 ssh2
Sep 6 18:11:59 study sshd-session[3688]: pam_unix(sshd:session): session opened for user wmn(uid=1000) by wmn(uid=0)
3.2.2.4.4 grep根据关键字查找文件
grep是Linux系统中的三剑客之一,它是根据关键字进行搜索文件内容。
- 常用参数:
| 选项参数 | 说明 |
|---|---|
| -i | 忽略大小写 |
| -C | 显示根据匹配关键字的行及上下各几行内容 |
| -c | 统计根据关键字匹配的行数 |
- 例子:
搜索包含fail的行:
wmn@strudy:~/wmn-dir$ grep "fail" /var/log/auth.log
2026-09-06T18:22:08.518674+08:00 strudy unix_chkpwd[8326]: password check failed for user (wmn)
2026-09-06T18:22:08.521514+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
wmn@strudy:~/wmn-dir$ grep "fail" /var/log/auth.log
2026-09-06T18:22:08.518674+08:00 strudy unix_chkpwd[8326]: password check failed for user (wmn)
2026-09-06T18:22:08.521514+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
2026-09-06T18:22:25.041572+08:00 strudy unix_chkpwd[8328]: password check failed for user (wmn)
2026-09-06T18:22:30.120994+08:00 strudy unix_chkpwd[8334]: password check failed for user (wmn)
2026-09-06T18:22:30.123707+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
2026-09-06T18:22:32.142762+08:00 strudy unix_chkpwd[8335]: password check failed for user (wmn)
2026-09-06T18:22:34.508912+08:00 strudy unix_chkpwd[8336]: password check failed for user (wmn)
搜索远程登录服务器成功的日志:
wmn@strudy:~/wmn-dir$ grep -i "accepted" /var/log/auth.log
2026-09-05T12:06:14.196261+08:00 strudy sshd-session[5907]: Accepted password for wmn from 10.0.0.1 port 58489 ssh2
2026-09-05T12:10:45.585713+08:00 strudy sshd-session[6116]: Accepted password for wmn from 10.0.0.1 port 59098 ssh2
2026-09-05T12:16:26.682227+08:00 strudy sshd-session[6280]: Accepted password for wmn from 10.0.0.1 port 59547 ssh2
2026-09-06T16:03:47.101874+08:00 strudy sshd-session[6753]: Accepted password for wmn from 10.0.0.1 port 62817 ssh2
2026-09-06T18:10:35.649617+08:00 strudy sshd-session[8160]: Accepted password for wmn from 10.0.0.1 port 53804 ssh2
显示匹配行的上下3行:
wmn@strudy:~/wmn-dir$ grep -C 3 -i "fail" /var/log/auth.log
2026-09-05T11:54:22.910584+08:00 strudy systemd-logind[1441]: Session c1 logged out. Waiting for processes to exit.
2026-09-05T11:54:22.914136+08:00 strudy systemd-logind[1441]: Removed session c1.
2026-09-05T11:54:33.231921+08:00 strudy systemd-logind[1441]: Removed session 1.
2026-09-05T12:00:30.558291+08:00 strudy dbus-daemon[1386]: [system] Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
2026-09-05T12:01:23.173641+08:00 strudy sudo: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=1000)
2026-09-05T12:01:23.174809+08:00 strudy sudo: wmn : TTY=/dev/pts/2 ; PWD=/home/wmn/\u{684c}\u{9762} ; USER=root ; COMMAND=/usr/bin/apt install openssh-server
2026-09-05T12:01:37.374834+08:00 strudy sudo: pam_unix(sudo:session): session closed for user root
--
2026-09-06T14:42:50.453638+08:00 strudy systemd-logind[1524]: Session c1 logged out. Waiting for processes to exit.
2026-09-06T14:42:50.460627+08:00 strudy systemd-logind[1524]: Removed session c1.
2026-09-06T14:43:00.869770+08:00 strudy systemd-logind[1524]: Removed session 1.
2026-09-06T14:45:38.375766+08:00 strudy dbus-daemon[1451]: [system] Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
2026-09-06T15:17:01.917129+08:00 strudy CRON[6077]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0)
2026-09-06T15:17:01.927511+08:00 strudy CRON[6077]: pam_unix(cron:session): session closed for user root
2026-09-06T15:30:01.959497+08:00 strudy CRON[6134]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0)
--
2026-09-06T18:10:57.486197+08:00 strudy sudo: pam_unix(sudo:session): session closed for user root
2026-09-06T18:17:01.211230+08:00 strudy CRON[8308]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0)
2026-09-06T18:17:01.219662+08:00 strudy CRON[8308]: pam_unix(cron:session): session closed for user root
2026-09-06T18:22:08.518674+08:00 strudy unix_chkpwd[8326]: password check failed for user (wmn)
2026-09-06T18:22:08.521514+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
2026-09-06T18:22:25.041572+08:00 strudy unix_chkpwd[8328]: password check failed for user (wmn)
2026-09-06T18:22:30.120994+08:00 strudy unix_chkpwd[8334]: password check failed for user (wmn)
2026-09-06T18:22:30.123707+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
2026-09-06T18:22:32.142762+08:00 strudy unix_chkpwd[8335]: password check failed for user (wmn)
2026-09-06T18:22:34.508912+08:00 strudy unix_chkpwd[8336]: password check failed for user (wmn)
统计匹配行数:
wmn@strudy:~/wmn-dir$ grep -c "fail" /var/log/auth.log
7
wmn@strudy:~/wmn-dir$ grep -c -i "accepted" /var/log/auth.log
5
实战中常用的组合:从最近安全日志中找登录失败的日志:
wmn@strudy:~/wmn-dir$ tail -100 /var/log/auth.log |grep "fail"
2026-09-06T18:22:08.518674+08:00 strudy unix_chkpwd[8326]: password check failed for user (wmn)
2026-09-06T18:22:08.521514+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
2026-09-06T18:22:25.041572+08:00 strudy unix_chkpwd[8328]: password check failed for user (wmn)
2026-09-06T18:22:30.120994+08:00 strudy unix_chkpwd[8334]: password check failed for user (wmn)
2026-09-06T18:22:30.123707+08:00 strudy sudo: pam_unix(sudo:auth): authentication failure; logname=wmn uid=1000 euid=0 tty=/dev/pts/5 ruser=wmn rhost= user=wmn
2026-09-06T18:22:32.142762+08:00 strudy unix_chkpwd[8335]: password check failed for user (wmn)
2026-09-06T18:22:34.508912+08:00 strudy unix_chkpwd[8336]: password check failed for user (wmn)
3.2.2.3 辅助命令
3.2.2.3.1 type(查找命令的类型)
命令分类:
命令分为内置命令、外部程序、别名、函数、关键字等。
内置命令: 它执行比较快,当运行shell时候就把命令加入到了内存中。
外部程序:外部程序命令是需要安装的,执行外部程序命令先去从PATH环境变量中查找命令是否存在,如果存在就加入内存中进行执行,执行速度比较慢。
别名alias: 就是给命令提了个另外一个名字,执行速度比较快。
查找设置别名方式:
1)查找别名:
wmn@strudy:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
2)添加别名:
临时添加:
wmn@strudy:~$ alias w='ls -l /etc/passwd'
wmn@strudy:~$ w
-rw-r--r-- 1 root root 2818 Sep 5 12:01 /etc/passwd
查看命令类型:
查看内置命令:
wmn@srudy:~$ type cd
cd is a shell builtin
查看外部程序指令:
wmn@srudy:~$ type -a passwd
passwd is /usr/bin/passwd
passwd is /bin/passwd
查看别名:
wmn@srudy:~$ type ls
ls is aliased to `ls --color=auto'
查看关键字指令:
wmn@srudy:~$ type for
for is a shell keyword
3.2.2.3.2 file(查看文件真实类型)
文件类型:
在Linux中文件不依赖扩展名来区分文件类型的,主要还是看文件真实情况。
文件类型分为: 文本文件、目录文件、二进制文件、块设备文件、字符设备文件等。
- 例子:
查看文本文件类型:
wmn@srudy:~$ file /etc/passwd
/etc/passwd: ASCII text
查看二进制文件:
wmn@study:~$ file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=26a58fc999a5e6368b74d9a33da93e996ff5800f, for GNU/Linux 3.2.0, stripped
查看目录属性:
wmn@study:~$ file /usr
/usr: directory
查看块设备属性:
wmn@study:~$ file /dev/sda
/dev/sda: block special (8/0)
查看字符设备属性:
wmn@study:~$ file /dev/tty
/dev/tty: character special (5/0)
3.2.2.3.3 which(查看命令所在的位置)
查看cd命令所在的路径:
wmn@study:~$ which cd
/usr/bin/cd
3.2.2.4 文件类型与inode
3.2.2.4.1 使用ls查看到文件类型
使用ls -l 查看的第一个字符是文件类型字符,分别是:
| 首字符 | 文件类型 | 示例 |
|---|---|---|
| - | 普通文件类型 | /etc/passwd |
| d | 目录文件类型 | /etc/ |
| l | 软链接文件类型 | system-release -> rocky-release |
| b | 块设备文件类型 | /dev/sda |
| c | 字符设备文件类型 | /dev/tty |
3.2.2.4.2 inode
inode是文件的身份证,链接文件名与块数据的主要桥梁,主要记录文件的元数据(文件大小、权限、修改时间、数据块的位置)。
inode有inode编号的,通过ls -i 查看到文件的inode编号,inode编号和文件名是存放在上一级目录中,注意:inode号在同一分区里是唯一的。
查看文件内容原理:
- 文件名和文件inode编号在上一级目录中记录,并且形成对应关系。
- 当我们查看或修改文件内容,通过文件名与inode编号找到对应的inode数据。
- 通过查看inode的数据,确认是否有权限进行文件进行操作。
- 当有权限操作,通过块指针,查找到对应的数据进行对文件进行操作。

查看inode号:
wmn@study:~$ ls -i wmn.txt
145 wmn.txt
wmn@study:~$ ls -il wmn.txt
145 -rw-r--r--. 1 wmn wmn 0 Sep 7 16:59 wmn.txt
#说明:
3.2.4.3 硬链接与软链接
3.2.4.3.1 硬链接

硬链接的特点:
- 硬链接是创建不同文件名,但是使用同一个数据块文件内容的文件,硬链接文件的inode号相同。
- 删除一个文件,另外文件不受影响。
- 修改一个文件内容,其他文件内容也跟着一起使用。
- 硬链接不能是目录,不能跨分区做硬链接。
- 硬链接文件不占用空间,只有一个文件内容占用空间。
硬链接操作:
1)创建硬链接:
wmn@study:~$ ln wmn.txt wmn_backup.txt
wmn@study:~$ ls -li *.txt
145 -rw-r--r--. 2 wmn wmn 0 Sep 7 16:59 wmn.txt
145 -rw-r--r--. 2 wmn wmn 0 Sep 7 16:59 wmn_backup.txt
这个是硬链接数量
2)修改文件内容:
wmn@study:~$ vim wmn.txt
wmn
222
333
3)查看另一个文件内容是否修改: 也跟着修改
wmn@study:~$ cat wmn_backup.txt
wmn
222
333
4)删除一个,另一个会不会受影响:另外一个文件不受影响。
wmn@study:~$ rm wmn_backup.txt
wmn@study:~$ ls *.txt
wmn.txt
wmn@study:~$ cat wmn.txt
wmn
222
333
5)是否能对目录做硬链接:
wmn@study:~$ ln wmn_dir wmn_dir2
ln: wmn_dir: hard link not allowed for directory
6)是否能跨分区做硬链接:
wmn@study:~$ sudo ln wmn.txt /wmn.txt
ln: failed to create hard link '/wmn.txt' => 'wmn.txt': Invalid cross-device link
3.2.4.3.2 软链接
软链接相当于Windows系统中的快捷方式,在生产环境中软链接链接的源文件要用绝对路径。
软链接原理:
- 当我们创建软链接,重新创建个文件,inode号和文件名都和原文件不一样,是一个新的文件。
- 但是软链接文件的数据块内容存放的是原文件路径。
- 当我们访问软链接文件内容,直接跳到原文件数据块中,读取原文件内容。

软链接例子:
1)创建软链接:
wmn@study:~$ ln -s /home/wmn/wmn.txt wmn_backup.txt
wmn@study:~$ ls -l *.txt
-rw-r--r--. 2 wmn wmn 12 Sep 7 17:17 wmn.txt
lrwxrwxrwx. 1 wmn wmn 17 Sep 7 17:39 wmn_backup.txt -> /home/wmn/wmn.txt
2)创建个目录软链接:
wmn@study:~$ ln -s /home/wmn/wmn_dir wmn_dir_backup
wmn@study:~$ ls -ld wmn_dir*
drwxr-xr-x. 2 wmn wmn 6 Sep 7 17:20 wmn_dir
lrwxrwxrwx. 1 wmn wmn 17 Sep 7 17:40 wmn_dir_backup -> /home/wmn/wmn_dir
3)跨分区创建软链接:
wmn@study:~$ sudo ln -s /home/wmn/wmn_dir /wmn_dir_backup
[sudo] password for wmn:
wmn@study:~$ sudo ls -ld /wmn_dir_backup
lrwxrwxrwx. 1 root root 17 Sep 7 17:42 /wmn_dir_backup -> /home/wmn/wmn_dir
4)删除原文件是否影响软链接:
wmn@study:~$ rm wmn.txt
wmn@study:~$ ls -l wmn_backup.txt
lrwxrwxrwx. 1 wmn wmn 17 Sep 7 17:39 wmn_backup.txt -> /home/wmn/wmn.txt
wmn@study:~$ cat wmn_backup.txt
cat: wmn_backup.txt: No such file or directory
3.2.4.3.3 硬链接与软链接对比
| 对比 | 软链接 | 硬链接 |
|---|---|---|
| inode | 和源文件不同inode号 | 同一个inode号,同一个数据块 |
| 删除原文件 | 会受到影响 | 不受影响 |
| 目录操作 | 可以给目录做链接 | 不能给目录做链接 |
| 跨分区 | 可以跨分区做链接 | 不可以跨分区做链接 |
| 修改内容 | 修改内容跟着改变 | 修改内容跟着改变 |
| 用途 | 主要用于配置文件备份,防止误删除 | 主要用于版本切换、日志统一路径 |
3.2.2.5 压缩与归档
Linux指令一般用于对文件目录进行归档和压缩,常用的选项:
| 选项 | 说明 |
|---|---|
| c | 创建归档 |
| v | 显示创建的信息 |
| f | 指定文件目录名 |
| x | 解包 |
| z | 以gzip压缩形式进行压缩文件目录 |
| j | 以bzip2压缩形式进行压缩文件目录 |
| J | 以xz压缩形式进行压缩文件目录 |
| a | 根据压缩后缀名,自动选择使用压缩形式 |
| -C | 解压到指定目录 |
| -t | 查看归档的内容 |
压缩形式对比:
| 压缩形式 | 压缩比率 | 压缩速度 | 用途 |
|---|---|---|---|
| gzip | 中等 | 快 | 主要用于日志文件归档使用 |
| bzip2 | 高 | 慢 | 不建议使用 |
| xz | 较高 | 较慢 | 主要用于备份使用,因为压缩比率比较高 |
归档实例:
把/etc目录归档到当前目录下:
wmn@study:~$ sudo tar cf etc.tar /etc
[sudo] password for wmn:
tar: Removing leading `/' from member names
wmn@study:~$ ls *.tar
etc.tar
wmn@study:~$ ls -l *.tar
-rw-r--r--. 1 root root 27146240 Sep 7 18:02 etc.tar
查看归档内容:
wmn@study:~$ tar tf etc.tar
解包归档的内容:
wmn@study:~$ tar xf etc.tar
wmn@study:~$ ls etc
DIR_COLORS crypto-policies group lvm profile subgid
DIR_COLORS.lightbgcolor crypttab group- machine-id profile.d subgid-
解包到指定的位置:
wmn@study:~$ tar xf etc.tar -C /tmp/
wmn@study:~$ ls /tmp/etc/
DIR_COLORS crypto-policies group lvm profile subgid
DIR_COLORS.lightbgcolor crypttab group- machine-id profile.d subgid-
压缩实例:
使用gzip方式进行压缩:
wmn@strudy:~$ sudo tar zcf etc_gz.tar.gz /etc
tar: 从成员名中删除开头的“/”
wmn@strudy:~$ ls -lh etc_gz.tar.gz
-rw-r--r-- 1 root root 1.3M Sep 7 18:10 etc_gz.tar.gz
使用bzip2方式进行压缩:
需要安装bzip2安装包:
wmn@strudy:~$ sudo apt install bzip2 -y
进行压缩:
wmn@strudy:~$ sudo tar cjf etc_bzip2.tar.bz2 /etc
tar: 从成员名中删除开头的“/”
wmn@strudy:~$ ls -lh etc_bzip2.tar.bz2
-rw-r--r-- 1 root root 1.1M Sep 7 18:12 etc_bzip2.tar.bz2
使用xz的方式进行压缩:
wmn@strudy:~$ sudo tar cJf etc_xz.tar.xz /etc
tar: 从成员名中删除开头的“/”
wmn@strudy:~$ ls -lh etc_xz.tar.xz
-rw-r--r-- 1 root root 894K Sep 7 18:13 etc_xz.tar.xz
根据后缀名自动选择压缩的方式:
wmn@strudy:~/yasuo$ sudo tar caf etc.tar.gz /etc
tar: 从成员名中删除开头的“/”
wmn@strudy:~/yasuo$ ls -lh etc.tar.gz
-rw-r--r-- 1 root root 1.3M Sep 7 18:18 etc.tar.gz
wmn@strudy:~/yasuo$ sudo tar caf etc.tar.bz2 /etc
tar: 从成员名中删除开头的“/”
wmn@strudy:~/yasuo$ ls -lh etc.tar.bz2
-rw-r--r-- 1 root root 1.1M Sep 7 18:18 etc.tar.bz2
wmn@strudy:~/yasuo$ sudo tar caf etc.tar.xz /etc
tar: 从成员名中删除开头的“/”
wmn@strudy:~/yasuo$ ls -lh etc.tar.xz
-rw-r--r-- 1 root root 894K Sep 7 18:18 etc.tar.xz
解压:不管压缩什么方式,直接使用xf就可解压:
wmn@strudy:~/yasuo$ tar xf etc.tar.bz2
wmn@strudy:~/yasuo$ ls
etc etc.tar.bz2 etc.tar.gz etc.tar.xz
wmn@strudy:~/yasuo$ tar xf etc.tar.xz -C /tmp/
wmn@strudy:~/yasuo$ ls /tmp/
etc
wmn@strudy:~/yasuo$ tar xf etc.tar.xz -C /var/tmp/
wmn@strudy:~/yasuo$ ls /var/tmp/
etc
3.2.2.6 vim使用
vim是vi编辑器的升级版,主要用来对文件的修改等使用。vim分为三种模式,分别是:command(命令模式)、编辑模式(插入模式)、扩展命令模式。默认的是命令模式。

在命令模式常用操作
| 按键 | 作用 |
|---|---|
| i | 进入插入模式,在光标所在的位置进行编辑 |
| a | 进入插入模式,光标所在的位置后移一位进行编辑 |
| o | 进入插入模式,向下插入一行进行编辑 |
| : | 进入特殊插入模式 |
| G | 跳转到最后一行 |
| gg | 跳转到第一行 |
| dd | 删除(剪切)光标所在的行,3dd:删除光标所在的下两行,包括光标所在的行 |
| yy | 复制光标所在的行,3yy:复制光标所在下两行,包括光标所在的行 |
| p | 复制 |
| $ | 跳转到行尾 |
| 0 | 跳转到行首 |
| u | 撤到上一次操作 |
| / | 搜索关键字,按n搜索下一个,按回车,跳到搜索的位置 |
扩展命令模式操作
| 按键 | 说明 |
|---|---|
| : set nu | 设置行号 |
| :set nonu | 取消设置行号 |
| :w | 保存 |
| :q | 退出 |
| :wq | 保存并退出 |
| ! | 强制。wq! :强制保存并退出,q!: 强制退出,x!:强制保存并退出 |
| x | 保存并且退出 |
| :set cuc | 高亮光标所在的列,用于格式内容对齐 |
| :set cul | 高亮光标所在的行,不建议使用 |
| :%s#新内容#替换的内容#g | 全局替换。5,10s#新内容#替换内容#g:5到10行进行替换。5,10s#新内容#替换内容#:替换5到10行的首字符 |
3.2.2.7 若依实战项目:
创建标准化目录:
wmn@strudy:~/yasuo$ cd /opt/
wmn@strudy:/opt$ ls
wmn@strudy:/opt$ sudo mkdir -p ruoyi/{backend,frontend,logs,config,backup}
[sudo: authenticate] 密码:
wmn@strudy:/opt$ ls
ruoyi
wmn@strudy:/opt$ tree ruoyi
ruoyi
├── backend
├── backup
├── config
├── frontend
└── logs
6 directories, 0 files
创建配置文件模板:
wmn@strudy:/opt$ sudo vim ruoyi/config/application.yaml
wmn@strudy:/opt$ cat ruoyi/config/application.yaml
spring:
application:
name: ruoyi-admin
profiles:
active: druid
server:
port: 8080
硬链接保护配置文件:
wmn@strudy:/opt$ sudo ln /opt/ruoyi/config/application.yaml /opt/ruoyi/config/application_backup.yaml
wmn@strudy:/opt$ ls -li /opt/ruoyi/config/application*
3282990 -rw-r--r-- 2 root root 97 Sep 7 21:03 /opt/ruoyi/config/application.yaml
3282990 -rw-r--r-- 2 root root 97 Sep 7 21:03 /opt/ruoyi/config/application_backup.yaml
软链接统一日志路径
wmn@strudy:/opt$ sudo ln -s /opt/ruoyi/logs /var/log/ruoyi
wmn@strudy:/opt$ ls -l /var/log/ruoyi
lrwxrwxrwx 1 root root 15 Sep 7 21:06 /var/log/ruoyi -> /opt/ruoyi/logs
压缩归档日志
wmn@strudy:/opt$ sudo tar zcf /opt/ruoyi/backup/ruoyi-logs-`date +%F`.tar.gz ruoyi/logs
wmn@strudy:/opt$ ls -l /opt/ruoyi/backup/
total 4
-rw-r--r-- 1 root root 117 Sep 7 21:08 ruoyi-logs-2026-09-07.tar.gz
wmn@strudy:/opt$ sudo tar tf /opt/ruoyi/backup/ruoyi-logs-2026-09-07.tar.gz
ruoyi/logs/
四:用户与用户组管理及权限管理
4.1 用户与用户组管理
为什么用用户管理:
如果大家都是要root用户(超级管理员)进行操作系统,对系统都有超级操作权限,1. 当某个人无意间删除东西,无法追溯到哪个人操作的。2. 再者使用root用户运行程序,这个程序对操作系统有超级权限,很容易攻破系统,造成数据泄露风险。所以我们要使用用户进行管理。
4.1.0 用户与组的配置文件
用户与组有三个配置文件,分别是:
- /etc/passwd: 用于存放用户的信息。如用户名,用户ID,家目录,shell
- /etc/shadow: 用于存放密码及密码策略信息。如用户名,加密的密码,创建密码的天数,密码策略
- /etc/group: 用于存放组信息。如:用户组名,用户组ID,用户组成员
三个配置文件的关系:

4.1.0.1 /etc/passwd文件内容说明
wmn@study:~$ head -5 /etc/passwd
root:x:0:0:Super User:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/sbin/nologin
daemon:x:2:2:daemon:/sbin:/usr/sbin/nologin
adm:x:3:4:adm:/var/adm:/usr/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/usr/sbin/nologin
| 字段 | 含义 | 例子 |
|---|---|---|
| 1 | 用户的名称 | root |
| 2 | 密码占位符 | x |
| 3 | 用户的ID(UID) | 0 |
| 4 | 用户主组的ID | 0 |
| 5 | 描述信息 | Super User |
| 6 | 用户的家目录 | /root、/home/wmn |
| 7 | 用户的shell,登录用户第一个执行的程序 | /bin/bash |
用户的ID(UID)分配规则:
| 用户的ID | 类型 | 说明 |
|---|---|---|
| 0 | 超级用户,如root | 超级管理员 |
| 1-999 | 系统用户 | 用于启动进程的用户,不能登录,使用的shell是nologin或者是false |
| 1000+ | 普通用户 | 可以登录 |
4.1.0.2 /etc/shadow文件内容说明
wmn@study:~$ sudo tail -5 /etc/shadow
[sudo] wmn 的密码:
sshd:!:20701::::::
chrony:!:20701::::::
dnsmasq:!:20701::::::
tcpdump:!:20701::::::
wmn:$y$j9T$gNID7zqPQPG6mClmfN4g5Z4L$kVlZ9gsZxqRdAfaBn2GMXwj1akqgeSw6IXxgP9VmqFD::0:99999:7:::
| 字段 | 含义 |
|---|---|
| 1 | 用户名 |
| 2 | 加密密码,它是有三部分组成,$y$是加密使用的算法(在rocky9和ubuntu使用的sha-512($6$),rocky10使用的是yescrypt)。j9T$gNID7zqPQPG6mClmfN4g5Z4L 是加密使用的salt。加密的密码。 !是不允许登录 |
| 3 | 最后修改密码的天数(从1970-1-1开始算的天数) |
| 4 | 密码的最小年龄,如果5,5天之内不允许修改密码 |
| 5 | 密码的最大年龄,如果是30,30天之后进行修改密码 |
| 6 | 过期之前多少天进行警告,如果7是过期前7进行警告修改密码 |
| 7 | 过期后锁定的天数 |
| 8 | 账号过期时间 |
| 9 | 保留字段 |
4.1.0.3 /etc/group文件内容说明
wmn@strudy:~$ sudo tail -5 /etc/group
gnome-initial-setup:x:976:
gdm:x:975:
lxd:x:114:wmn
wmn:x:1000:
gamemode:x:974:
| 字段 | 含义 |
|---|---|
| 1 | 组名 |
| 2 | 组密码占位符 |
| 3 | 组ID(GID) |
| 4 | 组成员,记录是附加组成员,用逗号隔开,主成员默认不记录 |
组ID(GID)分配规则:
| ID号 | 说明 |
|---|---|
| 0 | 超级用户组 |
| 1-999 | 系统用户组 |
| 1000+ | 普通用户组 |
4.1.1用户与用户组管理命令
4.1.1.0 用户组管理命令:
4.1.1.0.1 groupadd创建组
创建用户组,默认是从1000开始,创建用户时想要加入组,组必须存在。
- 参数:
| 参数 | 说明 |
|---|---|
| g | 指定Gid |
| r | 创建系统用户组,GID从1-999 |
- 例子:
创建一个op组:
wmn@strudy:~$ sudo groupadd op
wmn@strudy:~$ sudo groupadd devops
wmn@strudy:~$ tail -3 /etc/group
ops:x:973:
op:x:1001:
devops:x:1002:
创建一个系统组:
wmn@strudy:~$ sudo groupadd -r ops
wmn@strudy:~$ tail -1 /etc/group
ops:x:973:
创建一个指定GID为3000的用户组:
wmn@studry:~$ sudo groupadd -g 3000 dba
wmn@strudy:~$ tail -1 /etc/group
dba:x:3000:
4.1.1.0.2 groupmod修改组
groupmod修改组,他是修改的是/etc/group文件信息。
- 参数:
| 选项 | 说明 |
|---|---|
| -n [组新名] [组旧名] | 修改组的名字 |
| -g | 修改组的ID(GID) |
- 例子:
把ops组名修改成opss:
wmn@strudy:~$ sudo groupmod -n opss ops
wmn@strudy:~$ grep "opss" /etc/group
opss:x:973:
修改opss组ID为3000:
wmn@strudy:~$ sudo groupmod -g 3001 opss
wmn@strudy:~$ !grep
grep "opss" /etc/group
opss:x:3001:
4.1.1.0.3 groupdel删除组
注意事项:删除用户的时候,默认和主组一块删除,首先确认删除的组是否有附加成员,如果有成员的组,删除用户不会把主组删除掉,再使用groupdel直接把组删除掉。
- 例子:
删除用户的主组:
1)当删除有用户的主组,会报错,报错如下:
wmn@strudy:~$ sudo groupdel wmn2
groupdel:不能移除用户“wmn2”的主组
2) 删除用户的时候,默认会把主组删除掉:
wmn@studry:~$ id wmn2
uid=1001(wmn2) gid=3002(wmn2) 组=3002(wmn2)
wmn@studry:~$ tail -1 /etc/group
wmn2:x:3002:
wmn@studry:~$ sudo userdel wmn2
wmn@studry:~$ tail -1 /etc/group
opss:x:3001:
3)删除有成员的组:
当有成员组,删除用户不会把用户主组删除,只删用户,当把成员删除掉,才能删除组。
查看用户和组信息:
wmn@studry:~$ id wmn1
uid=1001(wmn1) gid=3002(wmn1) 组=3002(wmn1)
wmn@studry:~$ id wmn2
uid=1002(wmn2) gid=3003(wmn2) 组=3003(wmn2),3002(wmn1)
wmn@studry:~$ tail -2 /etc/group
wmn1:x:3002:wmn2
wmn2:x:3003:
删除wmn1用户,查看组会不会删除:
wmn@studry:~$ sudo userdel wmn1
userdel:组“wmn1”没有移除,因为它包含其它成员。
wmn@studry:~$ tail -2 /etc/group
wmn1:x:3002:wmn2
wmn2:x:3003:
wmn@studry:~$ id wmn1
id: "wmn1": 无此用户
这时wmn1组可以删除:
wmn@studry:~$ sudo groupdel wmn1
wmn@studry:~$ tail -2 /etc/group
opss:x:3001:
wmn2:x:3003:
删除没有用户主组和附加成员的组:
1)查看用户组信息:
wmn@strudy:~$ tail -3 /etc/group
devops:x:1002:
dba:x:3000:
opss:x:3001:
2)删除opss组:
wmn@strudy:~$ sudo groupdel opss
wmn@strudy:~$ !tail
tail -3 /etc/group
op:x:1001:
devops:x:1002:
dba:x:3000:
4.1.1.0.4 groups(查看用户所属组)
- 例子:
查看wmn3用户所属组:
wmn@strudy:~$ groups wmn3
wmn3 : sudo
可以使用id进行查看:
wmn@strudy:~$ id wmn3
uid=1002(wmn3) gid=27(sudo) groups=27(sudo)
4.1.1.0.5 getent:查看组有哪些附加成员:
- 例子:
查看wheel组有哪些附加成员:
wmn@study:~$ getent group wheel
wheel:x:10:wmn,wmn3
4.1.1.1 用户管理命令
在创建用户的时候,如果不指定主组,默认会创建和用户同名的主组。
如果把用户添加到附加组中,需要确认附加组是否存在,不存在则会报错。
创建用户后,会有一个主组,0个或多个附加组。主组是用户的默认组,附加组是用户附加的权限,在创建文件,默认所属组就是用户的主组。
4.1.1.1.0 useradd创建用户
- 常用的选项参数
| 选项 | 说明 | 备注 |
|---|---|---|
| -m | 创建家目录 | rocky非必须,自动会创建。Ubuntu必须 |
| -s | 指定shell | rocky非必须,自动指定/bin/bash。Ubuntu不指定,默认使用/bin/sh |
| -M | 不创建家目录 | 一般用于系统用户,用来管理程序进程 |
| -u | 指定用户的ID,UID | |
| -g | 指定主组 | 不加这个参数,默认是创建和用户同名的组。不建议使用 |
| -G | 指定附加组,加入附加组中 | 如果个,用逗号分开 |
| -r | 创建系统用户 | 它不创建家目录 |
| -d | 指定家目录的位置 | 通常要与-m配合使用 |
| -c | 添加描述信息 |
- 例子:
创建的用户:
1)rocky默认是创建家目录及指定shell是/bin/bash
wmn@study:~$ sudo useradd wmn520
[sudo] wmn 的密码:
wmn@study:~$ ls /home/wmn520 -d
/home/wmn520
wmn@study:~$ grep "wmn520" /etc/passwd
wmn520:x:1002:1002::/home/wmn520:/bin/bash
2)Ubuntu:
wmn@strudy:~$ sudo useradd wmn520
[sudo: authenticate] 密码:
wmn@strudy:~$ ls /home/wmn520
ls: cannot access '/home/wmn520': No such file or directory
wmn@strudy:~$ grep "wmn520" /etc/passwd
wmn520:x:1003:1003::/home/wmn520:/bin/sh
wmn@strudy:~$ sudo su - wmn520
$
3)Ubuntu创建用户及指定shell是/bin/bash
wmn@strudy:~$ sudo useradd wmn521 -m -s /bin/bash
wmn@strudy:~$ ls /home/wmn521 -d
/home/wmn521
wmn@strudy:~$ grep "wmn521" /etc/passwd
wmn521:x:1004:1004::/home/wmn521:/bin/bash
wmn@strudy:~$ sudo su - wmn521
wmn521@strudy:~$
指定UID:
wmn@study:~$ sudo useradd wmn521 -u 3001
[sudo] wmn 的密码:
wmn@study:~$ id wmn521
uid=3001(wmn521) gid=3001(wmn521) 组=3001(wmn521)
指定主组(不建议使用):
创建用户前需要确认主组是否创建,不存在则会报错:
wmn@study:~$ sudo groupadd wmn523
wmn@study:~$ sudo useradd wmn522 -g wmn523
wmn@study:~$ id wmn522
uid=3002(wmn522) gid=3002(wmn523) 组=3002(wmn523)
指定附加组:
1)查看组:
wmn@study:~$ tail -3 /etc/group
devops:x:2000:
ops:x:2001:
dba:x:2003:
2)创建用户:
wmn@study:~$ sudo useradd wmn524 -G devops,dba,ops
wmn@study:~$ id wmn524
uid=3003(wmn524) gid=3003(wmn524) 组=3003(wmn524),2000(devops),2001(ops),2003(dba)
wmn@study:~$ sudo groups wmn524
wmn524 : wmn524 devops ops dba
创建系统用户,不允许登录:
wmn@study:~$ sudo useradd wmn525 -r -s /sbin/nologin
wmn@study:~$ grep "wmn525" /etc/passwd
wmn525:x:983:981::/home/wmn525:/sbin/nologin
wmn@study:~$ sudo su - wmn525
su: warning: cannot change directory to /home/wmn525: 没有那个文件或目录
This account is currently not available.
wmn@study:~$ ls /home/wmn525
ls: 无法访问 '/home/wmn525': 没有那个文件或目录
创建用户,并且指定家目录:
wmn@study:~$ sudo useradd wmn526 -d /opt/wmn525
wmn@study:~$ ls /opt/wmn525 -ld
drwx------. 3 wmn526 wmn526 78 9月 9日 17:56 /opt/wmn525
wmn@study:~$ grep "wmn526" /etc/passwd
wmn526:x:3004:3004::/opt/wmn 525:/bin/bash
4.1.1.1.1 usermod(修改用户)
- 选项参数
| 选项参数 | 说明 |
|---|---|
| -aG | 把用户添加到附加组中 |
| -g | 修改用户的主组 |
| -L | 锁定用户,不让用户登录 |
| -U | 解锁用户 |
| -u | 修改用户的id |
| -s | 修改用户的shell |
| -m | 修改家目录时,创建家目录,与-d一起使用 |
| -l [新的名称] [旧的名称] | 修改用户的名称 |
| -d | 修改用户的家目录 |
- 例子:
修改shell:
wmn@study:~$ sudo usermod wmn520 -s /sbin/reboot
[sudo] wmn 的密码:
wmn@study:~$ grep "wmn520" /etc/passwd
wmn520:x:1002:1002::/home/wmn520:/sbin/reboot
把用户添加到附加组中:
wmn@study:~$ sudo usermod wmn520 -aG ops
wmn@study:~$ id wmn520
uid=1002(wmn520) gid=1002(wmn520) 组=1002(wmn520),2001(ops),2003(dba)
修改用户的家目录:
wmn@study:~$ sudo usermod wmn520 -m -d /opt/wmn520
wmn@study:~$ sudo su -
root@study:~# cd /opt/
root@study:/opt# ls
wmn520
修改用户名:
root@study:/opt# usermod -l wmn5200 wmn520
root@study:/opt# id wmn5200
uid=1002(wmn5200) gid=1002(wmn520) 组=1002(wmn520),2001(ops),2003(dba)
修改用户的ID:
root@study:/opt# usermod wmn5200 -u 1003
root@study:/opt# id wmn5200
uid=1003(wmn5200) gid=1002(wmn520) 组=1002(wmn520),2001(ops),2003(dba)
锁定与解锁用户:
1)锁定用户: 说明,如果没有密码,重新设置密码(root用户重新设置密码)会把锁定的用户自动解锁
root@study:/opt# usermod wmn5200 -L
root@study:/opt# grep "wmn5200" /etc/shadow
wmn5200:!:20705:0:99999:7:::
!是不让用户登录。
2)解锁用户:
root@study:/opt# usermod wmn5200 -U
说明:如果没有密码的用户,解锁需要设置密码才能解锁。
修改用的组主(不建议使用)
root@study:/opt# usermod wmn5200 -g dba
root@study:/opt# id wmn5200
uid=1003(wmn5200) gid=2003(dba) 组=2003(dba),2001(ops)
4.1.1.2 userdel(删除用户)
userdel默认不删除家目录,使用选项参数-r是删除家目录。
- 选项参数:
| 选项 | 说明 |
|---|---|
| -r | 删除用户时,把家目录一同删除 |
- 实例:
创建两个用户用于测试:
root@study:/opt# useradd user01
root@study:/opt# useradd user02
root@study:/opt# tail -2 /etc/passwd
user01:x:3005:3005::/home/user01:/bin/bash
user02:x:3006:3006::/home/user02:/bin/bash
删除user01用户,不删除家目录和邮箱文件:再次创建user01用户会使用同名的家目录。
root@study:/opt# userdel user01
root@study:/opt# ls /home/user01 -ld
drwx------. 3 3005 3005 78 9月 9日 20:49 /home/user01
root@study:/opt# ls -ld /var/spool/mail/user01
-rw-rw----. 1 3005 mail 0 9月 9日 20:49 /var/spool/mail/user01
删除user02用户,删除家目录和邮箱文件:
root@study:/opt# userdel user02 -r
root@study:/opt#
root@study:/opt# ls -dl /home/user02
ls: 无法访问 '/home/user02': 没有那个文件或目录
root@study:/opt# ls -dl /var/spool/mail/user02
ls: 无法访问 '/var/spool/mail/user02': 没有那个文件或目录
4.1.1.3 passwd 修改用户的密码
使用passwd修改密码,如果root及wheel或sudo组下的用户进行修改密码是没有限制,如果普通用户修改密码需要老密码,新密码需要满足复杂性要求。
普通用户无法给自己设置密码,只能修改密码。
- 例子:
使用root给普通用户user01修改密码:
root@study:/home# passwd user01
新的密码:
重新输入新的密码:
passwd:已成功更新密码
普通用户修改自己设置密码:
root@study:/home# su user01
user01@study:/home$ passwd
当前的密码:
新的密码: #需要符合密码的复杂性要求
无效的密码: 密码少于 8 个字符
1passwd:身份验证令牌操作错误
passwd:密码未更改
非交互式设置密码:
1)rocky设置密码:
方法一: 注意使用这种方式需要符合密码复杂性
root@study:/home# echo "123456" |passwd --stdin user01
无效的密码: 密码少于 8 个字符
root@study:/home# echo "wo211314" |passwd --stdin user01
方法二:
root@study:/home# echo "user01:123456"|chpasswd
2)Ubuntu修改密码: 需要符合密码复杂性
wmn@strudy:~$ echo "user01:wo211314"|sudo chpasswd
wmn@strudy:~$ echo "user01:123456"|sudo chpasswd
无效的密码: 密码少于 8 个字符
4.1.1.4 gpasswd组成员管理
gpasswd可以把用户添加到某个组中,也可以把用户从某个组中进行删除。
- 常用的参数:
| 选项参数 | 说明 |
|---|---|
| -a | 把用户添加到某个组中 |
| -d | 把用户从某组中删除 |
- 实例:
把user01用户添加到devops组中:
wmn@study:~$ sudo gpasswd -a user01 devops
正在将用户“user01”加入到“devops”组中
wmn@study:~$ sudo id user01
uid=3005(user01) gid=3005(user01) 组=3005(user01),2000(devops)
把user01用户从devops组中删除:
wmn@study:~$ sudo gpasswd devops -d user01
正在将用户“user01”从“devops”组中删除
wmn@study:~$ id user01
uid=3005(user01) gid=3005(user01) 组=3005(user01)
4.2 su切换用户与sudo命令提权
4.2.1 su 切换用户
su是用来切换用户,su [用户]:进行切换用户,它的环境变量及家目录或配置文件信息没有切换过去,还是使用前一个用户的。su - 是切换用户并且把环境变量及家目录、配置文件信息一并切换过去。
su 与su -对比:
| 对比项 | su wmn | su - wmn |
|---|---|---|
| 切换用户 | 切换 | 切换 |
| 环境变量 | 不切换,使用上一个用户的 | 切换 |
| 家目录 | 不切换,在上一个用户的家目录 | 切换 |
| 配置文件 | 不加载 | 加载.bashrc .bash_profile等文件 |
- 例子:
切换用户,保留了上一个用户的家目录:
wmn@study:~$ sudo su user01
[sudo] wmn 的密码:
user01@study:/home/wmn$ pwd
/home/wmn
user01@study:/home/wmn$ echo $PATH
/home/user01/.local/bin:/home/user01/bin:/sbin:/bin:/usr/sbin:/usr/bin
切换用户,不保留了上一个用户的家目录:
wmn@study:~$ sudo su - user01
上一次登录: 2026年09月09日 星期三 21:36:26 CST 于 pts/3
user01@study:~$ pwd
/home/user01
user01@study:~$ echo $PATH
/home/user01/.local/bin:/home/user01/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
使用su不切换到用户,执行命令:
wmn@study:~$ sudo su - -c "ls -la /"
总计 24
dr-xr-xr-x. 18 root root 257 9月 7日 17:42 .
dr-xr-xr-x. 18 root root 257 9月 7日 17:42 ..
dr-xr-xr-x. 2 root root 6 2025年 4月 2日 afs
lrwxrwxrwx. 1 root root 7 2025年 4月 2日 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 5日 08:51 boot
drwxr-xr-x. 20 root root 3460 9月 9日 14:59 dev
drwxr-xr-x. 134 root root 8192 9月 9日 21:20 etc
drwxr-xr-x. 10 root root 128 9月 9日 21:02 home
lrwxrwxrwx. 1 root root 7 2025年 4月 2日 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 2025年 4月 2日 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 2025年 4月 2日 media
drwxr-xr-x. 3 root root 18 9月 5日 08:20 mnt
drwxr-xr-x. 3 root root 20 9月 9日 20:29 opt
dr-xr-xr-x. 404 root root 0 9月 9日 14:59 proc
dr-xr-x---. 4 root root 140 9月 5日 08:50 root
drwxr-xr-x. 49 root root 1280 9月 9日 15:22 run
lrwxrwxrwx. 1 root root 8 2025年 4月 2日 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 2025年 4月 2日 srv
dr-xr-xr-x. 13 root root 0 9月 9日 14:59 sys
drwxrwxrwt. 27 root root 4096 9月 9日 21:41 tmp
drwxr-xr-x. 12 root root 144 9月 5日 08:17 usr
drwxr-xr-x. 20 root root 4096 9月 5日 08:50 var
lrwxrwxrwx. 1 root root 17 9月 7日 17:42 wmn_dir_backup -> /home/wmn/wmn_dir
切换root:
wmn@study:~$ sudo su -
上一次登录: 2026年09月09日 星期三 21:41:37 CST 于 pts/3
4.2.2 sudo提权
sudo是用来临时提权的,临时提权执行某个命令的,并且把执行的命令记录到/var/log/secure(rocky操作系统)或/var/log/auth.log(ubuntu操作系统)日志中。
- Ubuntu与rockyLinux默认配置对比
| 发行版 | 管理员 | 默认sudoer配置 |
|---|---|---|
| rockyLinux | wheel | %wheel ALL=(ALL) ALL |
| Ubuntu | sudo | %sudo ALL=(ALL:ALL) ALL |
- visudo配置说明
root@study:~# visudo
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
#%wheel ALL=(ALL) NOPASSWD: ALL
| 字段 | 说明 | |
|---|---|---|
| 1 | 指定使用的用户组或用户,%是用来指定用户组 | |
| 2 | 第一个ALL是指所有主机,第二个是不管什么身份 | |
| 3 | ALL是可以执行所有命令。NOPASSWD:ALL:不输入密码进行确认,执行所有命令 |
- sudo命令参数:
| 选项 | 参数 | |
|---|---|---|
| -l | 列出sudo权限配置 | |
| -U | 指定用户,一般是root用户使用的,普通用户不需要 |
- visudo配置实例
给用户添加sudo权限,不管使用任何主机,不管以什么用户身份,可以执行所有指令:
user01 ALL=(ALL) ALL
给组添加sudo权限,不管使用任何主机,不管以什么用户身份,可以执行所有指令:
%devops ALL=(ALL) ALL
限制只能执行特定的命令:只能重启NGINX,只能查看NGINX的状态:
user02 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx,/usr/bin/systemctl status nginx
#说明注意: 命令要写全路径,NOPASSWD:在执行指令的时候不输入密码进行确认。
如果user02 ALL=(ALL) NOPASSWD: /usr/bin/systemctl #这个意思是,user02使用sudo可以执行systemctl指令
限制某个组只能管理MySQL:
%dba ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart mysql,/usr/bin/systemctl status mysql
禁止执行某些命令:
user03 ALL=(ALL) NOPASSWD: !/usr/bin/passwd root,!/usr/bin/su -
- sudo进行验证:
验证前先安装NGINX:
root@study:~# dnf install nginx -y
进行验证:
1)root用户查看user02的sudo权限
root@study:~# sudo -l -U user02
匹配 study 上 user02 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 user02 可以在 study 上运行以下命令:
(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
2)进入user02查看sudo的权限:
user02@study:~$ sudo -l
匹配 study 上 user02 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 user02 可以在 study 上运行以下命令:
(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
3)user02执行指令:
user02@study:~$ sudo systemctl restart nginx
4)开一个窗口,查看日志:
Sep 9 22:30:49 study sudo[7042]: user02 : TTY=pts/4 ; PWD=/home/user02 ; USER=root ; COMMAND=/usr/bin/systemctl restart nginx
Sep 9 22:30:49 study sudo[7042]: pam_unix(sudo:session): session opened for user root(uid=0) by wmn(uid=3006)
Sep 9 22:30:49 study sudo[7042]: pam_unix(sudo:session): session closed for user root
4.3 实战案例:创建标准化用户
4.3.1 需求
为后台管理系统创建用户体系:
| 组名 | 组成员 | 权限需求 |
|---|---|---|
| devops | ruoyi-admin | 可以重启NGINX |
| dba | ruoyi-dba | 可以管理MySQL |
| developer | ruoyi-dev | 可以查看日志 |
4.3.2 实施步骤
创建用户组:
1)进行创建
[root@studry ~]# groupadd devops
[root@studry ~]# groupadd dba
[root@studry ~]# groupadd developer
2)查看是否创建成功:
[root@studry ~]# tail -3 /etc/group
devops:x:1001:
dba:x:1002:
developer:x:1003:
创建用户组成员:
[root@studry ~]# useradd ruoyi-admin -G devops
[root@studry ~]# id ruoyi-admin
uid=1001(ruoyi-admin) gid=1004(ruoyi-admin) 组=1004(ruoyi-admin),1001(devops)
[root@studry ~]# useradd ruoyi-dba -G dba
[root@studry ~]# id ruoyi-dba
uid=1002(ruoyi-dba) gid=1005(ruoyi-dba) 组=1005(ruoyi-dba),1002(dba)
[root@studry ~]# useradd ruoyi-dev -G developer
[root@studry ~]# id ruoyi-dev
uid=1003(ruoyi-dev) gid=1006(ruoyi-dev) 组=1006(ruoyi-dev),1003(developer)
给用户设置密码:
[root@studry ~]# echo "ruoyi-admin:wo211314.."|chpasswd
[root@studry ~]# echo "ruoyi-dba:wo211314.."|chpasswd
[root@studry ~]# echo "ruoyi-dev:wo211314.."|chpasswd
权限设置:
[root@studry ~]# vi /etc/sudoers.d/ruoyi
%devops ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart nginx
%dba ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart mysql,/usr/bin/systemctl status mysql,/usr/bin/systemctl stop mysql
%developer ALL=(ALL) NOPASSWD:/usr/bin/tail /opt/ruoyi/logs/*,/usr/bin/cat /opt/ruoyi/logs/*
五:Linux基本权限
在Linux系统中,每个文件或目录都有一个属主和属组、其他人权限的概念。这三类组成了一套独立的权限,也就是UGO模型。
5.1 文件基本权限表示方法
查看文件权限:
wmn@study:~$ ll etc.tar
-rw-r--r--. 1 root root 27146240 9月 7日 18:02 etc.tar

权限的类型:
| 权限的符号 | 对应的数字表示 | 对文件的含义 | 对目录的含义 |
|---|---|---|---|
| r | 4 | 只有读取文件权限,如cat、tail等查看文件权限 | 查看目录下的内容,比如ls等 |
| w | 2 | 可以编辑文件内容权限,如vim等 | 可以在目录中创建、删除、修改、重命名、等权限 |
| x | 1 | 可以运行文件(程序或者脚本) | 可以切换到目录下,如cd |
权限的表示
字符表示:
- rw-前三位是文件或目录的所属主
- r--中三位是文件或目录的所属组
- --中三位是文件或目录的其他人
数字表示: 764
- 将每组有权限的看成二进制1,没有权限的是0,在转换十进制
rwx-rw--r--:
rwx=111=7
rw-=110=6
r--=100=4
5.2 修改文件权限的命令
5.2.1 chown(修改文件或目录的所属主和所属组)
- 参数:
| 选项参数 | 说明 |
|---|---|
| -R | 修改目录本身及递归修改目录下内容的权限 |
- 实例:
创建用户和组:
root@study:~# groupadd qa
root@study:~# groupadd op
root@study:~# groupadd devops
root@study:~# useradd tianyun
root@study:~# useradd jinghui
root@study:~#
root@study:~# touch file1.txt
root@study:~# mkdir dir1
root@study:~# touch dir1/file{1..10}
chown命令:
1)把file1.txt文件所属主修改成tianyun:
root@study:~# chown tianyun file1.txt
root@study:~# ls -l file1.txt
-rw-r--r--. 1 tianyun root 0 9月10日 07:38 file1.txt
2)把file1.txt文件属组修改成op:
root@study:~# chown :op file1.txt
root@study:~# ls -l file1.txt
-rw-r--r--. 1 tianyun op 0 9月10日 07:38 file1.txt
3)把file1.txt文件所属主修改成jinghui,属组修改成devops
root@study:~# ls -l file1.txt
-rw-r--r--. 1 jinghui devops 0 9月10日 07:38 file1.txt
4)递归修改dir1目录下所属主和属组:
root@study:~# chown -R jinghui:op dir1
root@study:~# ls -ld dir1
drwxr-xr-x. 2 jinghui op 137 9月10日 07:38 dir1
root@study:~# ls -l dir1
总计 0
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file1
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file10
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file2
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file3
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file4
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file5
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file6
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file7
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file8
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file9
5.2.2 chgrp:修改文件属组
- 选项参数:
| 选项参数 | 说明 |
|---|---|
| -R | 递归修改目录及目录下的内容所属组,不加这个参数是修改本目录 |
- 例子:
将文件file1.txt属组修改成qa:
1)查看文件属性
root@study:~# ls -l file1.txt
-rw-r--r--. 1 jinghui devops 0 9月10日 07:38 file1.txt
2)进行修改:
root@study:~# chgrp qa file1.txt
root@study:~# ls -l file1.txt
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file1.txt
将目录dir1属组修改成qa
1)查看目录属性
root@study:~# ls -ld dir1
drwxr-xr-x. 2 jinghui op 137 9月10日 07:38 dir1
root@study:~# ls -l dir1
总计 0
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file1
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file10
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file2
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file3
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file4
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file5
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file6
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file7
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file8
-rw-r--r--. 1 jinghui op 0 9月10日 07:38 file9
2)进行修改:
root@study:~# chgrp -R qa dir1
root@study:~# ls -l dir1
总计 0
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file1
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file10
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file2
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file3
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file4
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file5
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file6
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file7
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file8
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file9
5.2.3 chmod(修改文件的权限)
修改文件的权限由所属主和root用户才能修改,chmod修改文件权限有两种模式,一种是字符模式,另一种是数字模式。
字符模式修改权限:
- 操作对象:
| 操作对象 | 说明 |
|---|---|
| u | 属主 |
| g | 属组 |
| o | 其他人 |
| a | 所有人 |
- 操作符
| 操作符 | 说明 |
|---|---|
| + | 添加权限 |
| - | 移除权限 |
| = | 设置精确权限 |
- 权限
| 权限 | 说明 |
|---|---|
| r | 只读权限 |
| w | 写,修改权限 |
| x | 可执行权限 |
- 例子
给file1.txt属主添加可执行权限:
root@study:~# chmod u+x file1.txt
root@study:~# ls -l file1.txt
-rwxr--r--. 1 jinghui qa 0 9月10日 07:38 file1.txt
给file1.txt属组移除可读权限:
root@study:~# chmod g-r file1.txt
root@study:~# ls -l file1.txt
-rwx---r--. 1 jinghui qa 0 9月10日 07:38 file1.txt
给file1.txt其他人设置可读可写权限:
root@study:~# chmod o=rw file1.txt
root@study:~# ls -l file1.txt
-rwx---rw-. 1 jinghui qa 0 9月10日 07:38 file1.txt
给file1.txt所有人设置可读可写可执行权限:
root@study:~# chmod a=rwx file1.txt
root@study:~# ls -l file1.txt
-rwxrwxrwx. 1 jinghui qa 0 9月10日 07:38 file1.txt
给file1.txt所属组和属主设置可读可写其他人设置成可读权限:
root@study:~# chmod ug=rw,o=x file1.txt
root@study:~# ls -l file1.txt
-rw-rw---x. 1 jinghui qa 0 9月10日 07:38 file1.txt
root@studry:~# chmod ug=rw,o=r file1.txt
root@studry:~# ls -l file1.txt
-rw-rw-r--. 1 jinghui qa 0 9月10日 21:35 file1.txt
数字模式:
直接使用三位八进制数字设置权限:
- 例子
给file1.txt设置成755权限
root@study:~# chmod 755 file1.txt
root@study:~# ls -l file1.txt
-rwxr-xr-x. 1 jinghui qa 0 9月10日 07:38 file1.txt
755是:rwx-r-x-r-x权限
给file1.txt设置成644权限
root@study:~# chmod 644 file1.txt
root@study:~# ls -l file1.txt
-rw-r--r--. 1 jinghui qa 0 9月10日 07:38 file1.txt
644是:rw--r---r--权限
给file1.txt设置成700权限
root@study:~# chmod 700 file1.txt
root@study:~# ls -ls file1.txt
0 -rwx------. 1 jinghui qa 0 9月10日 07:38 file1.txt
700是:rwx--------权限
给file1.txt设置成600权限
root@study:~# chmod 600 file1.txt
root@study:~# ls -l file1.txt
-rw-------. 1 jinghui qa 0 9月10日 07:38 file1.txt
700是:rw---------权限
5.3 umask权限掩码
umask是决定创建新文件和新目录的默认权限。
- 在ubuntu服务器中,root用户默认的umask是0022,普通用户umask是0002。
- 在rockyLinux中,root用户和普通用户默认umask是0022。
- 文件默认起始值是666,创建文件默认权限是666-022=644,除了Ubuntu普通用户新创建的文件默认的权限是666-002=664
- 目录起始值是777,在rocky服务器所有用户和ubuntu的root用户新创建目录默认值是777-022=755,Ubuntu普通用户新创建目录值是775。
查看当前的umask:
1)rockyLinux:
root@study:~# umask
0022
root@study:~# su - wmn
上一次登录: 2026年09月10日 星期四 08:13:23 CST 于 pts/1
wmn@study:~$ umask
0022
2)ubuntu用户:
root@strudy:~# umask
0022
root@strudy:~# su - wmn
wmn@strudy:~$ umask
0002
修改umask:
1)临时修改了,rocky和ubuntu只能root用户才能修改root用户的,其他用户不能修改:
root@strudy:~# umask 0027
root@strudy:~# umask
0027
查看创建的文件及目录:
root@strudy:~# touch file1.txt
root@strudy:~# ls -l file1.txt
-rw-r----- 1 root root 0 Sep 10 08:29 file1.txt
root@strudy:~# mkdir dir01
root@strudy:~# ls -ld dir01
drwxr-x--- 2 root root 4096 Sep 10 08:29 dir01
2)永久修改:
wmn@study:~$ vim .bashrc
umask 0027
wmn@study:~$ source .bashrc
wmn@study:~$ source .bashrc
wmn@study:~$ umask
0027
5.4 实战案例:
5.4.1 需求:
为若依项目配置合理的权限:
| 目录文件 | 属主 | 属组 | 权限 | 说明 |
|---|---|---|---|---|
| /opt/ruoyi | ruoyi | ruoyi | 755 | 应用根目录 |
| /opt/ruoyi/config | ruoyi | ruoyi | 750 | 配置文件(组内可以访问) |
| /opt/ruoyi/logs | ruoyi | ruoyi | 755 | 日志目录 |
| /opt/ruoyi/backend/ruoyi-admin.jar | ruoyi | ruoyi | 644 | jar包 |
5.4.2 实施步骤
1)创建用户和组:
wmn@study:~$ sudo useradd ruoyi
[sudo] wmn 的密码:
wmn@study:~$ id ruoyi
uid=3010(ruoyi) gid=3013(ruoyi) 组=3013(ruoyi)
2)创建目录结构:
wmn@study:~$ sudo mkdir -p /opt/ruoyi/{config,logs,backend}
wmn@study:~$ sudo touch /opt/ruoyi/backend/ruoyi-admin.jar
wmn@study:~$ sudo tree /opt/ruoyi
/opt/ruoyi
├── backend
│ └── ruoyi-admin.jar
├── config
└── logs
3)配置属组和属主:
wmn@study:~$ sudo chown -R ruoyi:ruoyi /opt/ruoyi
wmn@study:~$ ls -ld /opt/ruoyi
drwxr-x---. 5 ruoyi ruoyi 47 9月10日 08:44 /opt/ruoyi
4)配置权限:
wmn@study:~$ sudo chmod 755 /opt/ruoyi
wmn@study:~$ ls -ld /opt/ruoyi
drwxr-xr-x. 5 ruoyi ruoyi 47 9月10日 08:44 /opt/ruoyi
wmn@study:~$ sudo chmod 750 /opt/ruoyi/config
wmn@study:~$ ls -ld /opt/ruoyi/config
drwxr-x---. 2 ruoyi ruoyi 6 9月10日 08:44 /opt/ruoyi/config
wmn@study:~$ sudo chmod 755 /opt/ruoyi/logs
wmn@study:~$ ls -ld /opt/ruoyi/logs
drwxr-xr-x. 2 ruoyi ruoyi 6 9月10日 08:44 /opt/ruoyi/logs
wmn@study:~$ sudo chmod 644 /opt/ruoyi/backend/ruoyi-admin.jar
wmn@study:~$ sudo ls -ld /opt/ruoyi/backend/ruoyi-admin.jar
-rw-r--r--. 1 ruoyi ruoyi 0 9月10日 08:46 /opt/ruoyi/backend/ruoyi-admin.jar
5.5 删除文件要有目录权限
- 说明
因为目录存放的是文件名和inode号对应关系,当我们删除文件的时候,是删除的文件名和inode号对应的关系,而块数据和inode处于待释放状态。所以想要删除文件需要目录的可读可写权限。
- 案例:
实验一目录有权限,文件权限是000
1)创建目录及授权:
root@study:~# mkdir -p /opt/data
root@study:~# echo "wmn12345" >>/opt/data/file1.txt
root@study:~# chmod 777 /opt/data
root@study:~# chmod 000 /opt/data/file1.txt
root@study:~# ls -ld /opt/data /opt/data/file1.txt
drwxrwxrwx. 2 root root 23 9月10日 08:59 /opt/data
----------. 1 root root 9 9月10日 08:59 /opt/data/file1.txt
2)进行测试:
root@study:~# su - jinghui
jinghui@study:~$ ls -l /opt/data/file1.txt
----------. 1 root root 9 9月10日 08:59 /opt/data/file1.txt
jinghui@study:~$ touch /opt/data/jinghui.txt
jinghui@study:~$ echo "12345" >> /opt/data/jinghui.txt
jinghui@study:~$ ls -ld /opt/data/*
----------. 1 root root 9 9月10日 08:59 /opt/data/file1.txt
-rw-r--r--. 1 jinghui jinghui 6 9月10日 09:01 /opt/data/jinghui.txt
jinghui@study:~$ rm -rf /opt/data/*
jinghui@study:~$ ls /opt/data/ -l
总计 0
实验二:目录无权限,文件777
1)设置目录权限及文件创建及权限:
root@study:~# mkdir -p /opt/data2
root@study:~# touch /opt/data2/file2.txt
root@study:~# chmod 000 /opt/data2
root@study:~# chmod 777 /opt/data2/file2.txt
root@study:~# ls -dl /opt/data2/file2.txt /opt/data2
d---------. 2 root root 23 9月10日 09:04 /opt/data2
-rwxrwxrwx. 1 root root 0 9月10日 09:04 /opt/data2/file2.txt
2)进行测试:
root@study:~# mkdir -p /opt/data2
root@study:~# touch /opt/data2/file2.txt
root@study:~# chmod 000 /opt/data2
root@study:~# chmod 777 /opt/data2/file2.txt
root@study:~# ls -dl /opt/data2/file2.txt /opt/data2
d---------. 2 root root 23 9月10日 09:04 /opt/data2
-rwxrwxrwx. 1 root root 0 9月10日 09:04 /opt/data2/file2.txt
posted on 2026-09-12 16:56 wangmengnan 阅读(16) 评论(0) 收藏 举报
浙公网安备 33010602011771号