Linux系统操作与安全知识全解析
1. 文件备份与传输工具
1.1 rsync工具选项解析
在使用
rsync
进行文件备份和传输时,不同的选项有着不同的功能:
-
-a
选项:允许递归备份目录树,并保留所有文件元数据,等同于使用
-rlptgoD
选项。
-
-r
选项:仅允许递归操作,但不保留元数据,如文件所有权。
-
-z
选项:使用zlib库进行压缩。
-
-e
和
--rsh
选项:用于指定将文件发送到远程系统时使用的远程程序。
1.2 scp工具特点
scp
(Secure Copy)是一个用于在不同主机之间安全复制文件的工具,其特点如下:
- 非交互式工具。
- 操作不能中断,否则需重新开始。
1.3 sftp中断操作恢复
在
sftp
中,如果上传本地备份到远程系统的操作被中断,可以使用
reput
命令恢复操作。而
progress
命令用于切换进度显示的开关;
get
和
reget
命令用于从远程系统下载文件到本地系统;
put
命令用于开始上传操作,但不能恢复上传。
2. 软件管理
2.1 源码包下载
当开发者以源码包(tarballs)形式分发应用程序时,可以使用
wget
和
cURL
从命令行下载文件。而
dpkg
用于安装DEB包文件,
rpm
和
yum
用于安装RPM包文件,它们不适合下载源码包。
2.2 源码编译与构建
- make脚本 :运行必要的编译步骤,编译所有源代码和库文件,以构建应用程序的可执行文件。
-
configure工具
:评估Linux系统,确保满足所有依赖项,并安装了适当的编译器工具,然后构建
make脚本。 - GNU Compiler Collection (gcc) :Linux中最常用的编译器。
2.3 源码包处理
- tar工具 :常用于将源代码项目打包成单个可分发文件。常用选项如下:
-
-zxvf:用于解压缩和提取tarball文件中的文件。 -
-Uvh:通常用于rpm程序安装包,不适用于tar。 -
-xvf:从tarball中提取文件,但不进行解压缩。 -
-zcvf:创建新的tarball并进行压缩。 -
-cvf:创建新的tarball文件,但不提取现有文件。
2.4 不同Linux发行版的包管理
- Rocky Linux :使用Red Hat包管理系统,使用RPM文件。
-
Debian-based系统
:使用
dpkg程序安装DEB包文件。 -
Red Hat-based系统
:使用
yum和dnf程序从Red Hat仓库安装RPM包。
2.5 应用容器格式
Red Hat-based Linux发行版使用
flatpak
应用容器格式安装容器,而Ubuntu使用
snap
应用容器格式。
3. 内核模块管理
3.1 内核模块特点
内核模块是一个独立的驱动库文件,未预编译到Linux内核中,可以根据需要加载和卸载,为系统提供额外功能,使Linux内核更轻量级和灵活。
3.2 内核模块存储位置
内核模块文件根据发行版的不同,可能存储在
/lib/modules/KernelVersion/
或
/usr/lib/modules/KernelVersion/
的子目录中。如果使用
/usr/lib/modules/KernelVersion/
目录,它通常硬链接到
/lib/modules/KernelVersion/
目录。
3.3 内核模块配置信息
-
旧版Linux发行版:将模块配置信息存储在单个配置文件
/etc/modules.conf中。 -
新版Linux发行版:将配置信息存储在
/etc/modprobe.d/、/lib/modprobe.d/、/usr/lib/modprobe.d/和run/modprobe.d/目录下的.conf文件中。
3.4 内核模块操作工具
- modinfo :查看模块的详细信息,包括依赖项。
- insmod :动态加载模块。
- lsmod :显示当前加载的模块。
- modprobe :动态加载或卸载内核模块,并自动加载所需的依赖项。
-
depmod
:扫描系统,更新
modules.dep文件。 - rmmod :快速卸载模块,但不卸载其依赖项。
- modprobe -r :卸载模块及其所有依赖项。
3.5 内核模块操作流程
graph TD;
A[检测新硬件] --> B{自动检测};
B -- 是 --> C[自动加载模块];
B -- 否 --> D[使用depmod扫描系统];
D --> E[确定所需模块及依赖项];
E --> F[更新modules.dep文件];
F --> G[使用modprobe加载模块];
4. 文件所有权与权限
4.1 基本安全权限
Linux系统中可以设置的基本安全权限包括读(read)、写(write)和执行(execute)访问。删除和修改文件需要写权限,因为没有单独的删除和修改访问权限。
4.2 权限分配类别
Linux使用三种类别分配权限:
- 所有者(owner)
- 组(group)
- 其他用户(others)
4.3 特殊权限位
- Set User ID bit (SUID) :允许所有用户以root用户账户的身份运行应用程序。
- Sticky bit :防止用户删除他们有组权限但不拥有的文件。
- GUID bit :指示Linux将目录中的所有文件设置为该目录的组分配,而不是创建文件的用户账户的组分配。
4.4 权限表示
八进制模式权限
644
表示所有者具有读写权限,组和其他用户只有读权限,对应的符号模式为
rw-r--r--
。
4.5 权限和组管理命令
- chgrp :用于更改文件或目录的组分配。
- chown :可以同时更改文件或目录的所有者和组。
- chmod :更改文件或目录的权限。
- chage :用于控制用户账户的密码。
- ulimit :用于限制用户账户可以使用的系统资源。
4.6 ACL和SELinux
-
ACL(Access Control Lists)
:使用
getfacl命令检索文件或目录的所有ACL权限,使用setfacl命令更改ACL权限。 - SELinux(Security-Enhanced Linux) :
- Permissive mode :记录策略违规,但不阻止操作发生。
- Disabled mode :允许所有操作发生,但不记录。
- Enforcing mode :记录并强制执行策略违规。
4.7 以其他用户身份运行程序
- su :允许以其他用户(包括root用户)的身份运行应用程序。
- sudo :允许以root用户的身份运行应用程序。
4.8 不同发行版的管理员权限组
-
Red Hat-based系统
:使用
wheel组允许成员获得管理员权限。 -
Debian-based系统
:使用
sudo组允许成员获得管理员权限。
5. 访问和认证方法
5.1 PAM(Pluggable Authentication Modules)
应用程序要使用PAM,必须与
libpam
(也称为
libpam.so
)库一起编译。PAM配置文件
/etc/pam.d/
中可能包含的控制标志有
requisite
、
required
、
sufficient
和
optional
。
5.2 登录失败记录
pam_tally2
和
faillock
命令可以显示失败的登录尝试。
5.3 加密方式
- 对称加密 :发送者和接收者使用相同的密钥进行加密和解密。
- 非对称加密 :发送者使用接收者的公钥加密消息,接收者使用自己的私钥解密消息。
5.4 数字签名
数字签名是一种用于验证消息完整性和发送者身份的技术。
5.5 OpenSSH
-
known_hosts文件
:OpenSSH应用程序在每个用户的
~/.ssh/known_hosts文件中记录以前连接过的主机及其公钥。 - authorized_keys文件 :用于SSH服务器记录用于无密码认证的授权公钥。
5.6 TCP Wrappers
TCP Wrappers是一种用于控制对网络服务访问的机制。在
/etc/hosts.allow
和
/etc/hosts.deny
文件中配置访问规则时,应避免在
/etc/hosts.allow
中放置
ALL: ALL
,而应将其放在
/etc/hosts.deny
中以提供最佳安全性。
总结
本文详细介绍了Linux系统中文件备份与传输、软件管理、内核模块管理、文件所有权与权限以及访问和认证方法等方面的知识。通过对这些知识的掌握,可以更好地管理和维护Linux系统,确保系统的安全性和稳定性。在实际操作中,应根据具体需求选择合适的工具和方法,并遵循相应的操作步骤。
6. 工具选项对比表格
6.1 rsync工具选项对比
| 选项 | 功能 |
|---|---|
| -a | 递归备份目录树,保留所有文件元数据,等同于 -rlptgoD |
| -r | 仅允许递归操作,不保留元数据(如文件所有权) |
| -z | 使用zlib库进行压缩 |
| -e 和 –rsh | 指定将文件发送到远程系统时使用的远程程序 |
6.2 tar工具选项对比
| 选项 | 功能 |
|---|---|
| -zxvf | 解压缩和提取tarball文件中的文件 |
| -Uvh | 常用于rpm程序安装包,不适用于tar |
| -xvf | 从tarball中提取文件,但不进行解压缩 |
| -zcvf | 创建新的tarball并进行压缩 |
| -cvf | 创建新的tarball文件,但不提取现有文件 |
6.3 内核模块操作工具对比
| 工具 | 功能 |
|---|---|
| modinfo | 查看模块的详细信息,包括依赖项 |
| insmod | 动态加载模块 |
| lsmod | 显示当前加载的模块 |
| modprobe | 动态加载或卸载内核模块,并自动加载所需的依赖项 |
| depmod | 扫描系统,更新modules.dep文件 |
| rmmod | 快速卸载模块,但不卸载其依赖项 |
| modprobe -r | 卸载模块及其所有依赖项 |
7. 操作步骤总结
7.1 文件备份与传输操作步骤
-
使用rsync备份目录树
-
若要递归备份目录树并保留所有文件元数据,使用
rsync -a source destination命令。 -
若仅需递归操作,不保留元数据,使用
rsync -r source destination命令。 -
若要使用压缩功能,使用
rsync -z source destination命令。
-
若要递归备份目录树并保留所有文件元数据,使用
-
使用scp传输文件
-
从本地传输到远程:
scp local_file user@remote_host:remote_destination。 -
从远程传输到本地:
scp user@remote_host:remote_file local_destination。
-
从本地传输到远程:
-
在sftp中恢复上传操作
-
若上传操作中断,使用
reput local_file命令恢复上传。
-
若上传操作中断,使用
7.2 软件管理操作步骤
-
下载源码包
-
使用
wget url或curl -O url命令从网站下载源码包。
-
使用
-
编译和安装源码包
-
解压源码包:
tar -zxvf source.tar.gz。 -
进入解压后的目录:
cd source_directory。 -
运行
./configure命令评估系统并生成make脚本。 -
运行
make命令编译源码。 -
运行
make install命令安装应用程序。
-
解压源码包:
-
不同发行版包管理操作
-
Rocky Linux(Red Hat-based)
:使用
rpm -Uvh package.rpm或yum install package或dnf install package安装RPM包。 -
Debian-based系统
:使用
dpkg -i package.deb安装DEB包。
-
Rocky Linux(Red Hat-based)
:使用
7.3 内核模块管理操作步骤
-
加载内核模块
-
使用
modprobe module_name命令动态加载模块及其依赖项。 -
或使用
insmod /path/to/module.ko命令直接加载模块,但不加载依赖项。
-
使用
-
卸载内核模块
-
若模块无依赖项,使用
rmmod module_name命令卸载。 -
若要卸载模块及其依赖项,使用
modprobe -r module_name命令。
-
若模块无依赖项,使用
-
查看模块信息
-
使用
modinfo module_name命令查看模块详细信息。 -
使用
lsmod命令查看当前加载的模块。
-
使用
7.4 文件所有权与权限操作步骤
-
更改文件或目录的组分配
-
使用
chgrp group_name file_or_directory命令。
-
使用
-
更改文件或目录的所有者和组
-
使用
chown owner:group file_or_directory命令。
-
使用
-
更改文件或目录的权限
-
使用
chmod octal_permissions file_or_directory命令,如chmod 644 file。
-
使用
-
查看和更改ACL权限
-
使用
getfacl file_or_directory命令查看ACL权限。 -
使用
setfacl -m user:permission file_or_directory命令更改ACL权限。
-
使用
-
设置SELinux模式
-
使用
setenforce Permissive设置为宽容模式。 -
使用
setenforce Enforcing设置为强制模式。 -
使用
setenforce 0设置为禁用模式。
-
使用
7.5 访问和认证操作步骤
-
使用PAM相关操作
-
确保应用程序与
libpam库一起编译以使用PAM。 -
在
/etc/pam.d/配置文件中设置PAM控制标志。
-
确保应用程序与
-
查看登录失败记录
-
使用
pam_tally2或faillock命令查看失败的登录尝试。
-
使用
-
使用OpenSSH进行远程连接
-
生成密钥对:
ssh-keygen -t rsa。 -
将公钥复制到远程服务器:
ssh-copy-id user@remote_host。 -
连接远程服务器:
ssh user@remote_host。
-
生成密钥对:
8. 操作流程总结流程图
graph TD;
A[开始操作] --> B{选择操作类型};
B -- 文件备份与传输 --> C[选择工具(rsync/scp/sftp)];
C -- rsync --> D[选择选项(-a/-r/-z等)];
C -- scp --> E[确定传输方向(本地到远程/远程到本地)];
C -- sftp --> F[若中断使用reput恢复];
B -- 软件管理 --> G[下载源码包(wget/cURL)];
G --> H[解压源码包(tar -zxvf)];
H --> I[运行configure];
I --> J[运行make];
J --> K[运行make install];
B -- 内核模块管理 --> L{操作类型};
L -- 加载 --> M[使用modprobe或insmod];
L -- 卸载 --> N[使用rmmod或modprobe -r];
L -- 查看信息 --> O[使用modinfo或lsmod];
B -- 文件所有权与权限 --> P{操作类型};
P -- 更改组 --> Q[使用chgrp];
P -- 更改所有者和组 --> R[使用chown];
P -- 更改权限 --> S[使用chmod];
P -- 查看/更改ACL --> T[使用getfacl/setfacl];
P -- 设置SELinux模式 --> U[使用setenforce];
B -- 访问和认证 --> V{操作类型};
V -- PAM相关 --> W[确保与libpam编译并配置];
V -- 查看登录失败记录 --> X[使用pam_tally2/faillock];
V -- OpenSSH连接 --> Y[生成密钥对(ssh-keygen)];
Y --> Z[复制公钥(ssh-copy-id)];
Z --> AA[连接远程服务器(ssh)];
9. 安全注意事项
9.1 文件权限设置
-
合理设置文件和目录的权限,避免给予不必要的高权限。例如,对于普通用户的家目录,设置为
700权限可以防止其他用户访问。 - 谨慎使用特殊权限位(SUID、GUID、Sticky bit),确保其使用场景符合安全要求。
9.2 SELinux配置
- 根据系统的安全需求,选择合适的SELinux模式。在测试环境中可以使用宽容模式,在生产环境中建议使用强制模式。
- 定期检查SELinux的日志,及时发现和处理策略违规。
9.3 网络访问控制
-
使用TCP Wrappers时,合理配置
/etc/hosts.allow和/etc/hosts.deny文件,避免将ALL: ALL放在/etc/hosts.allow中。 -
对于OpenSSH,定期更新
~/.ssh/known_hosts文件,防止中间人攻击。
10. 总结与展望
本文全面介绍了Linux系统在文件备份与传输、软件管理、内核模块管理、文件所有权与权限以及访问和认证方法等方面的知识,通过详细的工具介绍、操作步骤说明、对比表格和流程图,帮助读者更好地理解和掌握这些知识。在实际应用中,读者可以根据具体需求灵活运用这些工具和方法,提高Linux系统的管理效率和安全性。
未来,随着Linux系统的不断发展和应用场景的不断拓展,相关的工具和技术也会不断更新和完善。例如,在软件管理方面,可能会出现更高效的包管理工具;在安全方面,SELinux等安全机制可能会提供更精细的策略控制。因此,持续学习和关注Linux系统的最新发展动态,对于系统管理员和开发者来说至关重要。
超级会员免费看
2880

被折叠的 条评论
为什么被折叠?



