文章目录
- 权限介绍
- chmod 命令
-
- 命令格式
- 常用用法
- 基本权限的含义
- chown 命令
-
- 命令格式
- 常用用法
- chgrp 命令
-
- 命令格式
- 常用用法
- umask 默认权限
权限介绍
-
为什么需要权限
平时所使用的计算机都是个人计算机,都是自己或者自己信任的人在使用,所以感受不到权限的作用,都是使用管理员权限。
可是,对于服务器来说,使用者非常多,服务器里保存的数据有些非常重要,有些价值非常高,因此对权限当然是设定的越详细越好,用户的分级越明确越好。比如在银行里,行长和柜台服务人员对于存储数据的服务器的权限肯定不同。在服务器上,绝对不是所有的用户都是用 root 身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。
- 文件的所有者、所属组和其他人
前面讲 “ls -l” 时,简单说过所有者和所属组的含义,命令的第三列代表所有者,第四列代表所属组。
文件的所有者一般就是这个文件的创建者,比如 data 文件,我们在 shz1 下创建的,所以所有者就是 shz1;系统中,大部分系统文件都是 root 建立的,所以绝大多数系统文件的所有者都是 root。
文件的所属组,要想解释这个概念,我们先要知道用户组的概念。用户组就是一组用户的集合,为什么要把一组用户放在一起呢?当然是为了方便管理。比如,我们有100位用户,都需要分配相同的权限,我们如果一个个用户去配置,岂不是累死了0.0…,而将所有用户分到一个用户组,给整个组分配权限,不管多少用户,一次就好了,是不是非常方便啊!所属组的这个组,指的就是用户组。
其他人,就是字面意思。
- 权限位含义
前面讲 “ls -l” 时,我们知道第一列是文件的权限,如上图所示。
总共10个字符:
第一位代表文件类型:
字符 | 文件类型 | 描述 | 示例 |
---|---|---|---|
- | 普通文件 | 用来在辅助存储设备(磁盘)上存储数据 | 程序源代码、可执行程序、图片、声音、文字、视频等 |
d | 目录文件 | linux 中一切都是文件,目录也是 | /root /home |
l | 软链接文件 | 用于不同目录下文件的共享(快捷方式) | 创建已存在文件的符号链接时,系统就创建了一个链接文件,这个链接文件指向已存在的文件 |
b(块) c(字符) | 设备文件 | 用来访问硬件设备 | 键盘、打印机、光驱、硬盘等 |
p | 管道符文件 | 特殊类型文件 | Linux 系统下,进程之间通信可以通过该文件完成 |
s | 套接字文件 | 特殊类型文件 | 一些服务支持 socket 访问,就会产生这样的文件 |
第2~4位代表文件所有者的权限;
第5~7位代表文件所属组的权限;
第8~10位代表其他人的权限。
他们所能拥有的权限都是 “rwx” 权限:
r:read 读取权限;
w:write 写权限;
x:execute 执行权限。
如果有字母,代表相应的权限;如果是 “-” ,则代表没有对应权限。
chmod 命令
项目 | 内容 |
---|---|
命令名称 | chmod |
英文原意 | change file mode bits |
所在路径 | /bin/chmod |
执行权限 | 所有用户 |
作用 | 修改文件的权限模式 |
命令格式
chmod [选项] 权限模式 文件名
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设定权限
-
权限模式
格式: [用户身份] 赋予方式 权限
- 用户身份
符号 | 含义 |
---|---|
u | 代表所有者(user) |
g | 代表所属组(group) |
o | 代表其他人(other) |
a | 代表全部身份(all) |
缺省默认是a
- 赋予方式
符号 | 含义 |
---|---|
+ | 加入权限 |
- | 减去权限 |
= | 设置权限 |
- 权限
符号 | 含义 |
---|---|
r | 读取权限 |
w | 写权限 |
x | 执行权限 |
权限还可以用数字表示:
符号 | 对应数字 |
---|---|
r | 4 |
w | 2 |
x | 1 |
比如 755权限:
7=4+2+1 代表所有者有rwx权限
5=4+1 代表所属组有r-x权限
5=4+1 代表其他人有r-x权限
常用用法
- 用 “-” 去掉权限
- 用 “+” 给多个用户添加权限
- 混合使用
- 数字权限
基本权限的含义
- 权限对文件的作用
- r:可以读取文件中的数据。如果把权限对应到命令上,也就是可以使用 cat、more、less、head、tail、vim、gedit 等命令查看文件内容。
- w:可以修改文件中的数据。如果把权限对应到命令上,也就是可以使用 vim、gedit、echo 等命令修改文件内容。
- x:对文件有执行权限。注意,文件有了执行权限,该文件能不能执行,还要看文件中的代码是不是正确的语言代码。对文件来说,执行权限是最高权限。
- 权限对目录的作用
- r:可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,就可以用 ls 在目录下查看目录下的内容啦。
- w: 可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,也就是可以使用 touch、rm、cp、mv 命令。对目录来说,写权限是最高权限。
- x:目录是不能运行的,给目录执行权限,代表可以进入目录。如果把权限对应到命令上,也就是可以使用 cd 命令,进入目录。
其实这些权限位的含义可以联系 ext4 文件系统的组成,可知其所以然。
chown 命令
项目 | 内容 |
---|---|
命令名称 | chown |
英文原意 | change file owner and group |
所在路径 | /bin/chown |
执行权限 | 所有用户 |
作用 | 改变文件和目录的所有者和所属组 |
命令格式
chown [选型] 所有者:所属组 文件或目录
选项:
-R: 递归设置权限
常用用法
-
修改文件的所有者
只有文件的所有者和root用户有权修改文件的权限,如果普通用户需要对某个文件拥有最高权限的时候,是不能把其他人权限修改为最高权限,否则其他所有用户都拥有了文件的最高权限,这是非常不安全的做法。合理的做法是修改文件的所有者,这样既可以让普通用户有最高权限,也不会影响其他普通用户。看如下例子:
- 修改文件的所属组
“:” 也可以用 “.” 替代;
修改所属组,也是为了调整权限,即调整一组权限。
chgrp 命令
项目 | 内容 |
---|---|
命令名称 | chgrp |
英文原意 | change group ownership |
所在路径 | /bin/chgrp |
执行权限 | 所有用户 |
作用 | 改变文件和目录的所属组 |
命令格式
chgrp 所属组 文件或目录
常用用法
- 修改改变文件的所属组
umask 默认权限
-
umask 权限的作用
umask 权限是 Linux 权限的一种。在 Linux 中,所有的文件和目录都要有基本的权限,新建的文件和目录当然也要有默认的权限。
在 Linux 中,通过 uamsk 默认权限来给所有新建立的文件和目录赋予初始权限,这一点和 Window 不一样,Windows 是通过继承上级目录的权限来给文件和目录赋予初始权限的。
查看系统的 umask 权限:
数值的 umask 权限,我们看到是: 0002 ,其中第一个 0 代表文件的特殊权限,暂时不谈;后 3 为数字 002 才是真正的 umask 默认权限。 -
umask 计算方法
Linux 中,对于新建文件和目录有默认的最大权限:
(1) 对文件来说,新建文件的默认最大权限是 666,没有执行权限。)
(2) 对于目录来讲,新建目录的最大权限是 777。
umask 计算方法很多,这里列举一个比较简单的,将 uamsk 换算成字母,文件和目录的权限也换算成字母(分别为 rw-rw-rw- 和 rwxrwxrwx ),减去对应字母即可。
umask | 文件 (rw-rw-rw-) | 目录(rwxrwxrwx) |
---|---|---|
0 0 2 —> -------w- | rw-rw-r- - | rwxrwxr-x |
1 6 6 —> --xrw-rw- | rw------- | rw—x–x |
0 3 3—>----wx-wx | rw-r–r-- | rwxr–r-- |
注意:不是数字相减
测试结果如下:
3. umask 默认权限的修改方法
(1)临时修改 umask 默认权限,重启或重新登录就会失效(开新的终端也不同)
(2)永久修改 umask 默认权限
对于当前用户,在~/.bashrc 中 添加 umask 044 ,重新登录即可更改。
对于所有用户,可以参照如下结果: