linux权限管理
权限位的含义
前面讲解ls命令时,我们已经知道长格式显示的第一列就是文件的权限,例如:
ls -l install.log
-rw-r--r--. 1 root root 24772 1月 14 18:17 install.log
第一列的权限位如果不计算最后的.
(这个点的含义我们在后面解释),则共有10位,这10位权限位的含义如图

-
第1位代表文件类型。Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。常见的文件类型。
-
:普通文件b
:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。c
:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。d
:目录文件。Linux中一切皆文件,所以目录也是文件的一种。l
:软链接文件。p
:管道符文件。这是一种非常少见的特殊设备文件。s
:套接字文件。这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。
-
第2~4位代表文件所有者的权限。
r
:代表read,是读取权限。- 文件:可以读取查看
- 目录:ls可以查看目录内容
w
:代表write,是写权限- 文件:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
- 目录:可以创建、删除文件,可以重命名目录
x
:代表execute,是执行权限。- 文件:可以被执行
- 目录:可以进入该目录
如果有字母,则代表拥有对应的权限;如果是
-
,则代表没有对应的权限。 -
第5~7位代表文件所属组的权限,同样是
rwx
权限。 -
第8~10位代表不与文件拥有者同组的其他用户的权限,同样是
rwx
权限。
基本权限的作用
首先,读、写、执行权限对文件和目录的作用是不同的。
权限对文件的作用
-
读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令。
-
写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。
注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
-
执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。
权限对目录的作用
- 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行ls命令,查看目录下的内容了。
- 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv命令。对目录来说,写(w)权限是最高权限。
- 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入目录
目录的可用权限其实只有以下几个
- 0:任何权限都不赋予。
- 5:基本的目录浏览和进入权限。
- 7:完全权限。
修改权限-chmod
通过chmod
指令,可以修改文件或者目录的权限
格式:
chmod [用户身份 赋予方式 权限] 文件/目录
- 用户身份
- u:代表所有者(user)
- g:代表所属组(group)
- o:代表其他人(other)
- a:代表全部身份(all)
- 赋予方式
- +:加入权限
- -:减去权限
- =:设置权限
- 权限
- r:读取权限(read)
- w:写权限(write)
- x:执行权限(execute)
修改权限有2种方式
通过+ - =
变更权限
chmod u=rwx,g=rx,o=x #给所有者rwx, 给所在组的用户 rx, 给其他人 x
chmod o+w #给其它用户增加w 的权限
chmod a-x #表示:给所有用户去掉 x权限
案例演示
# 1) 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
chmod u=rwx, g=rx ,o=rx abc
# 2) 给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x, g+w abc
# 3) 给abc文件的所有用户添加读的权限
chmod a+r abc
通过数字变更权限
数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权限的含义。
- 4:代表“r”权限。
- 2:代表“w”权限。
- 1:代表“x”权限。
像rwx=4+2+1=7
常用权限数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个。
- 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
- 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
- 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。
chmod u=rwx,g=rx,o=x 文件/目录
相当于
chmod 751 文件/目录
案例演示
#将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
Chmod u=rwx, g=rx, o=rx /home/abc.txt
Chmod 755 /home/abc.txt
修改所有者和所属组
chown
命令chown是修改文件和目录的所有者和所属组的命令
其基本信息如下
- 命令名称:chown
- 英文原意:change file owner and group。
- 所在路径:/bin/chown。
- 执行权限:所有用户。
- 功能描述:修改文件和目录的所有者和所属组
chown [选项] 所有者:所属组文件或目录选项
-R:递归设置权限,也就是给子目录中的所有文件设置权限
- 普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
- 普通用户可以修改所有者是自己的文件的权限。
案例演示:
#将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
#将 /home/kkk 目录下所有的文件和目录的所有者都修改成tom
chown –R tom /home/kkk
#将home下的所有文件和目录的所有者都改成 tom,将所在组改成police
chown –R tom:police /home/
chgrp
chgrp是修改文件和目录的所属组的命令
基本信息如下
- 命令名称:chgrp
- 英文原意:change group ownership
- 所在路径:/bin/chgrp
- 执行权限:所有用户
- 功能描述:修改文件和目录的所属组。
chgrp newgroup file
示例
#将 /home/abc.txt 文件的所在组修改成 shaolin (少林)
chgrp shaolin /home/abc.txt
#将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin(少林)
chgrp -R shaolin /home/kkk
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步