28、Linux 文件系统特殊权限位与网络连接管理

Linux 文件系统特殊权限位与网络连接管理

1. Linux 文件系统特殊权限位

Linux 的目录树依据文件功能将文件放置在特定位置,了解这些文件的存放位置有助于定位它们。在探索 Linux 目录树时,会遇到一些需要特别关注的文件类型,这些特殊情况包括“粘滞位”、隐藏文件、获取目录长列表以及使用特殊执行权限。

1.1 使用粘滞位

在 Linux 中,目录是一种特殊类型的文件,它包含其他文件的名称和指向其底层数据结构的指针。因此,修改文件需要对该文件有写入权限,而创建或删除文件需要对其所在目录有写入权限。下面通过示例说明:

$ whoami
kirk
$ ls -l
total 0
drwxrwxrwx 2 root root 80 Dec 14 17:58 subdir
$ ls -l subdir/
total 2350
-rw-r----- 1 root root 2404268 Dec 14 17:59 f1701.tif
$ touch subdir/f1701.tif 
touch: cannot touch `subdir/f1701.tif': Permission denied
$ rm subdir/f1701.tif
$ ls -l subdir/
total 0

在这个例子中,用户 kirk subdir 目录有写入权限,但对 f1701.tif 文件没有写入权限,然而 kirk 仍然可以删除该文件。为了避免这种情况,可以使用粘滞位。粘滞位是一种特殊的文件系统标志,当在目录上设置粘滞位后,只有文件所有者或目录所有者才能删除该文件。

设置粘滞位有两种方法:
- 使用八进制代码 :在第 15 章描述的 3 位八进制代码前加上另一个数字,粘滞位的代码是 1,例如使用 1755 来设置粘滞位,使用 0755 来移除粘滞位。
- 使用符号代码 :通过 chmod o+t subdir 来设置 subdir 目录的粘滞位,使用 chmod o-t subdir 来移除粘滞位。

设置粘滞位后的效果如下:

$ ls -l
total 0
drwxrwxrwt 2 root root 80 Dec 14 18:25 subdir
$ ls -l subdir/
total 304
-rw-r--r-- 1 root root 2404268 Dec 14 18:25 f1701.tif
$ rm subdir/f1701.tif 
rm: cannot remove `subdir/f1701.tif': Operation not permitted

可以通过 ls -l 显示的符号模式中的小变化来识别设置了粘滞位的目录,世界执行位显示为 t 而不是 x 。粘滞位对于多用户共享的目录特别重要,例如 /tmp /var/tmp

1.2 使用特殊执行权限

通常,程序使用运行它的用户的权限运行,但有时程序需要以提升的权限运行。为此,存在两个特殊权限位,类似于前面描述的粘滞位:
- 设置用户 ID(SUID) :该选项告诉 Linux 以文件所有者的权限运行程序,而不是以运行该程序的用户的权限运行。例如,如果一个文件由 root 拥有并设置了 SUID 位,程序将以 root 权限运行。SUID 程序在权限字符串的所有者执行位位置显示为 s ,如 rwsr-xr-x
- 设置组 ID(SGID) :该选项将运行程序的组设置为文件的组。它在权限字符串的组执行位位置显示为 s ,如 rwxr-sr-x

设置这些位可以使用 chmod 命令:
- 使用八进制代码 :在 4 位八进制代码的首位,将值设置为 4 来设置 SUID 位,设置为 2 来设置 SGID 位,设置为 6 来同时设置两个位。例如,4755 设置可执行文件的 SUID 位,但不设置 SGID 位。
- 使用符号代码 :使用符号代码 s ,结合 u 来指定 SUID 位, g 来指定 SGID 位,或两者同时使用来设置两个位。例如, chmod u+s myprog 设置 myprog 的 SUID 位, chmod ug-s myprog 移除 myprog 的 SUID 位和 SGID 位。

在设置或移除这些位时要非常谨慎,因为错误的设置可能会导致安全问题。

1.3 隐藏文件

在 Linux 中,没有专门的文件系统特性来隐藏文件,而是使用文件命名约定:如果文件名以点(.)开头,大多数工具(如 ls )会隐藏这些文件和目录。例如, ls 会显示 afile.txt ,但不会显示 .afile.txt 。许多用户程序利用这一特性来避免配置文件使显示杂乱。

可以通过以下方式查看隐藏文件:
- 一些 GUI 工具可以在配置选项中设置复选框来强制显示这些文件。
- 在命令行中,可以使用 ls -a 选项,例如:

$ ls -l
total 0
drwxrwxrwt 2 root root 80 Dec 14 18:25 subdir
$ ls -la
total 305
drwxr-xr-x 3 kirk users    104 Dec 14 18:44 .
drwxr-xr-x 3 kirk users    528 Dec 14 18:21 ..
-rw-r--r-- 1 kirk users 309580 Dec 14 18:44 .f1701.tif
drwxrwxrwt 2 root root      80 Dec 14 18:25 subdir

需要注意的是,将文件重命名为以点开头会隐藏它,但这也会使任何使用原始文件名的程序无法访问该文件。

1.4 查看目录

ls 命令的 -d 选项在查看目录时很有用。如果在一个包含多个子目录的目录中使用通配符与 ls 匹配一个或多个子目录,默认输出会显示匹配子目录中的文件,而不是子目录本身的信息。例如:

$ ls -l subdir*
subdir1:
total 304
-rw-r--r-- 1 kirk users 309580 Dec 14 18:54 f1701.tif
subdir2:
total 84
-rw-r--r-- 1 kirk users 86016 Dec 14 18:54 106792c17.doc

如果想要子目录本身的信息,可以使用 -d 选项:

$ ls -ld subdir*
drwxr-xr-x 2 kirk users 80 Dec 14 18:54 subdir1
drwxr-xr-x 2 kirk users 80 Dec 14 18:54 subdir2
2. 网络连接管理

网络是现代计算的关键部分,大多数 Linux 发行版通常可以自动创建网络连接,但有时需要手动调整或调试问题。下面介绍一些基本的网络特性和网络配置过程。

2.1 理解网络特性

网络涉及众多复杂交互的协议和技术,以下是一些基本网络术语的解释:
| 术语 | 解释 |
| ---- | ---- |
| DNS | 域名系统(Domain Name System),是一个全球服务器网络,用于在主机名和 IP 地址之间进行转换。 |
| DHCP | 动态主机配置协议(Dynamic Host Configuration Protocol),大多数计算机通过它从网络中的另一台计算机(DHCP 服务器)获取配置信息。 |
| Ethernet | 以太网,是当今最常用的有线网络硬件,常见速度从 10 Mbps 到 1 Gbps。 |
| Hostname | 主机名,计算机为方便人类使用而使用的名称,由计算机部分和网络部分组成。 |
| Internet | 小写的 internet 指通过路由器连接的网络,大写的 Internet 指全球网络。 |
| IP address | 互联网协议(Internet Protocol)地址,分配给计算机用于网络寻址,过去主要使用 IPv4 地址,现在 IPv6 地址的使用越来越多。 |
| Network mask | 网络掩码,用于区分 IP 地址的网络部分和机器部分。 |

2.2 网络配置流程
graph LR
    A[开始] --> B[理解网络需求]
    B --> C{是否使用 DHCP}
    C -- 是 --> D[配置 DHCP 客户端]
    C -- 否 --> E[手动配置 IP 地址、子网掩码、网关等]
    D --> F[测试网络连接]
    E --> F
    F --> G{连接是否正常}
    G -- 是 --> H[完成配置]
    G -- 否 --> I[排查问题]
    I --> B
3. 总结

Linux 文件系统的特殊权限位和网络连接管理是 Linux 系统管理中的重要部分。特殊权限位(如粘滞位、SUID 和 SGID)可以增强文件系统的安全性和可控性,而了解网络特性和掌握网络配置方法可以确保计算机正常连接到网络。在实际操作中,需要根据具体情况合理使用这些特性和方法。

4. 建议练习
  • 检查 /etc 中的配置文件名称,并尝试在 /bin /sbin /usr/bin /usr/sbin 中找到匹配的程序文件。使用 less 或文本编辑器检查配置文件并阅读其手册页。
  • 在一个“临时”目录上试验粘滞位。使用常规账户和另一个常规账户或 root 账户,以不同方式设置临时目录的所有权和粘滞位,并测试是否可以删除和修改目录中的文件。
5. 复习问题
  1. 根据 FHS,在 /usr/lib 中可能会找到哪种类型的文件?
    A. Liberty files
    B. Liberated files
    C. Libra files
    D. Library files
    E. Liberal files
  2. 想要发现目录中几个点文件的大小,可以使用以下哪个命令?
    A. ls -la
    B. ls -p
    C. ls -R
    D. ls -d
    E. ls -ld
  3. 程序何时应配置为 SUID root?
    A. 始终;此权限是可执行程序必需的。
    B. 只要程序需要访问设备文件时。
    C. 仅当它们需要 root 权限才能完成工作时。
    D. 只要程序必须能够访问账户的用户 ID(UID)号时。
    E. 永远不要;此权限是严重的安全风险。
  4. 判断题:打印假脱机文件存储在 /var 的子目录中。
  5. 判断题:在配置正确的 Linux 系统上,任何用户都可以从 /tmp 删除任何文件。
  6. 判断题:如果在 Linux 中通过将文件变为点文件来隐藏它,若要使配置文件中对该文件的现有引用继续有效,必须更改这些引用。
  7. 通常,光盘和 USB 闪存驱动器挂载在 /mnt _ __ 的子目录中。
  8. 保证在重启期间不会被删除的临时文件存储在 _ __。
  9. 想要在不改变现有目录 subdir 其他权限的情况下设置其粘滞位,应输入 chmod ____ subdir

Linux 文件系统特殊权限位与网络连接管理

6. 详细探讨特殊权限位的应用场景
6.1 粘滞位的实际用途

粘滞位在多用户环境中具有重要的应用价值。除了前面提到的 /tmp /var/tmp 目录,在企业级的共享存储目录中,粘滞位也能发挥关键作用。例如,公司内部有一个共享的项目文档目录,多个部门的员工都可以访问和写入文件。如果没有设置粘滞位,某个员工可能会误删或恶意删除其他员工的文件。而设置了粘滞位后,只有文件的所有者或者目录的所有者才能删除文件,这样就保证了文件的安全性和完整性。

操作步骤如下:
1. 进入共享目录:

cd /path/to/shared/directory
  1. 设置粘滞位:
chmod 1777 .

这里使用八进制代码 1777 表示设置粘滞位,并且让所有用户都有读、写和执行权限。

6.2 SUID 和 SGID 的安全考量

虽然 SUID 和 SGID 可以让程序以提升的权限运行,但这也带来了一定的安全风险。如果一个设置了 SUID 或 SGID 位的程序存在漏洞,攻击者就可能利用这个漏洞以更高的权限执行恶意代码。因此,在设置这些权限位时,需要谨慎评估程序的安全性。

例如,对于一个自定义的脚本程序,在设置 SUID 位之前,需要确保脚本代码没有安全漏洞。同时,要定期对这些程序进行安全审计,检查是否有异常的权限使用情况。

操作步骤如下:
1. 检查程序是否需要提升权限:
- 分析程序的功能,确定是否真的需要以 root 或其他高权限用户的身份运行。
2. 设置 SUID 位:

chmod u+s /path/to/program
  1. 定期审计:
    • 使用工具如 auditd 来监控程序的运行情况,检查是否有异常的权限使用。
7. 网络连接管理的深入分析
7.1 DNS 配置的重要性

DNS 是网络中不可或缺的一部分,它负责将人类可读的主机名转换为计算机能够识别的 IP 地址。在 Linux 系统中,正确配置 DNS 服务器可以确保网络应用程序能够正常访问互联网。

配置 DNS 服务器通常有两种方式:
- 手动配置 :编辑 /etc/resolv.conf 文件,添加 DNS 服务器的 IP 地址。例如:

nameserver 8.8.8.8
nameserver 8.8.4.4

这里使用了 Google 的公共 DNS 服务器。
- 通过 DHCP 获取 :如果使用 DHCP 来配置网络,DHCP 服务器会自动分配 DNS 服务器的地址。

7.2 网络连接测试方法

在配置网络连接后,需要进行测试以确保连接正常。以下是一些常用的网络连接测试命令:
| 命令 | 功能 | 示例 |
| ---- | ---- | ---- |
| ping | 测试与目标主机的连通性 | ping www.example.com |
| traceroute | 跟踪数据包从本地到目标主机的路径 | traceroute www.example.com |
| nslookup | 查询 DNS 信息 | nslookup www.example.com |

操作步骤如下:
1. 测试与目标主机的连通性:

ping -c 4 www.example.com

这里的 -c 4 表示发送 4 个数据包。
2. 跟踪数据包路径:

traceroute www.example.com
  1. 查询 DNS 信息:
nslookup www.example.com
8. 应对网络安全威胁

网络安全是网络连接管理中不可忽视的一部分。在连接到网络时,计算机可能会面临各种安全威胁,如黑客攻击、病毒感染等。以下是一些常见的网络安全防护措施:
- 防火墙 :配置防火墙可以阻止未经授权的网络访问。在 Linux 系统中,常用的防火墙工具是 iptables firewalld
- 使用 firewalld 开放特定端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

这里开放了 TCP 协议的 80 端口,用于 HTTP 服务。
- 更新系统 :及时更新系统软件和安全补丁可以修复已知的安全漏洞,提高系统的安全性。

yum update  # 对于基于 RPM 的系统
apt-get update && apt-get upgrade  # 对于基于 Debian 的系统
  • 使用安全软件 :安装杀毒软件和入侵检测系统可以实时监控系统的安全状况,及时发现和处理安全威胁。
9. 总结与展望

Linux 文件系统的特殊权限位和网络连接管理是 Linux 系统管理中的重要组成部分。特殊权限位可以帮助我们更好地控制文件和目录的访问权限,提高系统的安全性和可控性。而网络连接管理则确保了计算机能够正常连接到网络,并且在网络环境中保持安全。

在未来的发展中,随着技术的不断进步,Linux 系统的安全性和网络性能将会得到进一步提升。同时,我们也需要不断学习和掌握新的技术和方法,以应对日益复杂的网络安全威胁。

10. 进一步学习建议
  • 深入学习 iptables firewalld 的配置,掌握更高级的防火墙策略。
  • 研究网络安全协议,如 SSL/TLS,了解如何在 Linux 系统中配置安全的网络连接。
  • 参与开源社区,与其他 Linux 爱好者交流经验,分享技术心得。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值