Linux 文件权限怎么看?chmod/chown 命令实战教程

Linux 文件权限怎么看?chmod/chown 命令实战教程
Linux 系统通过严格的文件权限机制保障资源安全,权限分为用户(User)、组(Group)、其他(Others)三组,每组包含读(r)、写(w)、执行(x)三种基本权限。查看权限可通过ls -l命令获取详细信息,或用stat命令查看完整权限数据。修改权限主要使用chmod命令,支持符号模式(如u+x为用户添加执行权)和数字模式(如755代表用户读写执行、组和其他读执行)。此外,chownchgrp命令可修改文件所有者与所属组,特殊权限位(SUID、SGID、粘滞位)则用于实现临时权限提升、权限继承等高级功能。合理配置权限是维护 Linux 系统安全与稳定的核心操作。

一、文件权限基础概念

在 Linux 系统中,每个文件和目录都有三组权限,分别对应三种身份:
  • 用户(User):文件所有者
  • 组(Group):文件所属组的成员
  • 其他(Others):非所有者且不在所属组的用户
每组权限包含三种基本权限:
  • 读(Read,r):数值表示为 4
  • 写(Write,w):数值表示为 2
  • 执行(Execute,x):数值表示为 1
  • 无权限(-):数值表示为 0

二、查看文件权限

1. 使用ls -l命令查看详细权限

ls -l filename
输出示例:
-rw-r--r-- 1 user group 1024 May 10 14:30 filename
权限部分解析:
  • 第一位:文件类型(-表示普通文件,d表示目录,l表示链接等)
  • 第 2-4 位:用户权限(如rw-表示用户有读写权限)
  • 第 5-7 位:组权限(如r--表示组用户只有读权限)
  • 第 8-10 位:其他用户权限(如r--表示其他用户只有读权限)

2. 使用stat命令查看更详细信息

stat filename
输出示例:
  File: filename
  Size: 1024        Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 123456      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    group)
Access: 2025-07-10 14:30:00.000000000 +0800
modify: 2025-07-10 14:30:00.000000000 +0800
Change: 2025-07-10 14:30:00.000000000 +0800
 Birth: -
其中Access: (0644/-rw-r--r--)表示文件权限为 644(用户读写,组和其他用户只读)。

三、修改文件权限

1. 使用chmod命令(符号模式)

语法:chmod [who][operator][permission] filename
  • whou(用户)、g(组)、o(其他)、a(所有)
  • operator+(添加权限)、-(移除权限)、=(设置权限)
  • permissionrwx
示例:
# 为用户添加执行权限
chmod u+x filename
# 移除组的写权限
chmod g-w filename
# 为所有用户添加读权限
chmod a+r filename
# 设置用户有读写权限,组和其他用户只有读权限
chmod u=rw,g=r,o=r filename

2. 使用chmod命令(数字模式)

语法:chmod [mode] filename
  • mode:三位数字,分别代表用户、组、其他的权限数值之和
示例:
# 设置权限为644(用户读写,组和其他用户只读)
chmod 644 filename
# 设置权限为755(用户有读写执行权限,组和其他用户有读和执行权限)
chmod 755 filename
# 设置权限为777(所有用户有读写执行权限,谨慎使用)
chmod 777 filename

四、修改文件所有者和所属组

1. 使用chown命令修改所有者

# 修改文件所有者为newuser
chown newuser filename
# 修改目录及其所有子文件的所有者
chown -R newuser directory
2. 使用chgrp命令修改所属组
# 修改文件所属组为newgroup
chgrp newgroup filename
# 修改目录及其所有子文件的所属组
chgrp -R newgroup directory
3. 使用chown同时修改所有者和所属组
# 修改文件所有者为newuser,所属组为newgroup
chown newuser:newgroup filename

五、特殊权限位

1. SUID(Set User ID)

  • 作用:让执行该程序的用户临时拥有程序所有者的权限
  • 设置:chmod u+s filename(数字模式:4000 + 原权限)
  • 示例:
# 设置SUID位
chmod 4755 program
2. SGID(Set Group ID)
  • 作用:让执行该程序的用户临时拥有程序所属组的权限,对目录设置时,新创建的文件会继承目录的所属组
  • 设置:chmod g+s filename/directory(数字模式:2000 + 原权限)
  • 示例:
# 设置SGID位
chmod 2755 directory

3. Sticky Bit(粘滞位)

  • 作用:主要用于目录,限制只有文件所有者或 root 才能删除该目录下的文件
  • 设置:chmod o+t directory(数字模式:1000 + 原权限)
  • 示例:
# 设置粘滞位
chmod 1775 directory
六、常用场景示例

1. 创建一个可执行脚本

# 创建脚本文件
echo "#!/bin/bash" > script.sh
echo "echo Hello, World!" >> script.sh
# 添加执行权限
chmod +x script.sh
# 或使用数字模式
chmod 755 script.sh

2. 设置一个共享目录

# 创建目录
mkdir shared
# 设置所属组
chgrp team shared
# 设置SGID位,确保新文件继承所属组
chmod g+s shared
# 设置读写权限
chmod 775 shared

3. 修复目录权限问题

# 修复目录权限为755,子文件权限为644
find /path/to/directory -type d -exec chmod 755 {} \;
find /path/to/directory -type f -exec chmod 644 {} \;

七、注意事项

  1. 谨慎使用 777 权限:可能导致安全风险
  2. SUID/SGID 权限风险:仅对必要的程序设置
  3. 使用 - R 参数需谨慎:递归修改权限可能影响系统文件
  4. root 权限要求:修改其他用户的文件或系统文件需要 root 权限

 

通过以上方法,你可以灵活管理 Linux 系统中的文件权限,确保系统安全并满足应用需求。
阅读剩余