插件窝 干货文章 shell 运行原理和Linux权限详解

shell 运行原理和Linux权限详解

权限 Shell 文件 命令 655    来源:    2025-05-13

Shell 运行原理与 Linux 权限详解

Shell 运行原理

什么是 Shell

Shell 是 Linux/Unix 系统的命令行解释器,它是用户与操作系统内核之间的接口。当用户输入命令时,Shell 负责解释这些命令并将其转换为内核能够理解的指令。

Shell 的工作流程

  1. 读取输入:从标准输入或脚本文件读取命令
  2. 解析命令:将输入的命令分解为命令名和参数
  3. 查找命令:在 PATH 环境变量指定的目录中查找可执行文件
  4. 执行命令
    • 如果是内置命令,直接执行
    • 如果是外部命令,通过 fork() 创建子进程,然后 exec() 执行
  5. 等待完成:如果是前台命令,等待命令执行完成
  6. 返回结果:将命令执行结果返回给用户

Shell 的类型

  • Bourne Shell (sh): 最早的 Unix shell
  • Bash (Bourne Again Shell): Linux 默认 shell,功能最丰富
  • C Shell (csh): 语法类似 C 语言
  • Korn Shell (ksh): 结合了 Bourne Shell 和 C Shell 的特性
  • Z Shell (zsh): 强大的交互式 shell

Linux 权限系统

文件权限基础

Linux 中每个文件和目录都有三组权限: 1. 所有者权限 (User) 2. 所属组权限 (Group) 3. 其他用户权限 (Others)

每组权限包含三种类型: - 读 (r):查看文件内容或列出目录内容 - 写 (w):修改文件内容或在目录中创建/删除文件 - 执行 (x):执行文件或进入目录

权限表示法

  1. 符号表示法rwxr-xr--

    • 前三个字符:所有者权限
    • 中间三个字符:组权限
    • 最后三个字符:其他用户权限
    • - 表示没有该权限
  2. 数字表示法(八进制):

    • r=4, w=2, x=1
    • 例如:rwxr-xr-- = 754

特殊权限

  1. SUID (Set User ID)

    • 以文件所有者的权限执行
    • 数字表示为 4 (如 4755)
    • 符号表示为 s (如 rwsr-xr-x)
  2. SGID (Set Group ID)

    • 以文件所属组的权限执行
    • 数字表示为 2 (如 2755)
    • 符号表示为 s (如 rwxr-sr-x)
  3. Sticky Bit

    • 主要用于目录,只有文件所有者才能删除
    • 数字表示为 1 (如 1777)
    • 符号表示为 t (如 rwxrwxrwt)

权限相关命令

  1. 查看权限

    ls -l 文件名
    
  2. 修改权限

    chmod [选项] 模式 文件
    # 示例:
    chmod 755 script.sh      # 数字模式
    chmod u+x,g-w,o=r file   # 符号模式
    
  3. 修改所有者

    chown [选项] 用户:组 文件
    # 示例:
    chown user1:developers file.txt
    
  4. 修改所属组

    chgrp [选项] 组 文件
    # 示例:
    chgrp developers file.txt
    
  5. 设置默认权限

    umask [值]  # 显示或设置默认权限掩码
    

权限与进程

  • 进程运行时继承启动它的用户的权限
  • 可以通过 susudo 临时提升权限
  • 进程的权限决定了它能访问哪些资源

实际应用示例

  1. 设置可执行脚本

    chmod +x script.sh
    ./script.sh
    
  2. 保护敏感文件

    chmod 600 ~/.ssh/id_rsa
    
  3. 共享目录设置

    chmod 2775 /shared_dir
    chgrp developers /shared_dir
    
  4. 临时目录设置

    chmod 1777 /tmp
    

理解 Shell 的运行原理和 Linux 权限系统对于系统管理和安全配置至关重要。合理设置权限可以保护系统安全,防止未授权访问,同时确保合法用户能够正常完成工作。