一、为什么需要文件权限?

在Linux系统中,文件权限就像一把“钥匙”,控制谁能以何种方式访问文件。如果权限设置错误,可能导致文件被误删、被恶意修改,甚至服务器数据泄露。比如,一个仅用于团队协作的文档,如果权限开放给所有人,就可能被无关人员篡改;反之,如果权限过于严格,自己也无法编辑文件。因此,理解并正确设置文件权限是Linux系统管理的基础。

二、文件权限的“身份标签”:用户与组

每个文件(或目录)都有三类关联用户:
- 所有者(User):文件的创建者,拥有最高控制权(除非被修改)。
- 所属组(Group):文件所有者所在的用户组,组内成员共享组权限。
- 其他人(Others):既不是所有者也不属于所属组的用户。

权限的核心是:对这三类用户分别设置“读、写、执行”三种操作的允许/禁止

三、权限的两种表示方式

Linux用两种方式表示权限,新手需掌握“字符形式”和“数字形式”的互转:

1. 字符形式:直观易懂

-rwxrwxrwx为例,共10个字符,分为4部分:
- 第1个字符:文件类型(-代表普通文件,d代表目录,l代表链接等)。
- 第2-4字符:所有者权限(r读、w写、x执行,无权限用-表示)。
- 第5-7字符:所属组权限。
- 第8-10字符:其他人权限。

权限含义速查表
| 字符 | 含义 | 数字值 |
|------|------|--------|
| r | 读(查看内容) | 4 |
| w | 写(修改/删除文件) | 2 |
| x | 执行(运行程序/进入目录) | 1 |
| - | 无权限 | 0 |

2. 数字形式:快速计算

将字符形式的权限转换为八进制数字(0-7),规则是:r=4w=2x=1,三类用户权限相加。
例如:
- rwx(所有者):4+2+1=7
- rw-(所属组):4+2+0=6
- r-x(其他人):4+0+1=5
合并后为 765

四、文件 vs 目录:权限的区别

权限对“文件”和“目录”的影响不同,新手常混淆,需重点注意:

类型 r(读) w(写) x(执行)
文件 可查看内容 可修改内容 可执行文件(如脚本、二进制程序)
目录 可列出目录内容(ls) 可在目录内创建/删除文件 可进入目录(cd)

五、如何修改文件权限?

常用命令:chmod(修改权限)、chown(修改所有者/组)。

1. chmod:修改权限
  • 字符形式:用u(所有者)、g(组)、o(其他人)、a(所有用户),配合+(加权限)、-(减权限)、=(设为精确权限)。
    示例:
  • chmod u+x file.txt:给所有者加执行权限(u+x)。
  • chmod go-r file.txt:给组和其他人减读权限(go-r)。
  • chmod a+rwx file.txt:给所有用户加读/写/执行权限(a+rwx)。

  • 数字形式:直接用数字指定权限(八进制)。
    示例:

  • chmod 755 file.txt:所有者rwx(7),组r-x(5),其他人r-x(5)。
  • chmod 644 file.txt:所有者rw-(6),组r--(4),其他人r--(4)。

  • 递归修改目录:用-R参数对目录及其子文件/目录生效。
    示例:chmod -R 755 /home/user/docs/

2. chown:修改所有者/组
  • 修改所有者:chown 新所有者 文件/目录
    示例:chown alice file.txt(将file.txt的所有者改为alice)。

  • 修改所属组:chown :新组 文件/目录
    示例:chown :dev-team file.txt(将file.txt的所属组改为dev-team)。

  • 同时修改所有者和组:chown 新所有者:新组 文件/目录
    示例:chown alice:dev-team file.txt

六、特殊权限:SUID、SGID、SBIT

新手可先了解基础权限,再掌握特殊场景(避免复杂但常用):

  • SUID(Set UID):让程序运行时临时获得文件所有者权限。
    示例:passwd命令用chmod u+s /usr/bin/passwd,普通用户执行passwd时,会以root身份修改密码(仅对二进制程序有效)。

  • SGID(Set GID):让程序运行时临时获得文件所属组权限,或让目录内新建文件自动继承组。
    示例:chmod g+s /home/shared,在/shared目录新建文件,所属组会继承/shared的组。

  • SBIT(Sticky Bit):仅用于目录,防止普通用户删除他人文件。
    示例:chmod o+t /tmp,用户在/tmp下只能删除自己创建的文件。

七、常见问题与避坑

  1. 普通用户无法修改文件?
    权限不足,需确保自己是文件所有者,或被加入所属组并拥有写权限。

  2. 修改目录权限后子文件没变化?
    目录权限需递归修改:chmod -R 755 dir/

  3. 权限数字算错?
    牢记:r=4w=2x=1,例如rw-r--r--644(6=4+2,4=4+0,4=4+0)。

总结

文件权限是Linux系统安全的核心,初学者需先掌握:
1. 字符形式(rwxrwxrwx)和数字形式(755)的转换。
2. chmod的两种修改方式(字符/数字)。
3. 文件与目录权限的区别。

通过实际操作(如创建测试文件、修改权限、观察效果),很快就能熟练掌握!

小夜