linux文件权限详解

181 阅读4分钟

linux文件权限

linux一般可将文件权限分为拥有者(owner)、群组(group)、其他人(others),且三种身份各有读(read)、写(write)、执行(execute)权限,那我们直接开篇详细了解一下linux的文件权限。

linux文件属性

执行【ls -al】命令查看当前位置下的文件详细的权限和属性(包含隐藏文件,即文件名以【.】开头的文件)
从图中可以看到一共分为7列,不用急,我们分别解读下每一列的含义。

图1:笔者用来具体举例阐述 image.png

  • 第一列:代表文件的类型和权限(仔细看的话,会发现这一列一共有十个字符) 如图标记2中:【drwxr-xr-x】和 标记1中:【-rw-------】
    其中第一个字符代表这个文件是目录、文件或链接文件等。
    若为【d】为目录,则标记2红框是文件夹;
    若为【-】为文件,则标记1红框为文件;
    若为【l】则代表链接文件;

接下来剩余的9个字符中,以三个为一组,且均为【rwx】三个参数的组合。其中,【r】代表可读(read),【w】代表可写(write),【x】代表可执行(execute)。要注意,这三个权限的位置不会改变,如果没有权限,则为【-】, 那么剩余的字符一共可分为三组。
第一组:为文件拥有者(owner)可具备的权限。
第二组:为加入此用户组(group)的账号权限。
第三组:为非本人且没有加入本用户组的其他账号(others)的权限。

但是文件和目录具体的[rwx]含义是不一样的!!!

文件-权限的意义:

权限含义
r(read)可读取文件的实际内容,如读取文本文件的文本内容
w(write)可编辑/新增文件的实际内容(但不含删除该文件)
x(execute)该文件具有可以被执行的权限,windows中能否被执行是依靠文件扩展名来判断的,如exe,bat等,但是linux中,是借由[x]这个权限来决定的,跟文件名是没有绝对的关系的

目录-权限的意义:

权限含义
r(read)可读取目录结构列表
w(write)表示具有改动该目录结构列表的权限,即建立新的文件与目录、删除已存在的文件与目录、更改已存在的文件与目录的名称、移动该目录内的文件与目录位置
x(execute)代表用户能否进入该目录成功工作目录,平常用的cd(change directory)命令就是用于切换工作目录
  • 第二列:表示有多少文件名链接到此节点(inode),本次不做重点说明。
  • 第三列:代表这个文件/目录的拥有者账号,图中显示为heshiyu。
  • 第四列:代表这个文件/目录的所属用户组,图中显示为staff。
  • 第五列:代表这个文件/目录的大小,单位为bytes。
  • 第六列:代表这个文件/目录的最近修改时间,如图标记2中【3 8 23:01】代表今年3月8日23点01分,如果时间过去太久,则就只会显示年份。
  • 第七列:代表这个文件/目录的名称

修改文件属性与权限

linux有几个常见的命令来修改权限:

  • chgrp:修改文件/目录的所属用户组,命令如下:
# chgrp [-R] dirname/filename
-R:进行递归修改,常用于修改某一目录内所有文件。
  • chown:修改文件/目录拥有者,也可一同修改分组,命令如下:
# chown [-R] owner dirname/filename
# chown [-R] owner:group dirname/filename
  • chmod:修改文件/目录的权限,权限设置方法有2种,分为数字类型和符号类型。

1.数字类型权限:r=4,w=2,x=1

# chmod [-R] xyz 文件或目录
xyz:为rwx属性的数值想加

举例说明,如果要将.test这个文件拥有者权限修改为r可读/w可写/x可执行、群组修改为可读、其他人不设置权限。则命令应该为:

# chmod 740 .test

2.符号类型权限:u=user,g=group,o=others,a=all,+代表加入,-代表移除,=代表设置

还是以.test文件举例说明:

# chmod u=rwx,go=rx .test
代表拥有者拥有全部权限,群组和其他人拥有可读可执行权限

此时,我们想把群组权限增加一个可写权限,那么只需要:

# chmod g+w .test