Linux基础篇之系统管理和用户管理
Linux基础篇之系统管理和用户管理
文章目录
- Linux基础篇之系统管理和用户管理
- 前言
- 一、文件符号
- 1.1通配符
- 1.1.1文件通配符
- 1.1.2最常用通配符
- 1.1.2次常用通配符
- 1.1.2次常用通配符
- 扩展:特殊的预定于符号
- 1.2管道符
- 1.3重定向
- 二、用户管理
- 2.1用户基础
- 2.2用户组基础
- 2.3用户组管理
- 2.3.1 groupadd 命令
- 2.3.2 groupmod 命令
- 2.3.3 groupdel 命令
- 2.4用户管理
- 2.4.1 id 命令
- 2.4.2 useradd命令
- 2.4.3 Ubuntu创建用户
- 2.4.4 userdel 命令
- 2.4.5 passwd 命令
- 三、权限管理
- 3.1文件操作权限
- 3.2文件用户属性
- 3.3常用命令
- 3.3.1 chown 命令
- 3.3.2 chmod 命令
- 3.4默认权限
- 3.5 特殊权限
- 四、文件管理
- 4.1 时间戳
- 4.2 find 命令
- 4.3 xargs 命令
- 五、打包压缩
- 5.1 gz包
- 5.2 tar包
- 5.3 zip包
- 总结
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、文件符号
文件符号在操作系统中指代用于标识、管理或操作文件的各类特殊字符或标记,涵盖文件类型、权限、路径结构及系统交互符号。
1.1通配符
通配符是一种用于匹配不确定字符或字符串的特殊符号,广泛应用于文件搜索、正则表达式、命令行操作和数据库查询等场景。它允许你用一个简单的模式代替多个可能的值,从而高效地进行批量匹配与操作。
通配符分类:
- 文件通配符
- 最常用通配符
- 次常用通配符
- 其他的通配符
1.1.1文件通配符
作用范围:仅匹配文件名、目录名,不匹配文件内容
匹配原则:无匹配结果时,会原样保留通配符字符(比如当前目录无.txt文件,执行ls *.txt会输出*.txt)
通用场景:所有能接「文件路径 / 文件名」的命令都支持(ls/mv/cp/rm/cat/find等)
1.1.2最常用通配符
* 匹配零个或多个字符,但不匹配 "." 开头的文件
{a..z} 表示 a-z 范围的所有内容
1.1.2次常用通配符
? 即隐藏文件匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
[0-9] 匹配数字范围
[a-Z] 相当于a-z + A-Z 范围的一个字母
[^a-z] 匹配列表中的所有字符以外的字符
1.1.2次常用通配符
~sswang 用户sswang家目录
[0-9] 匹配数字范围
[a-z] 任何一个字母
[A-Z] 任何一个字母
[sswang] 匹配列表中的任何的一个字符
[^sswang] 匹配列表中的所有字符以外的字符
[^a-z] 匹配列表中的所有字符以外的字符
. | ~+ 当前工作目录
~- 前一个工作目录
扩展:特殊的预定于符号
[:blank:]:水平空白字符
[:alnum:]:任意一个数字或者字母
[:alpha:]:任意一个大写或者小写的字母
[:cntrl:]:控制(非打印)字符
[:digit:]:任意一个数字,相当于0-9
[:graph:]:图形字符
[:lower:]:任意一个小写字母,相当于a-z
[:print:]:可打印字符(能看得见的,不是换行符之类的)
[:punct:]:标点符号
[:space:]:水平或垂直空白字符
[:upper:]:任意一个大写字母,相当于A-Z
[:xdigit:]:十六进制字符
通配符及特殊通配符案例:
- 获取到所有匹配的内容
[root@Rocky94 ~]: ls /dev/
autofs disk fuse lp0 null rtc0 stderr tty14 tty23 tty32 tty41 tty50 tty6 ttyS2 vcs vcsa3 vcsu6
block dm-0 hidraw0 lp1 nvram sda stdin tty15 tty24 tty33 tty42 tty51 tty60 ttyS3 vcs1 vcsa4 vfio
bsg dm-1 hpet lp2 port sda1 stdout tty16 tty25 tty34 tty43 tty52 tty61 udmabuf vcs2 vcsa5 vga_arbiter
bus dm-2 hugepages lp3 ppp sda2 tty tty17 tty26 tty35 tty44 tty53 tty62 uhid vcs3 vcsa6 vhci
cdrom dma_heap hwrng mapper ptmx sg0 tty0 tty18 tty27 tty36 tty45 tty54 tty63 uinput vcs4 vcsu vhost-net
- 获取所有以f为开头的文件
[root@Rocky94 ~]: ls /dev/f*
/dev/fb0 /dev/full /dev/fuse
- 获取以 f-l 之间任意字母为开头的文件
[root@Rocky94 ~]: ls /dev/[f-l]*
/dev/fb0 /dev/fuse /dev/hpet /dev/initctl /dev/log /dev/lp0 /dev/lp2
/dev/full /dev/hidraw0 /dev/hwrng /dev/kmsg /dev/loop-control /dev/lp1 /dev/lp3
- 获取所有不包含[f-w] 开头的文件
[root@Rocky94 ~]: ls /dev/[^f-w]*
/dev/autofs /dev/cdrom /dev/console /dev/core /dev/cpu_dma_latency /dev/dm-0 /dev/dm-1 /dev/dm-2 /dev/dmmidi /dev/zero
- 批量创建目录
[root@Rocky94 ~]: touch /tmp/{a..f}.txt
[root@Rocky94 ~]: ls /tmp/
a.txt
b.txt
c.txt
d.txt
e.txt
f.txt
- 查看范围文件
[root@Rocky94 ~]: ls /tmp/[a-f].txt
/tmp/a.txt /tmp/b.txt /tmp/c.txt /tmp/d.txt /tmp/e.txt /tmp/f.txt
1.2管道符
管道符(Pipe Symbol) 是计算机科学中用于命令串联的核心操作符,符号为 |(竖线)。它在类 Unix 系统(如 Linux、macOS)和 Windows 命令行环境中被广泛使用,其核心功能是将前一个命令的标准输出(stdout)作为下一个命令的标准输入(stdin),实现数据流的链式处理。
- 符号简介
| 这个就是管道符,常用于将两个命令隔开,然后命令间(从左向右)传递信息使用的
- 使用格式
命令1 | 命令2
管道符左侧命令 1 执行后的结果,传递给管道符右侧的命令 2 使用
- 实际案例
查看当前系统中的全局变量SHELL
[root@Rocky94 ~]: env | grep SHELL
SHELL=/bin/bash
1.3重定向
- 重定向符号
在shell脚本中有两类常见的重定向符号:
覆盖式重定向:
> 表示将符号左侧的内容,以覆盖的方式输入到右侧文件中
< 表示将符号右侧的内容,以覆盖的方式输入到左侧文件或命令中
追加式重定向:
>> 表示将符号左侧的内容,以追加的方式输入到右侧文件的末尾行中
<< 表示将符号右侧的内容,以追加的方式输入到左侧文件的末尾行中
- 案例1 - 覆盖式重定向
查看文件内容
[root@Rocky94 ~]: cat file.txt
nihao
使用重定向符号给文件中增加内容
[root@Rocky94 ~]: echo "haode" > file.txt
再次查看文件内容
[root@Rocky94 ~]: cat file.txt
haode
查看文件内容数量
[root@Rocky94 ~]: wc -l < file.txt
1
案例2 - 追加式重定向
查看文件内容
[root@Rocky94 ~]: cat file.txt
haode
使用重定向符号给文件中增加内容
[root@Rocky94 ~]: echo "shoudao" >> file.txt
再次查看文件内容
[root@Rocky94 ~]: cat file.txt
haode
shoudao
二、用户管理
Linux是多用户多任务操作系统,具有很好的稳定性和安全性。既然是多用户,那就意味着多个用户可以
同时使用同一个Linux操作系统,因此就会涉及用户的添加、修改、删除等管理工作以及权限分配问题
在日常工作中,一般都是领导分配一个拥有一定权限的账号,然后开展各项工作,不会开放很高的权限。
但初学阶段甚至长期的工作阶段,很多人都是直接用root账户进行操作(包括我本人),这样的目的是减少权限带来的干扰,让我们更专注于相应知识点的学习。
但是在生产环境中建议慎用root,因为权限太大,控制不当会有安全隐患
2.1用户基础
- Linux用户分类
管理员:root, 0
普通用户:1-60000 自动分配
系统用户:对守护进程获取资源进行权限分配
1-499 (CentOS 6 以前)
1-999 (CentOS 7 以后)
登录用户:给用户进行交互式登录使用
500+ (CentOS 6 以前)
1000+(CentOS 7 以后)
注意:虽然系统默认的用户最大uid的值在6000【Rocky 和 ubuntu】,但是实际上,我们在创建用户的时候,可以指定用户的id远远的超过60000的值【只不过执行命令的时候,会有一个提示,但是不影响命令执行成功
2.2用户组基础
- Linux用户组分类
在Linux系统中,为了方便批量对一个或多个用户进行快捷的操作,我们一般会将用户加入用户组中,通过对用户组的操作,从而实现对普通用户的属性的批量操作能力。用户组是通过Group ID(GID) 来唯一标识的
管理员组:root, 0
普通用户组:1-60000 自动分配
系统用户:对守护进程获取资源进行权限分配
1-499 (CentOS 6 以前)
1-999 (CentOS 7 以后)
登录用户:给用户使用
500+ (CentOS 6 以前)
1000+(CentOS 7 以后)
- 用户和用户关系
用户的主要组(primary group):
用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,
由于此组中只有一个用户,又称为私有组
用户的附加组(supplementary group):
一个用户可以属于零个或多个辅助组,附属组
2.3用户组管理
2.3.1 groupadd 命令
groupadd 命令是 Linux 和类 Unix 系统中用于创建新用户组的工具。用户组是管理用户账户和文件权限的一种有效方式,它允许你将多个用户归入同一个组中,并对这个组内的所有用户应用相同的权限设置
- 命令格式及选项
命令格式
groupadd [options] GROUP
常用选项
-r|--system #创建一个系统组 CentOS 6之前: ID<500,CentOS 7以后: ID<1000
一般选项
-f|--force #如果组已经存在则成功退出
-g|--gid GID #新建组时指定组ID,默认是系统分配,指定值不要超过[GID_MIN,GID_MAX]
-K|--key KEY=VALUE #不使用 /etc/login.defs 中的默认值,自己指定,比如 -K
GID_MIN=100
-o|--non-unique #允许创建有重复 GID 的组
-p|--password PASSWORD #为新组使用此加密过的密码,这里要用加密后的密文,不然就是直接是明文,在/etc/gshadow 里面
- 创建用户组
[root@Rocky94 ~]: groupadd gourp1
[root@Rocky94 ~]: getent group gourp1
gourp1:x:1002:
*指定id创建用户组
[root@Rocky94 ~]: groupadd group2 -g 10086
[root@Rocky94 ~]: getent group group2
group2:x:10086:
- 创建系统用户组
[root@Rocky94 ~]: groupadd -r rgroup1
[root@Rocky94 ~]: getent group rgroup1
rgroup1:x:979:
2.3.2 groupmod 命令
groupmod命令用于修改group属性
- 命令格式及选项
命令格式:
groupmod [options] GROUP
常用选项:
-g|--gid GID #将组 ID 改为 GID
-n|--new-name NEW_GROUP #改名为 NEW_GROUP
-o|--non-unique #允许使用重复的 GID
-p|--password PASSWORD #将密码更改为(加密过的) PASSWORD
- 修改用户组属性
修改用户组属性
[root@Rocky94 ~]: groupmod group2 -g 20086
[root@Rocky94 ~]: getent group group2
group2:x:20086:
修改用户组名字
[root@Rocky94 ~]: groupmod -n group2-1 group2
[root@Rocky94 ~]: getent group group2
[root@Rocky94 ~]: getent group group2-1
group2-1:x:20086:
2.3.3 groupdel 命令
groupdel命令可以删除用户组
- 命令格式及选项
命令选项
groupdel [options] GROUP
常用选项
-f|--force #强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
- 删除用户
删除指定用户组 - 只能一个一个的删
[root@Rocky94 ~]: groupdel -f gourp1
[root@Rocky94 ~]: groupdel -f group2-1
确认用户组效果
[root@Rocky94 ~]: getent group gourp1 group2-1
2.4用户管理
2.4.1 id 命令
id用于查看用户的基本信息
- 命令格式及选项
命令格式
id [username]
一般选项
-a #显示详细信息,默认选项
-Z|--context #仅显示安全上下文信息,要开启selinux 配置才有
-g|--group #仅显示GID,就是只显示主组ID
-G|--groups #显示主组和附加组ID,就是所有组ID
-n|--name #显示用户名或组名,要组合使用 -nu|-ng|-nG
-u|--user #仅显示UID
- 查看用户信息
查看用户信息
[root@Rocky94 ~]: id
uid=0(root) gid=0(root) groups=0(root)
查看指定用户
[root@Rocky94 ~]: id mage
uid=1000(mage) gid=1000(mage) groups=1000(mage)
通过选项,仅显示部分内容
[root@Rocky94 ~]: id -ng root
root
2.4.2 useradd命令
useradd 命令可以创建新的Linux用户
- 命令格式及选项
命令格式
useradd [options] LOGIN
useradd -D # 查看默认的配置属性
常用选项
-u|--uid UID #指定UID
-g|--gid GID #指定用户组,-g groupname|--gid GID
-m|--create-home #创建家目录,一般用于登录用户
-p|--password PASSWORD #设置密码,这里的密码是以明文的形式存在于/etc/shadow 文件中
一般选项
-c|--comment COMMENT #新账户的 GECOS 字段
-d|--home-dir HOME_DIR #指定家目录,可以是不存在的,指定家目录,并不代表创建家目录
-s|--shell SHELL #指定 shell,可用shell在/etc/shells 中可以查看
-r|--system # 创建系统用户
# CentOS 6之前 ID<500
# CentOS7 以后 ID<1000不会创建登录用户相关信息
-M|--no-create-home #不创建家目录,一般用于不用登录的用户
-o|--non-unique #允许使用重复的 UID 创建用户
-G|--groups GROUP1[,GROUP2,...] #为用户指明附加组,组须事先存在
-N|--no-user-group #不创建同名的组,使用users组做主组
-D|--defaults #显示或更改默认的 useradd 配置,默认配置文件是 /etc/default/useradd
-e|--expiredate EXPIRE_DATE #指定账户的过期日期 YYYY-MM-DD 格式
-f|--inactive INACTIVE #密码过期之后,账户被彻底禁用之前的天数,0 表示密码过期立即禁
用,-1表示不使用此功能
-k|--skel SKEL_DIR #指定家目录模板,创建家目录,会生成一些默认文件,如果指定,就从该目录
复制文件,默认是/etc/skel/,要配合-m
-K|--key KEY=VALUE #不使用 /etc/login.defs 中的默认值,自己指定,比如 -K
UID_MIN=100
-l|--no-log-init #不将用户添加到最近登录和登录失败记录,前面讲到的3a认证审计,就在此处
lastlog|lastb|cat /var/log/secure
- 创建用户
创建用户默认会添加一个组
[root@Rocky94 ~]: useradd ligo
[root@Rocky94 ~]: id ligo
uid=1001(ligo) gid=1001(ligo) groups=1001(ligo)
[root@Rocky94 ~]: getent gshadow ligo
ligo:!::
查看密码信息
[root@Rocky94 ~]: getent passwd ligo
ligo:x:1001:1001::/home/ligo:/bin/bash
结果显示:
它是一个 可以登录的用户
自动创建了用户家目录
[root@Rocky94 ~]: ls /home/
ligo
- 指定用户组创建用户
创建用户组
[root@Rocky94 ~]: groupadd -g 10086 group1
创建用户
[root@Rocky94 ~]: useradd -g 10086 user1
查看用户创建效果
[root@Rocky94 ~]: id user1
uid=1002(user1) gid=10086(group1) groups=10086(group1)
在用户存在的前提下,删除用户组
[root@Rocky94 ~]: groupdel -f group1
[root@Rocky94 ~]: id user1
uid=1002(user1) gid=10086 groups=10086
结果显示:
强制删除用户组之后,显示该组名的地方,只能显示该组ID,如果此时新建与组ID相同的新组,则被删除的组的数据会被新组关联
再次创建相同id的用户组
[root@Rocky94 ~]: groupadd group2 -g 10086
[root@Rocky94 ~]: id user1
uid=1002(user1) gid=10086(group2) groups=10086(group2)
2.4.3 Ubuntu创建用户
ubuntu系统创建用户默认是不创建用户组的
ubuntu系统创建用户默认是不创建用户组的
root@ubuntu2404-cs:~# getent passwd user1
user1:x:1001:1001::/home/user1:/bin/sh
ubuntu系统创建用户时提供家目录
root@ubuntu2404-cs:~# useradd -m user2
root@ubuntu2404-cs:~# ls /home/
ligo user2
2.4.4 userdel 命令
- 命令格式及选项
命令格式
userdel [options] LOGIN
常用选项
-f|--force #强制删除,哪怕用户正在登录状态
-r|--remove #删除家目录和邮件目录
注意:
正在使用的用户无法删除,除非强制删除(加选项 -f)
- 正常删除用户-不清理家目录
删除正常用户
[root@Rocky94 ~]: userdel user1
结果 user1 的家目录仍然存在
[root@Rocky94 ~]: ls /home/
ligo mage user1
- 正常删除用户-清理家目录
删除正常用户
[root@Rocky94 ~]: userdel -r user2
user2 的家目录已经被删除
[root@Rocky94 ~]: ls /home/
ligo mage user1
2.4.5 passwd 命令
passwd 命令主要用于更新用户密码。当你作为用户登录到系统时,你可以通过运行 passwd 命令来更改你自己的密码。如果你以 root 用户身份运行 passwd 命令并指定用户名作为选项(例如 passwd 用户名),则可以更改指定用户的密码。
场景:passwd 命令主要用于交互式地更改用户密码,适用于单个用户的情况
- 命令格式
命令格式
passwd 用户名
在rocky 和 centos系列的系统中,可以使用如下方式:
echo '密码' | passwd --stdin 用户名
passwd --stdin 用户名 <<<密码
- 修改密码
[root@Rocky94 ~]: passwd user3
Changing password for user user3.
New password: #输入新的密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #重新输入新的密码
passwd: all authentication tokens updated successfully. #所有的身份令牌已经成功更新
三、权限管理
Linux系统下的文件权限体系是控制对文件和目录访问权限的重要机制,它决定了谁可以读取、修改或执行文件。这一体系是Linux系统安全性和数据保护的基础。
在linux系统中,文件的权限,主要体现在两个方面:文件属性、操作权限
3.1文件操作权限
Linux文件权限主要分为三种类型:
-
读权限(Readable):
允许用户读取文件内容 或 查看目录中的文件列表
简写:r、4 -
写权限(Writable):
允许用户修改文件内容 或 在目录中创建、删除或重命名文件
简写:w、2 -
执行权限(eXcutable):
对于文件,表示该文件是可执行的程序;对于目录,表示用户可以进入该目录
简写:x、1
3.2文件用户属性
文件权限被分为三个级别,分别对应不同的用户群体:
-
所有者(Owner):
文件或目录的创建者,拥有对文件或目录的最高权限。
简写:u -
所属组(Group):
文件或目录被分配到的用户组,组内的所有成员将继承该组对该文件或目录的权限。
简写:g -
其他用户(Others):
既不是文件所有者也不是所属组成员的所有其他用户。
简写:o
程序访问文件时的权限,取决于此程序的发起者
进程的发起者,同文件的属主:则应用文件属主权限
进程的发起者,属于文件属组;则应用文件属组权限
应用文件“其它”权限
| 字符表示 | 二进制表示 | 八进制表示 | 备注 |
|---|---|---|---|
| — | 000 | 0 | 无任何权限 |
| –x | 001 | 1 | 可执行 |
| -w- | 010 | 2 | 可写 |
| -wx | 011 | 3 | 可写可执行 |
| r– | 100 | 4 | 可读 |
| r-x | 101 | 5 | 可读可执行 |
| rw- | 110 | 6 | 可读可写 |
| rwx | 111 | 7 | 可读可写可执行 |
| 字符表示 | 八进制数字表示 | 备注 |
|---|---|---|
| rw-r----- | 640 | 属主可读写,属组可读,其它用户无任何权限 |
| rw-r–r– | 644 | 属主可读写,属组可读,其它用户可读 |
| rwxr-xr-x | 755 | 属主可读写,可执行,属组可读可执行,其它用户可读可执行 |
注意:
默认情况下
创建的目录权限是 755
创建的文件权限是 644
3.3常用命令
- 查看文件属性信息
查看文件
[root@Rocky94 ~]: ls -l /tmp/a.txt
-rw-r--r--. 1 root root 0 Jan 26 15:16 /tmp/a.txt
3.3.1 chown 命令
chown 命令可以修改文件的属主,也可以修改文件属组
- 命令格式及选项
命令格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
注意:
owner 表示所有者
:group 和 .group 表示归属组
owner. 和 owner: 表示所有者和归属组一样
常用选项
-R|--recursive #递归操作
一般选项
-c|--changes #同-v选项,但只显示更新成功的信息
-f|--silent|--quiet #不显示错误信息
-v|--verbose #显示过程--dereference #修改的是符号链接指向的文件,而不是链接文件本身
-h|--no-dereference # 修改的是符号链接文件,而不是其指向的目标文件
# 只有当前系统支持修改符号链接文件属性时,此项才有效
--from=user:group #根据原属主属组来修改,相当于一个查询条件
--no-preserve-root # 不特别对待“/”,意思就是将根目录当成普通目录来执行
# 默认如此,所以不要对根目录进行操作
--preserve-root #不允许在"/"上递归操作
--reference=RFILE #根据其它文件权限来操作,就是复制该文件的属主属组信息给指定文件
下列选项配合 -R 使用
-H #如果选项是指向目录的软链接,则只修改指向的目录,不改变目录里面文件的属主属组
-L #更改所有遇到的符号链接指向的目录
-P #不更改符号链接指向的目录
- 更改文件用户属性
只修改所有者属性
[root@Rocky94 ~]: chown ligo chown/a.txt
同时修改所有者和归属组的属性
[root@Rocky94 ~]: chown ligo. chown/b.txt
[root@Rocky94 ~]: chown ligo: chown/c.txt
查看效果
[root@Rocky94 ~]: ll chown/{a..c}.txt
-rw-r--r--. 1 ligo root 6 Jan 27 00:38 chown/a.txt
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 chown/b.txt
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 chown/c.txt
通过用户id修改文件归属
[root@Rocky94 ~]: id ligo
uid=1001(ligo) gid=1001(ligo) groups=1001(ligo)
[root@Rocky94 ~]: chown 1001 chown/d.txt
[root@Rocky94 ~]: ll chown/d.txt
-rw-r--r--. 1 ligo root 6 Jan 27 00:38 chown/d.txt
仅修改文件的归属组的属性
[root@Rocky94 ~]: chown .ligo chown/{d..e}.txt
[root@Rocky94 ~]: ll chown/{d..e}.txt
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 chown/d.txt
-rw-r--r--. 1 root ligo 6 Jan 27 00:38 chown/e.txt
- 批量修改文件属性信息
[root@Rocky94 ~]: chown -R ligo chown
[root@Rocky94 ~]: ll chown/
total 20
-rw-r--r--. 1 ligo root 6 Jan 27 00:38 a.txt
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 b.txt
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 c.txt
drwxr-xr-x. 2 ligo root 6 Jan 27 00:36 dir1
drwxr-xr-x. 2 ligo root 6 Jan 27 00:36 dir2
drwxr-xr-x. 2 ligo root 6 Jan 27 00:36 dir3
drwxr-xr-x. 2 ligo root 6 Jan 27 00:36 dir4
drwxr-xr-x. 2 ligo root 6 Jan 27 00:36 dir5
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 d.txt
-rw-r--r--. 1 ligo ligo 6 Jan 27 00:38 e.txt
3.3.2 chmod 命令
chmod 命令可以修改文件的操作权限
- 命令格式及选项
命令格式
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
常用选项
-R|--recursive #递归操作
一般选项
-c|--changes #同-v选项,但只显示更新成功的信息
-f|--silent|--quiet #不显示错误信息
-v|--verbose #显示过程
--no-preserve-root #不特别对待“/”,意思就是将家目录当成普通目录来执行,默认如此,所以
不要对根目录进行操作
--preserve-root #不允许在"/"上递归操作
--reference=RFILE #根据其它文件权限来操作,就是复制该文件的权限信息给指定文件
- 权限的增删
linux系统中,对于文件的属性和权限的操作,常见的动作主要有以下三种
+ 增加某些权限- 删除某些权限
= 只保留某些权限,覆盖写法
>操作示例:
u+r # 属主加读权限
g-x # 属组去掉执行权限
ug=rx # 属主属组权限改为读和执行
o= # other用户无任何权限
a=rwx # 所有用户都有读写执行权限
u+r,g-x # 同时指定
- 文件权限修改
指定文件的其他用户都增加x权限
[root@Rocky94 ~]: chmod o+x chown/{a..c}.txt
[root@Rocky94 ~]: ll chown/{a..c}.txt
-rw-r--r-x. 1 ligo root 6 Jan 27 00:38 chown/a.txt
-rw-r--r-x. 1 ligo ligo 6 Jan 27 00:38 chown/b.txt
-rw-r--r-x. 1 ligo ligo 6 Jan 27 00:38 chown/c.txt
指定文件的 归属组权限+x,其他用户权限-x
[root@Rocky94 ~]: chmod g+x,o-x chown/{a..c}.txt
[root@Rocky94 ~]: ll chown/{a..c}.txt
-rw-r-xr--. 1 ligo root 6 Jan 27 00:38 chown/a.txt
-rw-r-xr--. 1 ligo ligo 6 Jan 27 00:38 chown/b.txt
-rw-r-xr--. 1 ligo ligo 6 Jan 27 00:38 chown/c.txt
指定文件的 所有者权限为 rwx
[root@Rocky94 ~]: chmod u=rwx chown/{a..c}.txt
[root@Rocky94 ~]: ll chown/{a..c}.txt
-rwxr-xr--. 1 ligo root 6 Jan 27 00:38 chown/a.txt
-rwxr-xr--. 1 ligo ligo 6 Jan 27 00:38 chown/b.txt
-rwxr-xr--. 1 ligo ligo 6 Jan 27 00:38 chown/c.txt
指定文件的 仅有其他人员才具有w权限
[root@Rocky94 ~]: chmod 002 chown/{a..c}.txt
[root@Rocky94 ~]: ll chown/{a..c}.txt
--------w-. 1 ligo root 6 Jan 27 00:38 chown/a.txt
--------w-. 1 ligo ligo 6 Jan 27 00:38 chown/b.txt
--------w-. 1 ligo ligo 6 Jan 27 00:38 chown/c.txt
3.4默认权限
linux系统在创建文件的时候,会有一个默认的权限。普通文件的权限是 644,普通目录文件的权限是755。在Linux系统中,文件创建时的默认权限与umask(用户文件创建掩码)紧密相关。umask决定了在创建新文件或目录时哪些权限位将被屏蔽(即不允许),从而间接决定了新文件或目录的默认权限
默认情况下,Linux系统中的umask值通常为022。这个值意味着:
对于新创建的文件,默认权限为644(即所有者具有读写权限,所属组和其他用户只有读权限)。
对于新创建的目录,默认权限为755(即所有者具有读、写、执行权限,所属组和其他用户具有读和执行权限)
umask的值是从文件或目录的默认权限中减去得到的。Linux中,文件和目录的默认权限分别是:
文件:-rw-rw-rw-(即666,所有用户都具有读写权限,不需要执行)
目录:drwxrwxrwx(即777,所有用户都具有读、写、执行权限)
当创建新文件或目录时,实际权限是默认权限减去umask值后的结果。例如,
如果umask值为022,- 则新文件的权限为666 - 022 = 644,- 新目录的权限为777 - 022 = 755。
- 命令格式及选项
命令格式:
umask [-p] [-S] [mode]
选项
-p #如果省略 MODE 模式,以可重用为输入的格式输入
-S #以字符显示
- umask实际案例
查看umask
[root@Rocky94 ~]: umask
0022
[root@Rocky94 ~]: umask -p
umask 0022
[root@Rocky94 ~]: umask -S
u=rwx,g=rx,o=rx
临时设定umask
[root@Rocky94 ~]: umask 123
[root@Rocky94 ~]: umask
0123
还原umask
[root@Rocky94 ~]: umask 022
[root@Rocky94 ~]: umask
0022
子shell创建文件
[root@Rocky94 ~]: ( umask 666; touch lsfile.txt )
当前shell创建文件
[root@Rocky94 ~]: touch dfile.txt
查看效果
[root@Rocky94 ~]: ll lsfile.txt dfile.txt
-rw-r--r--. 1 root root 0 Jan 28 00:49 dfile.txt
----------. 1 root root 0 Jan 28 00:49 lsfile.txt
结果显示:
互不影响
3.5 特殊权限
在Linux文件系统中,除了基本的读(r)、写(w)、执行(x)权限外,还存在三种特殊权限,它们分别是SUID(Set User ID)、SGID(Set Group ID)和Sticky Bit。这些特殊权限用于在特定情况下提供更灵活的权限控制
- SUID:
当SUID权限设置在可执行文件上时,执行该文件的用户将暂时获得该文件所有者的权限。这意味着,即使执行者不是文件的所有者,他们也能以文件所有者的身份执行文件,并可能因此访问或修改只有文件所有者才能访问的资源
表现:
在ls -l命令的输出中,如果可执行文件的"所有者"执行ls -权限位是s(小写),则表示该文件具有SUID权限。如果该文件没有执行权限,则表现为S(大写)
案例:
[root@Rocky94 ~]: ll /usr/bin/* | grep -E 'rws'
-rwsr-xr-x. 1 root root 57976 Oct 26 2022 /usr/bin/at
-rwsr-xr-x. 1 root root 73704 Oct 31 2023 /usr/bin/chage
-rws--x--x. 1 root root 32152 Apr 21 2024 /usr/bin/chfn
-rws--x--x. 1 root root 23896 Apr 21 2024 /usr/bin/chsh
-rwsr-xr-x. 1 root root 57240 Apr 16 2024 /usr/bin/crontab
-rwsr-xr-x. 1 root root 36872 May 16 2022 /usr/bin/fusermount
-rwsr-xr-x. 1 root root 36328 Apr 22 2024 /usr/bin/fusermount3
-rwsr-xr-x. 1 root root 78024 Oct 31 2023 /usr/bin/gpasswd
-rwsr-xr-x. 1 root root 48600 Apr 21 2024 /usr/bin/mount
-rwsr-xr-x. 1 root root 41744 Oct 31 2023 /usr/bin/newgrp
-rwsr-xr-x. 1 root root 32656 May 15 2022 /usr/bin/passwd
-rwsr-xr-x. 1 root root 31936 Apr 21 2023 /usr/bin/pkexec
-rwsr-xr-x. 1 root root 57056 Apr 21 2024 /usr/bin/su
-rwsr-xr-x. 1 root root 36224 Apr 21 2024 /usr/bin/umount
解读:
以/usr/bin/passwd文件为例,Linux系统中的/usr/bin/passwd文件就具有SUID权限。这使得普通用户能够修改自己的密码,因为passwd程序在执行时会暂时获得root权限,从而能够写入只有root才能访问的/etc/shadow文件
- SGID:
功能:
SGID权限可以应用于可执行文件或目录。对于可执行文件,它与执行SUID文件类似,但影响的是执行者的组身份。然而,在实际应用中,SGID更多地被用于目录,以便在该目录下创建的新文件自动继承目录的组身份
表现:
在ls -l命令的输出中,如果"目录的组"执行权限位是s(小写),则表示该目录具有SGID权限
案例:
[root@Rocky94 ~]: ll /usr/bin/* | grep -E '-sr'
-rwxr-xr-x. 1 root root 15496 Oct 26 2023 /usr/bin/recode-sr-latin
-rwxr-sr-x. 1 root tty 23912 Apr 21 2024 /usr/bin/write
解读:
在多用户环境中,SGID目录可以确保在该目录下创建的所有文件都属于同一个组,从而方便组成员之间的文件共享和管理
- Sticky Bit:
功能:
Sticky Bit权限仅对目录有效。当一个目录被设置为Sticky Bit时,只有该目录的所有者、文件的所有者或root用户才能删除或重命名该目录下的文件。这有助于防止其他用户删除或移动他们不拥有但可能有权访问的文件
表现:
在ls -l命令的输出中,如果目录的"其他用户"执行权限位是t(小写),则表示该目录具有Sticky Bit权限
案例:
[root@Rocky94 ~]: ll / | grep tmp
drwxrwxrwt. 18 root root 4096 Jan 28 16:35 tmp
解读:
Sticky Bit通常用于需要多用户访问但又要限制删除权限的目
特殊权限表示
| 权限 | 字符表示 | 八进制表示 | 备注 |
|---|---|---|---|
| SUID | s(小写) | 4 | 如果原属主没有可执行权限,再加SUID权限,则显示为S |
| SGID | s(小写) | 2 | 如果原属组没有可执行权限,再加SGID权限,则显示为S |
| STICKY | t(小写) | 1 | 如果other没有可执行权限,再加STICKY权限,则显示为T |
- 设定方式
SUID设定方式: u+s、u-s、4xxx
SGID设定方式: g+s、g-s、2xxx
STICKY设定方式: o+t、o-t、1xxx
四、文件管理
4.1 时间戳
文件时间戳是操作系统为每个文件记录的三个关键时间信息:创建时间(Created)、修改时间(Modified) 和 访问时间(Accessed)。它们不仅是文件系统的元数据,更是数据管理、审计追踪、自动化运维和版本控制的核心依据
- 文件时间属性
以天为单位-atime [+|-]N -mtime [+|-]N -ctime [+|-]N
以分钟为单位-amin [+|-]N -mmin [+|-]N -cmin [+|-]N
#解释
N #表示[N,N+1),大于或等于N,小于N+1,表示第N天(分钟)
+N #表示[N+1,∞],大于或等于N+1,表示N+1天之前(包括)
-N #表示[0,N),大于或等于0,小于N,表示N天(分钟)内
4.2 find 命令
find命令是Unix/Linux系统中一个功能强大且灵活的命令行工具,用于在目录结构中搜索文件和目录。它不仅能够根据文件名、类型、大小、修改时间等属性进行搜索,还可以对搜索结果执行各种操作,如删除、移动、复制等。这使得find命令成为系统管理员和开发人员日常工作中不可或缺的工具
- 工作特点:
- 查找速度略慢
- 精确查找
- 实时查找
- 查找条件丰富
- 只搜索用户具备读取和执行权限的目录
- 命令格式及选项
命令格式:
find [搜索路径] [选项] [表达式]
搜索路径:指定find命令开始搜索的目录。可以是一个或多个路径。不指定路径,表示当前路径。
选项:用于定义搜索的条件,如文件名、文件类型、大小、时间等。
表达式:用于进一步细化搜索条件,可以与选项组合使用来构建复杂的搜索逻辑
常用选项
-name:按文件名匹配,区分大小写。支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-type:按文件类型搜索。常用类型包括f(普通文件)、d(目录)、l(符号链接)等。
-size:按文件大小搜索。单位可以是c(字节)、k(千字节)、M(兆字节)、G(千兆字节)等。例
如,-size +10M查找大于10MB的文件。
-mtime:按天数查找文件最后修改时间。例如,-mtime -7查找最近7天内修改的文件。
-user:按文件所有者查找。
-group:按文件所属组查找。
-perm:按文件权限查找。
-maxdepth:限制搜索的最大深度。
-mindepth:限制搜索的最小深度。
-regextype type: 正则表达式类型,emacs|posix-awk|posix-basic|posix-egrep|posixextended
-regex pattern: 正则表达式
一般选项
-iname name # 不区分字母大小写
-inum number # 按inode号查找
-samefile name # 相同inode号的文件
-links n # 链接数为n的文件
-regex "PATTERN" # 以PATTERN匹配整个文件路径,而非文件名称
- 表达式组合
find命令支持使用逻辑操作符(如-and、-or、-not)来组合多个搜索条件,以构建复杂的搜索逻辑。此外,还可以使用括号来分组条件,但括号需要被转义或使用引号括起来
除了搜索功能外,find命令还可以对搜索结果执行各种操作。常用的操作选项包括:
-print:打印搜索结果(默认行为)
-exec:对每个匹配的文件执行指定的命令。命令以{}代表当前文件,命令结尾以 ;或 +结束。注意转义符
-ok:与-exec类似,但在执行每个命令前都会提示用户确认
-delete:直接删除匹配的文件或目录(使用时要小心)
-ls:以ls -dils的格式显示匹配的文件
- 文件名查找
指定文件名查找
[root@Rocky94 find]: find -name test-a.log
./test-a.log
指定文件名查找,忽略大小写
[root@Rocky94 find]: find -iname test-a.log
./test-a.log
./test-A.log
通配符查找
[root@Rocky94 find]: find -name "*txt"
./test-a.txt
./test-b.txt
./test-A.txt
./test-B.txt
正则表达式
[root@Rocky94 find]: find -regex ".*.log$"
./test-a.log
./test-b.log
./test-A.log
./test-B.log
正则表达式路径匹配
[root@Rocky94 find]: find -regex ".*dir3.*"
./dir1/dir2/dir3
./dir1/dir2/dir3/dir4
- 类型查找
查了当前目录下的所有目录文件
[root@Rocky94 find]: find -type d
.
./dir1
./dir1/dir2
./dir1/dir2/dir3
./dir1/dir2/dir3/dir4
查找tmp目录下所以链接和管道文件,多个类型使用逗号隔开,而且需要再单引号内部
[root@Rocky94 find]: find /tmp/ -type 'd,p'
空文件查找
[root@Rocky94 find]: find dir1/dir2/dir3/ -empty
dir1/dir2/dir3/dir4
排除查找
排除 dir1 目录中的 txt 文件,但还是会输出 dir1
[root@Rocky94 find]: find -path './dir1' -prune -o -name "*.txt"
./dir1
./test-a.txt
./test-b.txt
./test-A.txt
./test-B.txt
- 文件属性查找
大于2K,小于或等于3K的文件
[root@Rocky94 find]: find /var/log/ -size 3k -ls
68243422 4 -rw------- 1 root root 2073 Nov 14 12:23 /var/log/anaconda/dnf.librepo.log
2541291 4 -rw------- 1 root root 2914 Jan 26 15:13 /var/log/vmware-vmusr-root.log
查找五分钟前被访问过的文件
[root@Rocky94 find]: find -amin +5
.
./dir1
./dir1/dir2
./dir1/dir2/dir3
./dir1/dir2/dir3/dir4
./fstab
./.issue
./test-a.log
./test-a.txt
./test-b.log
./test-b.txt
./test-A.log
./test-A.txt
./test-B.log
./test-B.txt
4.3 xargs 命令
命令结果传递
作用:
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 一般是和管道一起使用
- 命令格式及选项
命令格式:
somecommand |xargs -item command
OPTIONS:
-a file 从文件中读入作为sdtin
-E flag flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止
-p 当每次执行一个argument的时候询问一次用户
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
-t 表示先打印命令,然后再执行
-i 或者是-I,将xargs接收的每项名称,逐行赋值给 {},可以用 {} 代替
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分
隔符
- xargs案例
从文件读取内容
[root@Rocky94 find]: xargs -a num.txt
1 2 3 4 5 6 7 8 9
从文件中读取内容时,指定内容结束符号
[root@Rocky94 find]: xargs -a num.txt -E 4
1 2 3
从文件中读取内容时,询问用户是否显示,y显示,其他不显示
[root@Rocky94 find]: xargs -a num.txt -p
echo 1 2 3 4 5 6 7 8 9?...y
1 2 3 4 5 6 7 8 9
从文件中读取内容时,指定每行显示几个内容
[root@Rocky94 find]: xargs -a num.txt -n4
1 2 3 4
5 6 7 8
9
默认xargs以空格为分隔符,可以通过-d来自定义分隔符
[root@Rocky94 find]: echo "aoufdhafouXaioufhbaoufXfaf" | xargs -dX
aoufdhafou aioufhbaouf faf
五、打包压缩
常见打包工具
- gz包
- tar包
- zip包
- 其他:z包、xz包、bz包
5.1 gz包
来自于 gzip 包
对应的文件是 .gz 后缀
- 命令格式及选项
命令格式
gzip [OPTION]... FILE ...
gunzip [OPTION]... FILE ...
常用选项
-c|--stdout #将压缩数据输出到标准输出中,并保留原文件
-d|--decompress #解压缩,相当于gunzip
-f|--force #覆盖己存在目标文件
-k|--keep #保留原文件
-l|--list #显示原文件大小,压缩文件大小,压缩比,压缩前文件名
-q|--quiet #安静模式,忽略警告
-r|--recursive #递归压缩目录内所有文件
-S|--suffix=SUF #指定压缩文件后缀
-t|--test #测试,检测压缩文件是否完整
-v|--verbose #显示过程
-1|--fast #最快压缩,压缩比最底,但压缩速度快
-9|--best #最好压缩,压缩比最高,但压缩速度慢
-N #指定压缩等级,取值为1-9之间,默认6
- 文件压缩
保留原文件,并显示压缩过程
[root@Rocky94 gzip]: gzip -vk fstab passwd
fstab: 48.9% -- created fstab.gz
passwd: 48.9% -- created passwd.gz
[root@Rocky94 gzip]: ls
fstab fstab.gz passwd passwd.gz
重定向压缩
[root@Rocky94 gzip]: gzip fstab -c > fstab1.gz
管道
[root@Rocky94 gzip]: cat passwd | gzip > pwd.gz
查看
[root@Rocky94 gzip]: ls
fstab fstab1.gz fstab.gz passwd passwd.gz pwd.gz
- 查看和解压
查看压缩文件信息
[root@Rocky94 gzip]: gzip -l fstab.gz passwd.gz
compressed uncompressed ratio uncompressed_name
359 655 48.9% fstab
360 655 48.9% passwd
719 1310 47.0% (totals)
删除源文件
[root@Rocky94 gzip]: rm -rf fstab
基于压缩包文件解压
[root@Rocky94 gzip]: gunzip -vkf fstab.gz
fstab.gz: 48.9% -- created fstab
查看效果
[root@Rocky94 gzip]: ls
fstab fstab1.gz fstab.gz passwd passwd.gz pwd.gz
5.2 tar包
tar 即 Tape ARchive 磁带归档,可以对目录和多个文件打包成一个文件进行归档;
其本身不具备压缩功能,但可以使用参数调用相应的压缩命令进行压缩;前提是当前系统中有安装该压缩工具
此命令可以保留文件属性,推荐使用;
对应的文件是 .tar 后缀
- 命令格式及选项
tar [OPTION...] [FILE]...
#tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]
#必选项 {A|c|d|r|t|u|x}
-A|--catenate|--concatenate #追加 tar 文件至归档
-c|--create #创建一个新归档
-d|--diff|--compare #找出归档和文件系统的差异
--delete #从归档(非磁带!)中删除
-r|--append #追加文件至归档结尾
-t|--list #列出归档内容
--test-label #测试归档卷标并退出
-u|--update #仅追加比归档中副本更新的文件
-x|--extract|--get #从归档中解出文件
- 查看默认打包选项
[root@Rocky94 tar]: tar --show-defaults
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/etc/rmt --rsh-command=/usr/bin/ssh
- 打包
打包
[root@Rocky94 tar]: tar -cf etc.tar /etc
tar: Removing leading `/' from member names
[root@Rocky94 tar]: ll
total 24820
-rw-r--r--. 1 root root 25415680 Jan 29 00:36 etc.tar
多文件打包
[root@Rocky94 tar]: tar -cvf test.tar f1.txt f2.txt
f1.txt
f2.txt
[root@Rocky94 tar]: ll
total 24840
-rw-r--r--. 1 root root 25415680 Jan 29 00:36 etc.tar
-rw-r--r--. 1 root root 3 Jan 29 00:37 f1.txt
-rw-r--r--. 1 root root 3 Jan 29 00:37 f2.txt
-rw-r--r--. 1 root root 10240 Jan 29 00:38 test.tar
查看压缩包里面文件列表
[root@Rocky94 tar]: tar -tvf test.tar
-rw-r--r-- root/root 3 2026-01-29 00:37 f1.txt
-rw-r--r-- root/root 3 2026-01-29 00:37 f2.txt
向压缩包文件中,追加文件
[root@Rocky94 tar]: tar -rf test.tar f3.txt
[root@Rocky94 tar]: tar -tvf test.tar
-rw-r--r-- root/root 3 2026-01-29 00:37 f1.txt
-rw-r--r-- root/root 3 2026-01-29 00:37 f2.txt
-rw-r--r-- root/root 3 2026-01-29 00:40 f3.txt
从压缩包文件中,剔除文件
[root@Rocky94 tar]: tar --delete -vf test.tar f3.txt
[root@Rocky94 tar]: tar -tvf test.tar
-rw-r--r-- root/root 3 2026-01-29 00:37 f1.txt
-rw-r--r-- root/root 3 2026-01-29 00:37 f2.txt
- 解压
解压文件
[root@Rocky94 tar]: tar xf test.tar
[root@Rocky94 tar]: ls
etc.tar f1.txt f2.txt test.tar
5.3 zip包
zip 可以实现打包目录和多个文件成一个文件并压缩,但可能会丢失文件属性信息,如:所有者和组信息
分别来自于 zip 和 unzip 包
对应的文件是 .zip 后缀
- 命令格式及选项
zip [OPTION]... zipfile [FILE]...
unzip [OPTION]... zipfile [FILE]...
zip常用选项
-f #更换较新的文件到压缩文件内
-u #如果压缩包内有,则更新,如果没有,则追加进去
-d #从压缩包内删除指定的文件
-m #将文件压缩之后,删除原始文件
-r #递归压缩目录
-j #只保存文件名称及其内容,而不存放任何目录名称
-l #压缩文件时,把LF字符置换成LF+CR字符,unzip -l 表示显示压缩文件的内容
-1 #最快压缩,数字1
-9 #最高压缩比,数字9
-q #安静模式
-v #显示过程
-c #替每个被压缩的文件加上注释
-z #给压缩包加注释,unzip -z 查看注释
-x #压缩时排除指定文件
-i #仅压缩指定文件
-D #压缩文件内不建立目录名称
-T #测试,检测压缩文件是否完整
-X #不保存额外的文件属性
-y #直接保存符号连接,而非该链接所指向的文件
-n #不压缩以特定字符串结尾的文件
-P #加密码
unzip常用选项
-p #将压缩内容通过管道传送
-l #显示压缩文件内所包含的文件
-t #测试,检测压缩文件是否完整
-z #查看注释
-v #列出包内文件信息
-x #指定不需要解压缩的文件
-d #指定解压后的目标目录
-n #解压缩时不要覆盖原有的文件
-q #安静模式
-o #直接覆盖
-a #对文本文件进行必要的字符转换
-j #不处理压缩文件中原有的目录路径
-C #压缩文件中的文件名称区分大小写
-L #将压缩文件中的全部文件名改为小写
-X #解压缩时同时回存文件原来的UID/GID
-V #保留VMS的文件版本信息
-K #解压缩后还原权限
-M #将输出结果送到more程序处理
- 压缩
压缩文件
[root@Rocky94 zip]: zip -v fstab.zip fstab
adding: fstab (in=655) (out=335) (deflated 49%)
total bytes=655, compressed=335 -> 49% savings
[root@Rocky94 zip]: ls
fstab fstab.zip passwd
查看压缩包文件内容
[root@Rocky94 zip]: unzip -l fstab.zip
Archive: fstab.zip
Length Date Time Name
--------- ---------- ----- ----
655 01-29-2026 00:50 fstab
--------- -------
655 1 file
往压缩包中添加新文件
[root@Rocky94 zip]: zip fstab.zip passwd
adding: passwd (deflated 49%)
[root@Rocky94 zip]: unzip -l fstab.zip
Archive: fstab.zip
Length Date Time Name
--------- ---------- ----- ----
655 01-29-2026 00:50 fstab
655 01-29-2026 00:50 passwd
--------- -------
1310 2 files
递归压缩
[root@Rocky94 zip]: tree
.
├── fstab
├── fstab.zip
├── ligo
│ └── dira
│ ├── a.txt
│ ├── b.txt
│ └── c.txt
└── passwd
2 directories, 6 files
[root@Rocky94 zip]: zip -r fstab.zip ligo/
adding: ligo/ (stored 0%)
adding: ligo/dira/ (stored 0%)
adding: ligo/dira/a.txt (stored 0%)
adding: ligo/dira/b.txt (stored 0%)
adding: ligo/dira/c.txt (stored 0%)
[root@Rocky94 zip]: unzip -l fstab.zip
Archive: fstab.zip
Length Date Time Name
--------- ---------- ----- ----
655 01-29-2026 00:50 fstab
655 01-29-2026 00:50 passwd
0 01-29-2026 00:54 ligo/
0 01-29-2026 00:54 ligo/dira/
0 01-29-2026 00:54 ligo/dira/a.txt
0 01-29-2026 00:54 ligo/dira/b.txt
0 01-29-2026 00:54 ligo/dira/c.txt
--------- -------
1310 7 files
- 设置密码
非交互式加密解密
[root@Rocky94 zip]: zip -vP 123456 test.zip /etc/fstab
adding: etc/fstab (in=655) (out=335) (deflated 49%)
total bytes=655, compressed=347 -> 47% savings
[root@Rocky94 zip]: unzip -P 123456 test.zip
Archive: test.zip
inflating: etc/fstab
[root@Rocky94 zip]: ls
etc fstab fstab.zip ligo passwd test.zip
[root@Rocky94 zip]: ls etc/
fstab
交互式加密解密
[root@Rocky94 zip]: ls etc/
fstab
[root@Rocky94 zip]: zip -ve test1.zip /etc/passwd
Enter password: #输入密码
Verify password: #输入验证密码
adding: etc/passwd (in=655) (out=335) (deflated 49%)
total bytes=655, compressed=347 -> 47% savings
[root@Rocky94 zip]: unzip test1.zip
Archive: test1.zip
[test1.zip] etc/passwd password: #输入解压密码
inflating: etc/passwd
- 解压缩
[root@Rocky94 zip]: unzip -v test.zip
Archive: test.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
655 Defl:N 335 49% 11-14-2025 12:11 1bfcf981 etc/fstab
-------- ------- --- -------
655 335 49% 1 file
总结
以上就是我们的Ubuntu24.04系统的一个安装过程啦!希望能帮助到大家!
如果觉得有用的话,麻烦点赞收藏,转发给更多需要的人看吧!
有问题可以私信我一起沟通哈~









