鸟哥的Linux私房菜笔记(二)Linux的文件权限

89 阅读6分钟

使用者与群组

Linux中所有的都是文件,任何一个文件都有“User,Group,Others”三种身份的个别权限,其中最重要的就是文件拥有者。以下是与文件拥有者相关的几个角色。

  • 文件拥有者

顾名思义就是文件的所有者,如果把文件设置为只有文件拥有者才能修改这个文件的内容,那么除了文件的所有者,其它人都无法知道文件的内容。

  • 群组

当一个系统中有多个使用者,可以根据实际需要将这些使用者划分在不同的群组中,群组成员之间可以访问操作属于该群组的文件,但是无法访问操作其它群组的文件,但是群组中的成员仍然可以有自己的文件数据,群组内的其它成员也不可以访问操作。注意,每个账号可以有多个群组支持。

  • 其他人

假设有两个群组GroupA和GroupB,对于GroupA中的使用者,GroupB中的使用者就是其它人。

最后Linux中还有一个最高的用户root可以访问操作所有文件。

记录账号与群组的文件

在Linux系统中,默认情况下所有系统中的账号信息都记录在/etc/passwd文件中,如下图所示

个人密码记录文件 /etc/shadow

记录所有群组名称的文件 /etc/group

Linux文件权限

查看Linux的所在目录下的文件,使用ls 指令,如下图所示:

ls -al

ls 显示文件的文件名和相关属性 -al则表示列出所有文件的详细权限与属性,包含隐藏文件

图中的数据共有7列,分别有如下含义:

序号含义
1文件的权限
2连接数
3拥有者
4群组
5文件大小,默认为byte
6文件的修改日期
7文件名

文件权限

图中的第一列描述了这个文件的类型与权限,这一栏一共有10个字符

第一个字符表示了这个文件是目录、文件、连接文件等,具体描述如下

标识含义
d目录
-文件
I链接文件(link)
b设备文件可供存储的周边设备
c设备文件中的一次性读取设备,如鼠标键盘等

接下来的字符中,每三个字符为一组,且均为“rwx”三个参数的组合,其中【r】表示可读,【w】表示可写入,【x】表示可执行,【-】表示无权限。【rwx】这三个参数的位置不会改变。三组字符分别代表不同用户的权限:

  • 第一组为文件拥有者的权限
  • 第二组为加入该群组的账号的权限
  • 第三组为非本人且未加入该群组的权限

如图:

.bashrc 文件的权限如下:

  • 文件所有者zhangcj具有读写权限
  • zhangcj这个群组中非zhangcj的账号具有只读权限
  • 非zhangcj群组中的其它用户具有只读权限

修改文件属性与权限

修改权限的相关指令如下:

  • chgrp : 改变文件所属群组
  • chown :改变文件拥有者
  • chmod :改变文件的权限

注意:这三个指令都有[-R] 参数,recursive递归的持续变更,连同下一级目录下的所有文件都变更

修改文件所属群组

chgrp [-R] 群组名 文件名

修改文件所属用户

chown [-R] 用户名 文件名

修改文件权限

权限的设置方式有两种,分别可以使用数字或符号来进行权限的变更

  • 数字修改

Linux文件的基本权限有9个,分别是user/group/others三种身份各自有自己的read/write/execute权限。即“-rwxrwxrwx”这9个权限是三个三个一组,用数字代表各个权限即

rwx
421

每种身份的权限分时需要累加的,如[-rwxrwx---]权限,用数字表示即为770,所以用数字修改文件权限的可以使用如下指令

[root@study ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
  • 符号修改

分别用u,g,o 代表 user,group,others三种身份,a代表所有身份,r,w,x代表读、写、执行权限,+,- 分别代表新增或减去权限,= 表示设置权限 设置权限的指令如下:

| chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录 |

练习:有111_test.txt文件,修改文件的权限为‘-rw-r-----’

chmod u=rw,g=r,o=-  111_test.txt

结果如下:

注意没有指定到的权限项目,会维持原来的权限不变

权限对文件和目录的意义

  • 权限对文件的重要性

Linux的文件是数据存放的地方,包含一般文本文件、二进制文件、可执行文件等。权限对于文件来说是这样的

r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
x (eXecute):该文件具有可以被系统执行的权限。

注意:在windows下面一个文件是否可以执行可以根据文件的扩展名来进行判断区分,但是在Linux下,文件能否执行主要跟x权限有关,跟文件名没有绝对的关系。

  • 权限对目录的重要性

目录主要是记录文件名清单的文件,针对目录,r,w,x权限分别有如下含义:

r读取目录结构清单
w1. 创建新的文件与目录
  1. 删除已经存在的文件或目录(与文件权限无关)
  2. 对已经存在的文件或目录重命名
  3. 移动该目录下的文件与目录 | | x | 进入该目录的权限 |

Linux文件的扩展名

虽然Linux中文件是否能执行跟扩展名没有必然联系,但是我们也希望通过扩展名来了解文件是什么,Linux中常见的几种后缀名如下

*.sh脚本或批处理文件
Z, .tar, .tar.gz, .zip, *.tgz经过打包的压缩文件

Linux文件命名长度限制

在Linux中单一文件或目录单一文件或目录的最大容许文件名为 255Bytes,以一个 ASCII 英文占用一个 Bytes 来说,则大约可达 255 个字符长度。若是以每个中文字占用 2Bytes 来说, 最大文件名就是大约在 128 个中文字。