使用者与群组
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个权限是三个三个一组,用数字代表各个权限即
| r | w | x |
|---|---|---|
| 4 | 2 | 1 |
每种身份的权限分时需要累加的,如[-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 | 读取目录结构清单 |
|---|---|
| w | 1. 创建新的文件与目录 |
- 删除已经存在的文件或目录(与文件权限无关)
- 对已经存在的文件或目录重命名
- 移动该目录下的文件与目录 | | x | 进入该目录的权限 |
Linux文件的扩展名
虽然Linux中文件是否能执行跟扩展名没有必然联系,但是我们也希望通过扩展名来了解文件是什么,Linux中常见的几种后缀名如下
| *.sh | 脚本或批处理文件 |
|---|---|
| Z, .tar, .tar.gz, .zip, *.tgz | 经过打包的压缩文件 |
Linux文件命名长度限制
在Linux中单一文件或目录单一文件或目录的最大容许文件名为 255Bytes,以一个 ASCII 英文占用一个 Bytes 来说,则大约可达 255 个字符长度。若是以每个中文字占用 2Bytes 来说, 最大文件名就是大约在 128 个中文字。