Linux文件权限的基础知识

Linux 文件权限是系统安全的核心机制之一,它决定了用户和进程对文件和目录的访问能力。以下是基础知识和常用命令的详细说明:


1. 文件权限的基础概念

权限类型
  • 读(r):查看文件内容(文件)或列出目录内容(目录)。
  • 写(w):修改文件内容(文件)或在目录中创建/删除文件(目录)。
  • 执行(x):运行文件(如脚本或程序)或进入目录(目录)。
权限对象
  • 用户(Owner):文件的所有者。
  • 组(Group):文件所属的用户组。
  • 其他(Others):既不是所有者,也不在所属组的用户。

2. 查看权限

使用 ls -l 查看文件或目录的详细信息:

ls -l file.txt
# 输出示例:-rwxr-xr-- 1 user group 1024 Jun 1 10:00 file.txt
  • 权限符号解析
    -rwxr-xr-- 分为四部分:
    • 第1位:文件类型(-=普通文件,d=目录,l=链接)。
    • 第2-4位:用户权限(rwx)。
    • 第5-7位:组权限(r-x)。
    • 第8-10位:其他用户权限(r--)。
数字表示法
  • r=4,w=2,x=1,三者相加表示权限:
    • rwxr-xr-- → 用户=7(4+2+1),组=5(4+0+1),其他=4(4+0+0) → 权限码 754

3. 修改权限

chmod 命令

修改文件或目录的权限,支持符号模式或数字模式:

# 符号模式(用户u,组g,其他o,全部a;+添加,-移除,=设置)
chmod u+x file.txt      # 为用户添加执行权限
chmod go-w file.txt     # 移除组和其他的写权限
chmod a=rwx file.txt    # 所有用户赋予全部权限

# 数字模式
chmod 755 file.txt      # 用户rwx,组和其他rx(常用于脚本)
chmod 644 file.txt      # 用户rw,组和其他r(默认文件权限)

4. 修改所有者和组

chown 命令

修改文件的所有者和所属组(需 root 权限):

chown user:group file.txt    # 修改所有者和组
chown user file.txt         # 仅修改所有者
chown :group file.txt       # 仅修改组
chgrp 命令

仅修改文件的所属组(需 root 权限或用户属于目标组):

chgrp developers file.txt   # 将文件组改为 "developers"

5. 默认权限与 umask

  • 默认权限
    • 文件:666(rw-rw-rw-)。
    • 目录:777(rwxrwxrwx)。
  • umask:决定默认权限的掩码(默认值通常为 022)。
    umask          # 查看当前 umask(如 0022)
    umask 027      # 设置 umask 为 027
    
    • 计算实际权限:默认权限减去 umask。
      • 文件:666 - 027 = 640(rw-r-----)。
      • 目录:777 - 027 = 750(rwxr-x—)。

6. 特殊权限

SetUID(suid)
  • 允许用户以文件所有者的权限执行文件。
    chmod u+s /usr/bin/passwd   # 设置 SetUID(权限显示为 rwsr-xr-x)
    
SetGID(sgid)
  • 对目录设置时,新文件继承目录的组。
    chmod g+s /shared_dir      # 设置 SetGID(权限显示为 rwxr-sr-x)
    
粘滞位(Sticky Bit)
  • 仅允许所有者删除目录中的文件(如 /tmp)。
    chmod +t /tmp              # 设置粘滞位(权限显示为 rwxrwxrwt)
    

7. 常见示例

保护敏感文件
chmod 600 ~/.ssh/id_rsa     # 仅用户可读写
共享目录权限
mkdir /shared
chmod 775 /shared           # 用户和组可读写执行,其他用户只读和执行
chown admin:team /shared    # 所有者为 admin,组为 team
修复脚本权限
chmod +x script.sh          # 添加执行权限

8. 注意事项

  1. 慎用 777:开放所有权限可能导致安全隐患。
  2. 递归修改权限:使用 -R 参数(谨慎操作):
    chmod -R 755 /var/www/html   # 递归修改目录下所有文件权限
    
  3. 符号链接权限:修改符号链接的权限实际修改目标文件。

掌握文件权限管理是 Linux 系统安全的基础,合理配置权限可有效防止未授权访问和数据泄露。

你可能感兴趣的:(Linux,linux,运维,服务器)