Linux复习-文件与目录

一、前言

Linux 作为一款开源、稳定且高效的操作系统,广泛应用于服务器、嵌入式设备等领域。而文件系统结构权限管理是 Linux 学习的核心基石,掌握这两部分内容,不仅能理解 Linux 系统的运行逻辑,还能保障系统的安全性与可维护性。本文将详细拆解 Linux 核心目录结构,以及文件 / 目录权限管理的常用命令与实操技巧,帮助大家快速上手。

二、Linux 文件系统核心目录结构

Linux 采用树形目录结构 ,以 /(根目录)为起点,所有文件和目录都归属于根目录。不同目录有明确的功能分工,遵循 FHS(Filesystem Hierarchy Standard,文件系统层次标准) 规范,以下是核心目录的详细解析:

1. /:根目录

  • 整个文件系统的起点,所有目录、文件的 "祖先"。
  • 包含系统所有核心目录,是 Linux 系统的 "根",权限仅 root 用户可修改。

2. /home:用户主目录

  • 存放普通用户的个人数据、配置文件、桌面文件等。
  • 每个普通用户对应一个子目录,命名为用户名(如 /home/zhangsan),用户登录后默认进入自己的主目录。
  • 示例:用户 lisi 的文档、下载文件、桌面图标均存放在 /home/lisi 下。

3. /etc:系统配置文件目录

  • 存放系统及服务的配置文件,是 Linux 系统的 "配置中心"。
  • 核心配置文件:
    • /etc/passwd:用户账户信息(不含密码);
    • /etc/shadow:用户密码(加密存储);
    • /etc/hosts:本地域名解析配置;
    • /etc/sudoers:sudo 权限配置;
    • /etc/nginx/nginx.conf:Nginx 服务配置(需安装 Nginx)。
  • 注意:修改该目录下的文件需谨慎,错误配置可能导致系统或服务无法启动。

4. /var:可变数据目录

  • 存放系统运行过程中动态变化的文件,如日志、缓存、临时数据等。
  • 核心子目录:
    • /var/log:系统日志(如 /var/log/messages 系统日志、/var/log/nginx/ Nginx 日志);
    • /var/cache:应用程序缓存(如 yum 缓存、浏览器缓存);
    • /var/spool:任务队列(如邮件队列、打印任务队列);
    • /var/tmp:临时文件(重启后可能保留,区别于 /tmp)。

5. 其他核心目录补充

  • /bin:存放系统核心命令 (如 lscprm),所有用户可执行;
  • /sbin:存放系统管理命令 (如 ifconfigreboot),仅 root 用户可执行;
  • /usr:存放用户安装的程序、库文件、文档 (如 /usr/bin 普通用户命令、/usr/local 手动安装软件);
  • /tmp临时文件目录,所有用户可读写,系统重启后自动清空;
  • /dev设备文件目录 (如 /dev/sda 硬盘、/dev/tty 终端),Linux 中 "一切皆文件",硬件设备以文件形式存在。

三、文件与目录权限管理

Linux 权限管理是系统安全的核心,通过权限位 控制用户对文件 / 目录的读、写、执行 操作,同时结合用户身份(所有者、所属组、其他用户)实现精细化权限控制。

1. 权限基础:权限位与身份

(1)权限类型

Linux 对文件 / 目录定义了 3 种核心权限,用字母和数字表示:

权限 字母 数字 作用(文件) 作用(目录)
r 4 查看文件内容 列出目录内文件
w 2 修改 / 删除文件 创建 / 删除 / 重命名目录内文件
执行 x 1 运行可执行文件 进入目录(cd 命令)
(2)用户身份

Linux 将用户分为 3 类,对应权限位的 3 组:

  • 所有者(u):文件 / 目录的创建者,拥有最高权限;
  • 所属组(g):文件 / 目录归属的用户组,组内成员共享该组权限;
  • 其他用户(o):除所有者、所属组外的所有用户。
(3)权限表示

权限位共 10 位,格式为:[文件类型][所有者权限][所属组权限][其他用户权限]

  • 第 1 位:文件类型(- 普通文件、d 目录、l 软链接、c 字符设备、b 块设备);
  • 后 9 位:3 组权限(每组 3 位,对应 r/w/x)。

示例-rwxr-xr--

  • 第 1 位 -:普通文件;
  • 所有者权限 rwx:读、写、执行;
  • 所属组权限 r-x:读、执行,无写权限;
  • 其他用户权限 r--:仅读权限。
  • 数字表示:754(所有者 7=4+2+1,所属组 5=4+1,其他 4=4)。

2. 核心权限命令

(1)chmod:修改文件 / 目录权限
  • 语法chmod [选项] 权限 文件/目录

  • 常用选项

    • -R:递归修改(对目录下所有子文件 / 子目录生效);
    • u/g/o/a:分别表示所有者 / 所属组 / 其他用户 / 所有用户;
    • +/-/=:增加 / 删除 / 设置权限。
  • 实操示例

    1. 给文件 test.txt 所有者添加执行权限:

      bash

      运行

      复制代码
      chmod u+x test.txt
    2. 给目录 data 及其子文件 / 子目录,设置所有者读 / 写 / 执行、所属组读 / 执行、其他用户无权限(数字法):

      bash

      运行

      复制代码
      chmod -R 750 data
    3. 移除文件 script.sh 其他用户的所有权限:

      bash

      运行

      复制代码
      chmod o-rwx script.sh
(2)chown:修改文件 / 目录的所有者 / 所属组
  • 语法chown [选项] 所有者:所属组 文件/目录

  • 常用选项-R:递归修改。

  • 实操示例

    1. 将文件 app.log 的所有者改为 root,所属组改为 admin

      bash

      运行

      复制代码
      chown root:admin app.log
    2. 将目录 /var/www 及其子内容的所有者改为 www-data(Web 服务常用用户):

      bash

      运行

      复制代码
      chown -R www-data /var/www
    3. 仅修改文件 data.txt 的所属组为 dev

      bash

      运行

      复制代码
      chown :dev data.txt
(3)sudo:以 root 权限执行命令
  • 作用:普通用户临时获取 root 权限执行命令,避免直接登录 root 账户(提升安全性)。

  • 语法sudo 命令

  • 前提 :用户需在 /etc/sudoers 文件中配置权限(默认 root 用户和 wheel 组用户可使用)。

  • 实操示例

    1. 普通用户安装软件(需 root 权限):

      bash 复制代码
      sudo yum install nginx  # CentOS/RHEL 系统
      sudo apt install nginx  # Ubuntu/Debian 系统
    2. 编辑系统配置文件 /etc/hosts(普通用户无写权限):

      bash 复制代码
      sudo vim /etc/hosts
    3. 重启系统服务(如 Nginx):

      bash 复制代码
      sudo systemctl restart nginx

3. 权限管理实操场景

场景 1:创建共享目录,允许组内成员读写,其他用户无权限
  1. 创建共享目录 /share

    bash 复制代码
    mkdir /share
  2. 创建用户组 share_group

    bash 复制代码
    groupadd share_group
  3. 将用户 user1user2 加入 share_group

    bash 复制代码
    usermod -aG share_group user1
    usermod -aG share_group user2
  4. 修改 /share 所有者为 root,所属组为 share_group,并设置权限:

    bash 复制代码
    chown root:share_group /share
    chmod 770 /share  # 所有者读/写/执行,组内读/写/执行,其他无权限
  5. 验证:user1 可在 /share 内创建文件,user2 可读写该文件,其他用户无法访问。

场景 2:普通用户执行 root 专属命令(如重启网络)
  1. 普通用户直接执行 systemctl restart network 会提示权限不足:

    bash 复制代码
    systemctl restart network  # 报错:Permission denied
  2. 使用 sudo 临时提权执行:

    bash 复制代码
    sudo systemctl restart network
  3. 输入当前用户密码(需在 /etc/sudoers 中配置权限),即可成功重启网络。

相关推荐
cooldream20096 小时前
Vim 报错 E325:swap 文件冲突的原理、处理流程与彻底避免方案
linux·编辑器·vim
i建模6 小时前
在 Rocky Linux 上安装轻量级的 XFCE 桌面
linux·运维·服务器
Data_Journal6 小时前
Scrapy vs. Crawlee —— 哪个更好?!
运维·人工智能·爬虫·媒体·社媒营销
若风的雨6 小时前
WC (Write-Combining) 内存类型优化原理
linux
YMWM_6 小时前
不同局域网下登录ubuntu主机
linux·运维·ubuntu
zmjjdank1ng6 小时前
restart与reload的区别
linux·运维
哼?~6 小时前
进程替换与自主Shell
linux
Suchadar6 小时前
Docker常用命令
运维·docker·容器
FIT2CLOUD飞致云6 小时前
赛道第一!1Panel成功入选Gitee 2025年度开源项目
服务器·ai·开源·1panel
你才是臭弟弟7 小时前
MinIo开发环境配置方案(Docker版本)
运维·docker·容器