Linux系统的文件权限管理是每个运维和开发者必须掌握的基础技能。很多人刚接触Linux时,对文件授权感到一头雾水,不清楚rwx到底代表什么,也不知道chmod、chown这些命令怎么用。其实,文件权限的核心就是控制谁能读、谁能写、谁能执行,理解了这个逻辑,授权就不再难了。
权限的三组角色是什么意思
Linux里每个文件或目录都有三组权限,分别对应文件所有者、所属组和其他用户。举个例子,你用ls -l查看文件时,会看到类似-rwxr-xr--这样的字符串。第一个字符表示文件类型,后面九个字符分成三组,每组三个。第一组是文件所有者的权限,第二组是所属组的权限,第三组是其他用户的权限。

权限字母也很好记:r代表读权限,w代表写权限,x代表执行权限。如果是目录,x权限表示能否进入这个目录。如果某个位置是-,就表示没有该权限。比方说-rw-r--r--,所有者能读写但不能执行,所属组和其他用户只能读。
理解这三组角色是授权的第一步。很多新手搞混的是,以为给文件授权是直接给某个用户授权,实际上Linux是通过文件所有者、所属组来间接控制权限的。你要是想让某个用户能访问文件,要么把他加到文件所属组里,要么让他成为文件所有者。
用数字法授权到底怎么算
数字法授权是Linux里最常用的方式,命令是chmod。每个权限对应一个数字:r是4,w是2,x是1。把三组权限的数字加起来,就得到一组三位数。比如rwx就是4+2+1=7,r-x就是4+0+1=5,r--就是4+0+0=4。

实际使用时,chmod 755 文件名就是给文件所有者全部权限(7),所属组和其他用户读和执行权限(5)。这个755用得最多,普通脚本、程序文件经常设成这个值。如果文件是私密的,比如密钥文件,你会设成600,只有自己能读写。
数字法简单直观,但要注意,给目录授权时,执行权限是必须的。如果你只给了目录读权限而没有执行权限,别人虽然能看到目录里的文件名,但进不去。这种情况经常让新手困惑,明明文件权限对了,可就是打不开,多半是目录权限没设好。
用字母法授权更灵活的场景
字母法授权用u表示所有者,g表示所属组,o表示其他用户linux rar,a表示所有人。操作符有+(添加权限)、-(移除权限)、=(设置精确权限)。比如chmod u+x 文件名就是给文件所有者添加执行权限,chmod go-w 文件名就是去掉所属组和其他用户的写权限。

字母法比数字法更灵活,适合只修改某个角色的某个权限,而不影响其他。比如你只想让所属组的人能读,但不想改其他权限,用数字法就得重新算一遍三位数,用字母法直接写chmod g+r 文件名就行。在写脚本或者批量处理时,字母法也更不容易出错。
还有一种情况是递归授权,用-R参数。比如chmod -R 755 /var/www/html,会把整个目录及里面所有文件都设成755。这个要小心用,一不小心就可能把系统文件的权限改乱,导致服务出问题。递归授权时,建议先测试,或者只对特定子目录操作。
文件所有者和所属组怎么修改
权限的另一个关键是文件所有者和所属组。文件所有者默认是创建文件的用户,所属组默认是这个用户的主组。如果你要让别的用户能访问文件,除了改权限,还可能要把文件所有者或所属组换掉。修改所有者的命令是chown,修改所属组的命令是chgrp。

比如chown root:admin 文件名,就是把文件所有者改成root,所属组改成admin组。这个操作一般只有root用户能做。普通用户不能把自己的文件给别人,除非你有sudo权限。实际工作中,经常用chown -R把整个网站目录的所有者改成nginx或apache用户,这样Web服务才能正常读写文件。
还有一个细节是粘滞位,用chmod +t设置。粘滞位主要用在/tmp这样的公共目录查看linux是什么系统,防止用户删除别人的文件。设置了粘滞位的目录linux 文件 授权,即使权限是777,用户也只能删除自己的文件,不能动别人的。这在多人协同的服务器上特别有用。
实际工作中常见授权问题
刚接触Linux的人,最常遇到的问题是权限不够导致程序报错。比如启动Web服务时提示“Permission denied”,或者写日志时失败。排查思路很简单:先看文件的所有者和所属组对不对,再看权限数字是不是合适。一般来说,配置文件设成644,脚本文件设成755,日志目录设成755或775。

还有一个坑是umask,这是新建文件时的默认权限掩码。系统默认umask一般是022,表示新建文件默认权限是644,目录是755。如果你想让团队协作时自动生成组可写的文件,可以把umask改成002。这个值在/etc/profile或~/.bashrc里设置。
SELinux和AppArmor这些安全模块也会影响文件访问,有时候明明权限设置对了,但文件还是打不开,可能就是SELinux在拦截。排查时先看/var/log/audit/audit.log里的记录,或者临时关闭SELinux测试一下。不过生产环境不建议关SELinux,应该学会配置正确的上下文规则。
Linux文件授权其实就这几样东西:三组角色、三种权限、两种修改命令、几个特殊位。只要理解了两三个核心概念linux 文件 授权,就能应对绝大多数情况。不用怕记不住命令,常用的是chmod、chown,配合数字法,基本够用。多练几次,遇到问题查查手册,很快就能熟练起来。
