LFCS #3:如何在 Linux 中存档文件、设置文件权限和查找文件
最近,Linux 基金会启动了LFCS(Linux 基金会认证系统管理员)认证,这是一项全新的计划,其目的是允许个人在 Linux 系统上执行从基础到中级的系统管理任务。
这包括支持已经运行的系统和服务,以及第一级故障排除和分析,以及决定何时将问题上报给工程团队的能力。
该系列标题为LFCS(Linux 基金会认证系统管理员)的准备第 1 至 33 部分,涵盖以下主题:
这篇文章是 33 个教程系列的第 3 部分,在本部分中,我们将介绍如何存档/压缩文件和目录、设置文件属性以及在文件系统上查找文件,这些都是 LFCS 认证考试所必需的。
Linux 的归档和压缩工具
文件归档工具将一组文件分组为一个独立文件,我们可以将其备份到多种类型的媒体、通过网络传输或通过电子邮件发送。
Linux 中最常用的归档实用程序是tar 命令。当归档实用程序与压缩工具一起使用时,它可以减少存储相同文件和信息所需的磁盘大小。
Linux tar 实用程序
tar将一组文件打包成一个存档(通常称为tar 文件或tarball)。该名称最初代表磁带存档程序,但我们必须注意,我们可以使用此工具将数据存档到任何类型的可写介质(不仅仅是磁带)。
Tar 通常与压缩工具(例如gzip、bzip2或xz )一起使用来生成压缩的 tarball。
tar命令的基本语法如下:
# tar [options] [pathname ...]
Where...
代表用于指定应对哪些文件采取行动的表达式。
最常用的 Tar 命令
多头期权 | 缩写 | 描述 |
-创造 | 丙 | 创建 tar 存档 |
–连接 | 一个 | 将 tar 文件附加到档案中 |
-附加 | r | 将文件附加到档案末尾 |
-更新 | 你 | 在存档中附加比副本更新的文件 |
–diff 或 –compare | d | 查找档案和文件系统之间的差异 |
–文件存档 | f | 使用存档文件或设备 ARCHIVE |
-列表 | 吨 | 列出 tarball 的内容 |
–extract 或 –get | 十 | 从档案中提取文件 |
常用的 tar 操作修饰符
多头期权 | 缩写 | 描述 |
–目录 dir | 碳 | 执行操作前更改目录 dir |
–相同权限 | 页 | 保留原始权限 |
–详细 | 五 | 列出所有读取或提取的文件。当此标志与 –list 一起使用时,将显示文件大小、所有权和时间戳。 |
-核实 | 西 | 写入档案后进行验证 |
–排除文件 | — | 从档案中排除文件 |
–排除=模式 | 十 | 排除文件,以 PATTERN 形式给出 |
–gzip 或 –gunzip | 是 | 通过 Gzip 处理档案 |
–bzip2 | 杰 | 通过 bzip2 处理档案 |
–xz | J | 通过 xz 处理档案 |
Linux Gzip、Bzip2 和 Xz 实用程序
Gzip是最古老的压缩工具,压缩效果最差,而bzip2压缩效果更好。此外,xz是最新的,但(通常)压缩效果最好。
最佳压缩的优势是有代价的:完成操作所需的时间,以及在此过程中使用的系统资源。
通常,使用这些实用程序压缩的tar.gz
文件分别具有、.bz2
或.xz
扩展名。在以下示例中,我们将使用这些文件:file1、file2、file3、file4和file5。
使用 gzip、bzip2 和 xz 压缩文件
将当前工作目录中的所有文件分组,并使用gzip、bzip2和xz压缩生成的包(请注意使用正则表达式来指定哪些文件应该包含在包中 - 这是为了防止归档工具对前面步骤中创建的 tarball 进行分组)。
# tar czf myfiles.tar.gz file[0-9] # tar cjf myfiles.tar.bz2 file[0-9] # tar cJf myfile.tar.xz file[0-9]
列出内容并更新/附加文件 Tar 存档
列出 tarball 的内容并显示与长目录列表相同的信息。请注意,更新或附加操作不能直接应用于压缩文件。
解压缩 Tar 文件
如果您需要更新或附加文件到压缩的 tarball,则需要解压缩 tar 文件并更新/附加到它,然后再次压缩它。
# tar tvf [tarball]
运行以下任一命令:
# gzip -d myfiles.tar.gz [#1] # bzip2 -d myfiles.tar.bz2 [#2] # xz -d myfiles.tar.xz [#3]
删除或添加文件到 Tar 存档
# tar --delete --file myfiles.tar file4 (deletes the file inside the tarball) # tar --update --file myfiles.tar file4 (adds the updated file)
和
# gzip myfiles.tar [ if you choose #1 above ] # bzip2 myfiles.tar [ if you choose #2 above ] # xz myfiles.tar [ if you choose #3 above ]
最后,
# tar tvf [tarball] #again
并将file4的修改日期和时间与前面显示的相同信息进行比较。
从备份中排除文件
假设您要备份用户的主目录。系统管理员的良好做法是(公司政策也可能规定)从备份中排除所有视频和音频文件。
也许您的第一种方法是从备份中排除所有带有.mp3
或.mp4
扩展名(或其他扩展名)的文件。如果您有一个聪明的用户可以将扩展名更改为.txt
或.bkp
,那么您的方法就没什么用了。
为了检测音频或视频文件,您需要使用文件检查其文件类型。以下 shell 脚本将完成此工作。
#!/bin/bash # Pass the directory to backup as first argument. DIR=$1 # Create the tarball and compress it. Exclude files with the MPEG string in its file type. # -If the file type contains the string mpeg, $? (the exit status of the most recently executed command) expands to 0, and the filename is redirected to the exclude option. Otherwise, it expands to 1. # -If $? equals 0, add the file to the list of files to be backed up. tar X <(for i in $DIR/*; do file $i | grep -i mpeg; if [ $? -eq 0 ]; then echo $i; fi;done) -cjf backupfile.tar.bz2 $DIR/*
使用 Tar 恢复备份并保留权限
然后,您可以使用以下命令将备份恢复到原始用户的主目录(此示例中为user_restore ),并保留权限。
# tar xjf backupfile.tar.bz2 --directory user_restore --same-permissions
使用“查找”命令搜索文件
find 命令用于在目录树中递归搜索符合某些特征的文件或目录,然后可以打印匹配的文件或目录或对匹配项执行其他操作。
通常,我们会按名称、所有者、组、类型、权限、日期和大小进行搜索。
find命令的基本语法如下:
# find [directory_to_search] [expression]
根据大小递归查找文件
查找-f
当前目录 ( .
) 及其2
下的子目录(-maxdepth 3
包括当前工作目录和下面 2 个级别)中大小 ( -size
) 大于2 MB的所有文件 ( ) 。
# find . -maxdepth 3 -type f -size +2M
查找并删除符合特定条件的文件
具有777权限的文件有时被视为对外部攻击者敞开大门。无论如何,让任何人对文件进行任何操作都是不安全的。我们将采取相当激进的方法并删除它们!(“ {}
”+
用于“收集”搜索结果)。
# find /home/user -perm 777 -exec rm '{}' +
根据时间戳查找文件
在/etc中搜索距离6 个月以上 ( +180 ) 或少于 ( -180 )或正好6 个月前 ( 180 )被访问 ( -atime
) 或修改 ( ) 的配置文件。-mtime
根据以下示例修改以下命令:
# find /etc -iname "*.conf" -mtime -180 -print
设置文件权限和基本属性
ls -l输出的前10 个字符是文件属性。其中第一个字符用于指示文件类型:
-
:常规文件-d
:目录-l
:符号链接-c
:字符设备(将数据视为字节流,即终端)-b
:块设备(以块为单位处理数据,即存储设备)
文件属性的接下来的九个字符称为文件模式,代表文件所有者、文件组所有者和其余用户(通常称为“所有人”)的读 ( r
)、写 ( w
) 和执行 ( ) 权限。x
文件的读取权限允许打开和读取文件,而目录的相同权限允许列出其内容(如果还设置了执行权限)。此外,文件中的执行权限允许将其作为程序处理并运行,而目录中的执行权限允许将文件 cd 到其中。
文件权限用chmod命令改变,其基本语法如下:
# chmod [new_mode] file
其中new_mode是一个八进制数或指定新权限的表达式。
The octal number can be converted from its binary equivalent, which is calculated from the desired file permissions for the owner, the group, and the world, as follows:
The presence of certain permission equals a power of 2 (r=22, w=21, x=20), while its absence equates to 0. For example:
To set the file’s permissions as above in octal form, type:
# chmod 744 myfile
You can also set a file’s mode using an expression that indicates the owner’s rights with the letter u
, the group owner’s rights with the letter g
, and the rest with o
.
All of these “individuals” can be represented at the same time with the letter a
. Permissions are granted (or revoked) with the +
or -
signs, respectively.
Remove Execute Permission On a Script to All Users
As we explained earlier, we can revoke a certain permission by prepending it with the minus sign and indicating whether it needs to be revoked for the owner, the group owner, or all users. The one-liner below can be interpreted as follows: Change mode for all (a
) users, revoke (-
) execute permission (x
).
# chmod a-x backup.sh
Granting read, write, and execute permissions for a file to the owner and group owner, and read permissions for the world.
When we use a 3-digit octal number to set permissions for a file, the first digit indicates the permissions for the owner, the second digit for the group owner and the third digit for everyone else:
- Owner: (r=22 + w=21 + x=20 = 7)
- Group owner: (r=22 + w=21 + x=20 = 7)
- World: (r=22 + w=0 + x=0 = 4),
# chmod 774 myfile
In time, and with practice, you will be able to decide which method to change a file mode works best for you in each case. A long directory listing also shows the file’s owner and its group owner (which serve as a rudimentary yet effective access control to files in a system):
File ownership is changed with the chown command. The owner and the group owner can be changed at the same time or separately. Its basic syntax is as follows:
# chown user:group file
Where at least a user or group needs to be present.
Chown Command Examples
Changing the owner of a file to a certain user.
# chown gacanepa sent
Changing the owner and group of a file to a specific user:group pair.
# chown gacanepa:gacanepa TestFile
Changing only the group owner of a file to a certain group. Note the colon before the group’s name.
# chown :gacanepa email_body.txt
Conclusion
As a sysadmin, you need to know how to create and restore backups, how to find files in your system and change their attributes, along with a few tricks that can make your life easier and will prevent you from running into future issues.
我希望本文提供的提示能帮助您实现这一目标。欢迎在评论部分添加您自己的信息和想法,以造福社区。提前致谢!
LFCS 电子书现已开放购买。立即订购,开始成为认证 Linux 系统管理员的旅程!
产品名称 | 价格 | 买 |
---|---|---|
Linux 基金会的 LFCS 认证准备指南 | 19.99 美元 | [立即购买] |
最后,但同样重要的一点是,请考虑使用以下链接购买您的考试券,以赚取少量佣金,这将帮助我们保持本书的更新。