在 Linux 中, 一个十分重要的内容就是文件权限.
一, 文件存取访问身份
Linux 的优秀之处在于她的多用户多任务环境, 为了方便文件的管理, 有三种文件存取访问身份, 分别是: 用户, 用户组, 其他
二, 文件属性
我们在用 ls 列举出当前工作目录下的文件时, 显示的只是文件或目录名, 要想显示属性, 使用 ls -l, 要列举出隐藏文件, 使用 ls -al.
下图是我列举出的桌面下的部分文件及其属性的显示.
第一列为 10 个字符, 代表这个文件的类型和权限. 在下面会重点介绍.
第二列是一个数字, 表示有多少文件名链接到此节点.(Linux 的目录树是使用文件名来记录的)
第三列表示这个文件的所有者账号.
第四列表示这个文件的所属组账号.
第五列的数字代表这个文件的大小, 单位是 Byte.
第六列是这个文件的创建日期或者最近修改日期.
最后列是文件名, 如果文件名前多个'.', 代表这个文件是隐藏文件.
三, 文件属性的更改
1. 改变文件所有者 chown
chown [-R] 账号名称 文件或目录
要更改目录下所有子目录或文件的所有者, 加上 - R 参数, 代表进行递归更改.
例 1: 将 install.log 文件的所有者改为 bin
chown bin install.log
2. 改变文件所属用户组 chgrp
chgrp [-R] 用户组 文件或目录
要更改目录下所有子目录或文件的所有者, 加上 - R 参数, 代表进行递归更改.
注意: 用户组的名字必须要存于 / etc/group 中, 不然不能更改成功
例 2: 将文件 install.log 的所属用户组改为 users
chgrp users install.log
3. 文件属性需要修改的常见场景
我们复制文件时, 如使用 cp
cp 源文件 目标文件
复制后的目标文件与源文件会具有相同的属性和权限, 如将文件传给 bin, 若文件中对其他人只有读的权限, 那么 bin 就不能对文件进行修改等操作, 因此需要修改文件所有者和用户组
四, 文件权限
在 Linux 中, 用户对文件有三种访问权限: read,write,excute
在文件属性中, 第一列代表文件类型和权限. 其中, 第一个字符代表文件的类型, Linux 中的文件类型表示后面会介绍. 接下来的字符中, 每 3 个为一组
第一组为文件所有者的权限, 第二组为所属用户组权限, 第三组为其他人的权限.
1. 文件权限含义
文件权限三个为一组, 均为 "rwx" 三个参数的组合
r:read 代表可读
w:write 代表可写
x:execute 代表可执行
这个三个权限的位置不会发生改变, 如果没有该权限, 就用 - 替代.
例 3:-rwxr-xr--
-: 表示文件类型,- 表示这是一个文件
rwx: 所有者的权限, 可读, 可写, 可执行
r-x: 所属用户组的权限, 可读, 可执行
r--: 其他用户的权限, 可读
2. 文件权限的数字表示
三个权限的位置不会改变, 可以使用数字来代表各个权限
r:4
w:2
x:1
每种身份的权限为这三个权限的和
例 4:-rwxr-xr--
所有者权限为: 4+2+1=7
用户组权限为: 4+1=5
其他人的权限为: 4
所以该文件权限为 754
3. 文件权限的修改 chmod
1. 数字类型的修改
chmod [-R] number 文件或目录
-R: 进行递归修改, 连同子目录下的所有文件都会更改
例 5: 将. bashrc 这个文件的权限改为 - rw-r--r--
chmod 644 ./bashrc
2. 字符类型的修改
有 user,group,others 三种身份, 用 u,g,o 来代表, a 代表全部的身份
chmod | u g o a | + - = | r w x | 文件或目录 |
例 6: 设置文件./bashrc 的权限为 - rwxr-xr-x
chmod u=rwx,go=rx ./bashrc
例 7: 增加./bashrc 这个文件的每个人均可写入的权限
chmod a+w ./bshrc
例 8: 去掉./bashrc 这个文件的每个人均可写入的权限
chmod a-w ./bashrc
4. 目录与文件的权限意义
1 文件的权限意义
r: 可读取文件的内容
w: 可以编辑, 增加或修改文件的内容
注意: 不能删除该文件
x: 该文件有被系统执行的权限
在 Windows 下一个文件是否具有执行能力是通过扩展名来判断的, 如. exe, .bat, .com 等, Linux 下是由是否具有 x 权限来决定的, 与文件名没有绝对关系
2 目录的权限意义
r: 可以读取目录结果列表, 即可以查询该目录下的文件名数据, 利用 ls 将该目录的内容列表显示出来
w: 可以更改目录结果列表包括:
a: 信件文件与目录
b: 删除以及存在的文件与目录 (不管该文件的权限为何)
c: 将以存在的文件或目录重命名
d: 转移目录内的文件, 目录位置
x: 用户可以进入该目录成为工作目录
例 9: 有个目录权限如下: drwxr--r--, 系统有个账号叫 vbird, 但是这个账号并没有支持用户组, 请问 vbird 对这个目录有何权限, 是否可切换到此目录中
vbird 对此目录只有 r 权限, 因为没有 x 权限, 所以不能切换到此目录内
例 10: 有个账号 dmtsai, 他的主文件夹在 / home/dmtsai,dmt 对此目录有 rwx 权限, 若此目录下有个 the_root.data 的文件, 权限为:-rwx------,dmtsai 对此文件的权限是什么, 可否删除此文件
dmtsai 对此文件来说是 others 身份, 没有任何权限. 这个文件在他的主文件夹下, 他对主文件夹有 rwx 的权限, 所以他可以删除此文件
五, 文件种类以及其属性表示
-: 一般文件
d: 目录文件
l: 链接文件
b: 块设备文件, 即一些存储数据以提供系统随机访问的接口设备, 如硬盘, 软盘等
c: 字符设备文件, 即一些串行端口的接口设备, 如鼠标, 键盘等
s: 套接字, 数据接口文件, 通常被用在网络上的数据传输
p:FIFO 文件
来源: https://www.cnblogs.com/shrimp-can/p/10039288.html