首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ubuntu Server 权限管理:从基础到高级的深度探索

Ubuntu Server 权限管理:从基础到高级的深度探索

原创
作者头像
徐关山
发布2025-09-14 11:30:16
发布2025-09-14 11:30:16
1270
举报

摘要

权限管理是任何多用户操作系统,尤其是服务器系统的核心与基石。Ubuntu Server 作为全球最流行的 Linux 服务器发行版之一,其强大、灵活且精细的权限控制系统是保障系统安全、稳定和数据保密性的关键。本文旨在对 Ubuntu Server 的权限管理体系进行一次全面、深入的剖析。我们将从最基础的 Linux 权限模型(用户、组、文件权限位)出发,逐步深入到高级主题,如访问控制列表(ACL)、特权管理(SUDO)、安全增强型 Linux(SELinux 和 AppArmor)、特权分离最佳实践,以及利用自动化工具(如 Ansible)进行大规模的权限配置管理。文章将包含大量实际命令、配置示例、安全考量和工作流,旨在为系统管理员、DevOps 工程师和安全专业人员提供一份详尽的参考指南。


第一章:引言:为何权限管理至关重要

在单用户桌面系统中,用户通常以管理员身份运行,权限问题往往被忽视。然而,在服务器环境中,情况截然不同。

  1. 安全第一原则:服务器承载着关键业务和数据,暴露在网络中,是潜在的攻击目标。遵循“最小权限原则”(Principle of Least Privilege)是防御纵深策略的核心。这意味着任何用户或进程只应拥有其执行任务所必需的最低权限,不多不少。有效的权限管理可以极大地限制漏洞利用、恶意软件传播或误操作可能造成的损害范围。
  2. 多用户环境:服务器通常需要被多个用户访问,例如开发者、运维人员、数据库管理员等。必须确保用户只能访问其授权访问的文件和目录,防止数据泄露或篡改。
  3. 进程隔离:服务器上运行着众多服务(如 Web 服务器、数据库等)。这些服务应以非特权用户身份运行,彼此隔离。即使某个服务被攻破,攻击者也难以横向移动至系统其他部分或其他服务。
  4. 审计与合规:清晰的权限设置是审计跟踪的基础。知道“谁”在“何时”对“何物”进行了“何种操作”对于安全事件调查和满足行业合规性要求(如 GDPR, HIPAA, PCI DSS)至关重要。

Ubuntu Server 继承并发展了 Linux 的权限管理哲学,提供了一套从简单到复杂的完整工具链,本文将逐一解密。


第二章:基础基石:用户、组和文件权限位

这是 Linux 权限管理的传统模型,也称为 Discretionary Access Control (DAC)——自主访问控制。

2.1 用户(Users)

  • 核心概念:每个用户都有一个唯一的用户名和用户ID(UID)。UID 0 保留给超级用户 root。
  • 用户分类
    • Root 用户:系统超级管理员,拥有无上的权限,可绕过所有权限检查。应避免直接使用。
    • 系统用户:用于运行系统服务或守护进程,通常没有登录 shell(如 /usr/sbin/nologin),UID 通常在 1000 以下(/etc/login.defsUID_MIN 定义)。
    • 普通用户:人类用户,用于交互式登录,UID 通常从 1000 开始。
  • 相关文件
    • /etc/passwd:存储用户账户信息(用户名、密码占位符‘x’、UID、GID、描述、家目录、登录 shell)。
    • /etc/shadow:存储加密后的用户密码及密码策略信息(仅 root 可读)。

2.2 组(Groups)

  • 核心概念:组是用户的集合,用于简化权限管理。每个用户都有一个主组(Primary Group),同时可以属于多个附加组(Supplementary Groups)。
  • 组分类
    • 用户主组:在 /etc/passwd 中指定,通常与用户名相同。
    • 系统组:为系统服务创建。
    • 普通组:为权限管理目的而创建,例如 www-data, developers, admins
  • 相关文件
    • /etc/group:存储组信息(组名、密码占位符‘x’、GID、组成员列表)。
    • /etc/gshadow:存储组密码(较少使用)。

2.3 用户和组管理命令

  • 创建用户sudo adduser <username> (交互式) 或 sudo useradd -m -s /bin/bash <username> (非交互式)。
    • -m:创建家目录。
    • -s:指定登录 shell。
  • 删除用户sudo deluser --remove-home <username>
  • 修改用户sudo usermod。例如,将用户加入附加组: sudo usermod -aG <groupname> <username> (-aG 表示追加到附加组,非常重要,避免覆盖原有附加组)。
  • 创建组sudo addgroup <groupname>
  • 删除组sudo delgroup <groupname>
  • 查看用户信息id <username> 显示 UID, GID 和所属组。
  • 切换用户su - <username> (- 代表模拟登录,加载目标用户的环境变量)。

2.4 文件权限位(Permission Bits)

使用 ls -l 命令查看文件或目录的详细信息时,会看到如下输出:

代码语言:bash
复制
-rwxr-xr-- 1 alice developers 2048 Jun 12 10:30 script.sh
drwxr-x--- 2 bob www-data  4096 Jun 12 09:15 web_dir/

第一列(如 -rwxr-xr--)就是权限字符串。

  • 结构分解(10个字符):
    1. 第1位:文件类型(- 普通文件, d 目录, l 符号链接,等)。
    2. 第2-4位:所有者权限(user)。
    3. 第5-7位:所属组权限(group)。
    4. 第8-10位:其他用户权限(others)。
  • 权限字符
    • r (read):对于文件,可读取内容;对于目录,可列出内容(如 ls)。
    • w (write):对于文件,可修改内容;对于目录,可创建、删除、重命名目录内文件(注意:删除文件取决于对目录的写权限,而非文件本身的权限)。
    • x (execute):对于文件,可作为程序/脚本执行;对于目录,可“进入”该目录(如 cd),并访问目录内的元信息。
  • 八进制表示法:为了方便,权限常用3位八进制数字表示。
    • r = 4
    • w = 2
    • x = 1 将所需权限的数字相加即可。例如:
    • rwx = 4+2+1 = 7
    • rw- = 4+2+0 = 6
    • r-x = 4+0+1 = 5
    • r-- = 4+0+0 = 4
    • --- = 0 因此,rwxr-xr-- 表示为 754

2.5 特殊权限位

除了基本的 rwx,还有三个特殊权限位:

  • SetUID (Set User ID):作用于可执行文件。当用户执行该文件时,进程的有效用户ID(EUID)将设置为文件所有者的UID,而不是当前用户的UID。典型例子:/usr/bin/passwd
    • 符号表示:在所有者的执行位上是 s(如果原来有 x)或 S(如果原来无 x)。
    • 八进制表示:在权限数字前加4,如 4755
  • SetGID (Set Group ID)
    • 作用于可执行文件:类似 SetUID,进程的有效组ID(EGID)设置为文件的所属组。
    • 作用于目录:在该目录下创建的新文件或子目录,其所属组将继承该目录的所属组,而不是创建者的主组。这对于协作目录极其有用。
    • 符号表示:在所属组的执行位上是 sS
    • 八进制表示:在权限数字前加2,如 2770
  • Sticky Bit:作用于目录。在具有写权限的目录中设置粘滞位后,只有文件的所有者目录的所有者root 用户才能删除或重命名该目录下的文件。典型例子: /tmp 目录。
    • 符号表示:在其他用户的执行位上是 tT
    • 八进制表示:在权限数字前加1,如 1777

2.6 权限管理命令

  • 更改所有者sudo chown <owner>[:<group>] <file>
    • 例如: sudo chown alice file.txtsudo chown alice:developers file.txt
  • 更改所属组sudo chgrp <group> <file>sudo chown :<group> <file>
  • 更改权限sudo chmod <mode> <file>
    • 符号模式: u(user), g(group), o(others), a(all), +(添加), -(移除), =(设置)。
      • 例如: chmod u+x script.shchmod go-w file.txtchmod a=r file.txt
    • 八进制模式: chmod 755 script.sh

2.7 默认权限与 umask

新创建的文件和目录不会拥有全权限(777),其权限由默认权限减去 umask 值决定。

  • 默认权限:目录为 777 (drwxrwxrwx),文件为 666 (-rw-rw-rw-)(文件默认无执行权限)。
  • umask:一个位掩码,指定要禁止的权限。通常用户默认 umask 为 022
  • 计算最终权限
    • 目录: 777 - umask -> 777 - 022 = 755 (drwxr-xr-x)。
    • 文件: 666 - umask -> 666 - 022 = 644 (-rw-r--r--)。
  • 查看和设置 umask
    • 查看: umask
    • 设置(临时): umask 027
    • 设置(永久):在 ~/.bashrc~/.profile/etc/profile 中配置。

第三章:超越基础:访问控制列表(ACLs)

传统的权限位模型虽然简单,但不够灵活。它只能定义三类权限:所有者、组和其他。如果一个文件需要为多个用户或组设置不同的权限,传统模型就无能为力了。访问控制列表(ACL) 解决了这个痛点。

3.1 ACL 概述

ACL 允许为单个文件或目录设置更精细的、针对特定用户和组的权限列表。它可以看作是传统权限位的超集。

3.2 启用 ACL 支持

在 Ubuntu Server 上,ACL 通常默认已启用,但文件系统必须在挂载时启用 acl 选项。检查 /etc/fstab

代码语言:txt
复制
UUID=... /data           ext4    defaults,acl        0       2
# 或者对于较新的内核和文件系统(如 ext4, xfs),'acl' 可能已是默认选项,无需显式指定。

3.3 ACL 管理命令

  • 设置 ACLsetfacl
    • -m (modify):修改 ACL 条目。
    • -x (remove):移除 ACL 条目。
    • -b (remove all):移除所有扩展 ACL 条目。
    • 例如:
      • setfacl -m u:charlie:rwx /shared/data (为用户 charlie 添加 rwx 权限)
      • setfacl -m g:project:r-x /shared/docs (为组 project 添加 r-x 权限)
      • setfacl -x u:charlie /shared/data (移除用户 charlie 的 ACL 条目)
  • 查看 ACLgetfacl
    • 例如: getfacl /shared/data
    • 输出示例:# file: shared/data # owner: alice # group: developers user::rwx user:charlie:rwx group::r-x group:project:r-x mask::rwx other::---
    • getfacl 也会显示传统的权限位信息。

3.4 ACL 条目类型

  • 访问ACL:直接附加在文件或对象上的ACL。
  • 默认ACL(仅适用于目录):设置在目录上的默认ACL,其下新创建的文件和目录会自动继承这些ACL规则。
    • 设置命令: setfacl -d -m u:charlie:rwx /shared/dir (-d 表示 default)。

3.5 Mask 权限

ACL 中存在一个 mask 条目。它并不指定权限给任何特定用户或组,而是作为一个有效权限掩码。任何命名用户、命名组和所属组的最大有效权限都不会超过 mask 的权限。当使用 chmod 更改传统组权限时,mask 也会被自动调整以匹配。


第四章:特权操作与 sudo

“最小权限原则”要求我们避免直接使用 root 账户。sudo (Superuser DO) 是允许受信任的用户以另一个用户(通常是 root)的身份执行命令的标准机制。

4.1 sudo 基础

  • 工作原理:用户执行 sudo <command> 时,系统会检查 /etc/sudoers 文件以及 /etc/sudoers.d/ 目录下的配置,判断该用户是否有权以 root 身份运行该命令。如果授权成功,系统会提示输入该用户自己的密码(可配置为不输入),然后以 root 权限执行命令。
  • 与 su 的区别su (switch user) 要求输入目标用户的密码(如 root 密码),而 sudo 要求输入当前用户的密码。sudo 提供了更细粒度的控制和更清晰的审计日志(记录了哪个普通用户执行了特权命令)。

4.2 配置 sudo:/etc/sudoers

警告:永远不要直接用普通文本编辑器(如 vimnano)直接编辑 /etc/sudoers 文件。语法错误可能导致所有用户都无法获得 sudo 权限,系统无法维护。必须使用 visudo 命令! visudo 会在保存时检查语法有效性。

4.2.1 sudoers 语法基础

基本语法结构:

代码语言:txt
复制
<user/group>      <hostlist>=(<runas_user>:<runas_group>)      <tag_spec>: <command_list>
  • 用户/组:可以是用户名(alice)、组名(%developers,注意 %)、别名(User_Alias)。
  • 主机列表:通常为 ALL,表示所有主机。在多主机环境中可以指定特定主机名。
  • Runas:指定可以以哪个用户的身份运行命令。(ALL:ALL) 表示可以以任何用户和任何组的身份运行。
  • 标签:如 NOPASSWD(执行命令时不需输入密码)、PASSWD(需要密码,默认)、SETENV(允许设置环境变量)等。
  • 命令列表:允许执行的命令的完整路径(如 /usr/bin/apt),可以使用通配符,也可以使用别名(Cmnd_Alias)。
4.2.2 常用配置示例
  1. 授予用户完整 root 权限:alice ALL=(ALL:ALL) ALL
  2. 授予用户完整权限且无需密码(谨慎使用):bob ALL=(ALL:ALL) NOPASSWD:ALL
  3. 授予组权限% 表示组):%sysadmins ALL=(ALL:ALL) ALL
  4. 限制用户只能执行特定命令:charlie ALL=(root) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx # charlie 只能重启和查看 nginx 状态,不能执行其他操作。
  5. 允许管理特定软件(使用 Cmnd_Alias):Cmnd_Alias SOFTWARE = /usr/bin/apt, /usr/bin/dpkg, /usr/bin/snap david ALL=(root) SOFTWARE
  6. 允许以特定非root用户身份运行命令:eve ALL=(www-data) /usr/bin/vim /var/www/html/config.ini # eve 可以以 www-data 用户的身份编辑这个特定配置文件。

4.3 灵活的包含配置:/etc/sudoers.d/

最佳实践是避免直接修改 /etc/sudoers,而是在 /etc/sudoers.d/ 目录下创建独立的配置文件。/etc/sudoers 文件最后有一行 #includedir /etc/sudoers.d,它会包含该目录下所有不以 ~ 结尾且不含 . 的文件。

例如,为每个角色或项目创建单独的文件:

代码语言:bash
复制
sudo visudo -f /etc/sudoers.d/developers
sudo visudo -f /etc/sudoers.d/nginx-admins

这样管理起来更加清晰,也便于通过配置管理工具(如 Ansible)进行自动化部署。

4.4 sudo 日志与审计

sudo 提供了强大的日志功能,所有通过 sudo 执行的命令都会被记录到 auth.log(通常位于 /var/log/auth.log)。每条记录包括:

  • 时间戳
  • 发起命令的用户
  • 用户所在的终端
  • 以哪个用户的身份运行
  • 执行的命令

这对于安全审计至关重要。可以使用工具如 journalctlgrep 来查看相关日志:

代码语言:bash
复制
sudo grep sudo /var/log/auth.log

第五章:高级强制访问控制:SELinux 与 AppArmor

DAC(自主访问控制)模型有一个根本弱点:如果用户对其拥有的文件权限设置不当,攻击者或恶意软件就可能利用它。强制访问控制(MAC) 系统通过由管理员定义的、不可被用户覆盖的系统级安全策略来弥补这一缺陷。

Ubuntu Server 的默认 MAC 系统是 AppArmor。另一种常见的系统是 SELinux(常见于 RHEL/CentOS/Fedora)。

5.1 AppArmor

5.1.1 AppArmor 概述

AppArmor 是一种基于路径的 MAC 系统。它的安全策略(称为“Profile”)为特定应用程序定义了其可以访问的文件、网络端口、能力等资源。

5.1.2 AppArmor 状态管理
  • 检查状态sudo apparmor_status
  • 卸载所有配置sudo systemctl stop apparmor (不推荐,仅用于调试)
  • 重新加载所有配置sudo systemctl reload apparmor
  • 加载/卸载特定配置sudo apparmor_parser -r /etc/apparmor.d/<profile_name> (reload), sudo apparmor_parser -R /etc/apparmor.d/<profile_name> (remove)。
5.1.3 AppArmor 配置文件

配置文件位于 /etc/apparmor.d/。文件名通常与二进制路径相关,例如 /usr/sbin/nginx 的配置文件可能是 usr.sbin.nginx

配置文件语法示例(一个简化的 Nginx Profile):

代码语言:bash
复制
#include <tunables/global>

/usr/sbin/nginx {
  #include <abstractions/apache2-common> # 包含一些通用规则
  #include <abstractions/base>
  #include <abstractions/nis>

  capability net_bind_service,
  capability setgid,
  capability setuid,

  /etc/nginx/** r,
  /usr/sbin/nginx mr,
  /var/log/nginx/** rw,
  /var/www/html/** r,

  # 网络
  network inet tcp,
  network inet udp,
  network inet6 tcp,
  network inet6 udp,
}
  • r:读
  • w:写
  • x:执行
  • m:在内存中映射可执行文件
  • k:文件锁定
5.1.4 操作模式
  • enforce 模式:策略生效,违规行为将被阻止并记录。
  • complain 模式:策略不生效,但违规行为会被记录到日志(/var/log/syslog/var/log/kern.log)。这对于调试和生成新策略非常有用。

设置模式:

  • 全局设置:修改 /etc/apparmor.d/force-complain 或使用 aa-complain
  • 为特定配置设置: sudo aa-complain /usr/sbin/nginx
  • 切回 enforce 模式: sudo aa-enforce /usr/sbin/nginx
5.1.5 日志分析

AppArmor 的拒绝信息会记录在系统日志中。使用 dmesgjournalctl 查看:

代码语言:bash
复制
sudo dmesg | grep apparmor
sudo journalctl -f -u apparmor --since today | grep DENIED

这些日志对于排除应用程序因被 AppArmor 限制而无法正常工作的问题至关重要。

5.2 SELinux (简要对比)

虽然 Ubuntu 默认使用 AppArmor,但了解 SELinux 也很有价值,特别是在混合环境中。

  • 与 AppArmor 的区别:SELinux 是基于标签(Label)的系统。每个进程、文件、目录、端口都有一个安全上下文(Security Context)。策略规则基于这些上下文标签来决定访问是否被允许,而不是基于路径。
  • 在 Ubuntu 上安装 SELinuxsudo apt install selinux-basics selinux-policy-default auditd
  • 基本命令
    • sestatus:查看状态。
    • getenforce:查看当前模式(Enforcing, Permissive, Disabled)。
    • setenforce 0|1:临时切换模式(0=Permissive, 1=Enforcing)。
    • chcon:更改文件的安全上下文。
    • restorecon:将文件的安全上下文恢复为默认值。
    • audit2whyaudit2allow:分析审计日志并生成策略模块。

由于 Ubuntu 生态对 AppArmor 的支持更好,除非有特殊需求,否则建议坚持使用 AppArmor。


第六章:实践中的权限管理与安全 hardening

理论需要结合实践。本章介绍一些服务器权限管理和安全加固的最佳实践。

6.1 服务账户与特权分离

  • 永远不要以 root 身份运行服务:为每个服务创建专用的、无登录权限的系统用户和组。
    • 例如,为 Nginx: sudo adduser --system --no-create-home --group nginx 或使用已有的 www-data 用户。
  • 使用系统内置用户:许多软件包在安装时会自动创建相应的系统用户(如 postgres, redis, mysql)。
  • 文件所有权:确保服务配置文件、数据文件和日志文件的所有权和权限正确。
    • 例如:Web 根目录 /var/www/html 应属于 www-data 用户,且权限为 755(目录)和 644(文件)。

6.2 敏感文件权限

  • /etc/shadow:应仅为 root 可读 (400600)。
  • SSH 私钥 (~/.ssh/id_rsa):应为用户本人可读可写,其他用户无任何权限 (600)。
  • SSH 公钥和已知主机文件 (~/.ssh/id_rsa.pub, ~/.ssh/known_hosts):通常为 644
  • 用户家目录:权限应为 700 (drwx------) 或 755,防止其他用户随意浏览。

6.3 SUDO 安全实践

  • 限制 sudo 权限:按需分配,而不是简单地授予 ALL
  • 使用组管理:将需要 sudo 权限的用户加入 sudo 组或其他自定义管理组,而不是单独配置每个用户。
  • 避免 NOPASSWD:除非用于自动化脚本且在非常受控的环境中,否则应要求输入密码。
  • 定期审计:定期检查 /etc/sudoers/etc/sudoers.d/ 中的配置,移除不再需要的权限。

6.4 使用 ACL 进行协作

对于需要多人协作的目录,结合 SetGID 和 ACL 是一个强大的组合:

代码语言:bash
复制
# 1. 创建协作组和目录
sudo addgroup project-team
sudo mkdir /srv/project-x
# 2. 设置目录所有者和组,并设置 SetGID
sudo chown root:project-team /srv/project-x
sudo chmod 2770 /srv/project-x # rwxrws--- (SetGID 已设置)
# 3. 为团队成员设置 ACL 以确保他们有权限
sudo setfacl -m g:project-team:rwx /srv/project-x
# 4. 将用户加入组
sudo usermod -aG project-team alice
sudo usermod -aG project-team bob

现在,alicebob 都可以在 /srv/project-x 中创建、修改和删除文件,并且这些文件会自动属于 project-team 组,方便其他组成员操作。

6.5 监控与审计

  • 日志监控:集中监控和分析 /var/log/auth.logsudo 日志,以及 AppArmor/SELinux 的拒绝日志。
  • 文件完整性监控:使用工具如 aidetripwire 建立文件系统基线,并定期检查关键系统文件(如 /bin, /sbin, /usr/bin, /etc, /etc/shadow)是否被篡改。
  • 审计守护进程(auditd):Linux 内核的 auditd 框架可以记录非常细粒度的事件,如特定的系统调用、文件访问、用户命令等。虽然配置复杂,但对于高安全环境是必不可少的。

第七章:自动化配置管理:Ansible 与权限

在管理大量服务器时,手动配置权限是不现实的。使用配置管理工具如 Ansible 可以自动化、标准化和文档化权限管理任务。

7.1 Ansible 基础模块

Ansible 提供了丰富的模块来处理权限管理:

  • 用户管理user 模块- name: Create a system user for Nginx user: name: nginx system: yes shell: /usr/sbin/nologin state: present create_home: no
  • 组管理group 模块- name: Ensure the developers group exists group: name: developers state: present
  • 文件/目录权限file 模块- name: Set permissions on web directory file: path: /var/www/html owner: www-data group: www-data mode: '0755' state: directory
  • ACL 管理acl 模块- name: Grant ACL permissions to a user on a directory acl: path: /srv/shared entity: charlie etype: user permissions: rwx state: present
  • sudoers 配置lineinfile 模块或专门的 sudo 角色- name: Allow developers group to sudo lineinfile: path: /etc/sudoers.d/developers line: '%developers ALL=(ALL:ALL) ALL' validate: 'visudo -cf %s' state: present create: yes mode: '0440'注意:使用 validate 参数至关重要,它会在保存前用 visudo 检查语法。

7.2 编写可维护的 Ansible Playbook

将权限管理任务组织成清晰的角色(Roles)和任务列表(Tasks)。例如,可以有一个 base-secure 角色来执行通用的安全加固,一个 nginx 角色来配置 Nginx 及其相关用户和权限。


第八章:故障排除与常见问题

  1. “Permission denied”
    • 检查顺序
      1. 当前用户是谁? (whoami)
      2. 目标文件/目录的权限是什么? (ls -l)
      3. 用户是否在拥有所需权限的组里? (groups, id)
      4. 是否存在 ACL? (getfacl)
      5. AppArmor/SELinux 是否阻止了访问? (dmesg | tail, apparmor_status, sudo aa-complain 后重试)
  2. sudo: unable to resolve host ...
    • 这是一个警告,通常由主机名配置错误引起,不影响 sudo 功能,但应修复 /etc/hosts 文件。
  3. 服务启动失败
    • 检查服务配置中指定的运行用户是否正确。
    • 检查服务需要访问的文件和目录的权限对该用户是否足够。
    • 检查 AppArmor/SELinux 日志。
  4. SetGID 目录不继承组
    • 确保该目录确实设置了 SetGID 位 (ls -ld 显示 drwxrws...)。
    • 确保用户对该目录有写权限。
    • 确保用户在创建文件时使用的umask不会过于严格(如 002007 对于协作目录更合适)。

第九章:总结

Ubuntu Server 的权限管理系统是一个多层次、纵深防御的强大体系。从基础的用户/组和权限位,到灵活的 ACL,再到受控的特权提升工具 sudo,最后到强制的访问控制框架 AppArmor,每一层都为实现“最小权限原则”提供了关键工具。

一名优秀的系统管理员必须深刻理解这些概念和工具,并能够根据实际业务需求,灵活、恰当地组合运用它们。始终牢记安全是一个过程,而不是一个状态。定期审计、监控日志、及时更新策略,并利用自动化工具确保配置的一致性和可重复性,是维护一个安全、稳定、高效的 Ubuntu Server 环境的不二法门。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 第一章:引言:为何权限管理至关重要
  • 第二章:基础基石:用户、组和文件权限位
    • 2.1 用户(Users)
    • 2.2 组(Groups)
    • 2.3 用户和组管理命令
    • 2.4 文件权限位(Permission Bits)
    • 2.5 特殊权限位
    • 2.6 权限管理命令
    • 2.7 默认权限与 umask
  • 第三章:超越基础:访问控制列表(ACLs)
    • 3.1 ACL 概述
    • 3.2 启用 ACL 支持
    • 3.3 ACL 管理命令
    • 3.4 ACL 条目类型
    • 3.5 Mask 权限
  • 第四章:特权操作与 sudo
    • 4.1 sudo 基础
    • 4.2 配置 sudo:/etc/sudoers
      • 4.2.1 sudoers 语法基础
      • 4.2.2 常用配置示例
    • 4.3 灵活的包含配置:/etc/sudoers.d/
    • 4.4 sudo 日志与审计
  • 第五章:高级强制访问控制:SELinux 与 AppArmor
    • 5.1 AppArmor
      • 5.1.1 AppArmor 概述
      • 5.1.2 AppArmor 状态管理
      • 5.1.3 AppArmor 配置文件
      • 5.1.4 操作模式
      • 5.1.5 日志分析
    • 5.2 SELinux (简要对比)
  • 第六章:实践中的权限管理与安全 hardening
    • 6.1 服务账户与特权分离
    • 6.2 敏感文件权限
    • 6.3 SUDO 安全实践
    • 6.4 使用 ACL 进行协作
    • 6.5 监控与审计
  • 第七章:自动化配置管理:Ansible 与权限
    • 7.1 Ansible 基础模块
    • 7.2 编写可维护的 Ansible Playbook
  • 第八章:故障排除与常见问题
  • 第九章:总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档