linux文件权限
linux一般可将文件权限分为拥有者(owner)、群组(group)、其他人(others),且三种身份各有读(read)、写(write)、执行(execute)权限,那我们直接开篇详细了解一下linux的文件权限。
linux文件属性
执行【ls -al】命令查看当前位置下的文件详细的权限和属性(包含隐藏文件,即文件名以【.】开头的文件)
从图中可以看到一共分为7列,不用急,我们分别解读下每一列的含义。
图1:笔者用来具体举例阐述
- 第一列:代表文件的类型和权限(仔细看的话,会发现这一列一共有十个字符)
如图标记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