1、Linux权限介绍
权限管理,其实就是指对不同的用户,设置不同的文件访问权限。
Linux 系统,最常见的文件权限有 3 种,即对文件的读(用 r 表示)、写(用 w 表示)和执行(用 x 表示,针对可执行文件或目录)权限。在 Linux 系统中,每个文件都明确规定了不同身份用户的访问权限,通过 ls -al
命令即可看到。
可以看到,每行的第一列表示的就是各文件针对不同用户设定的权限,一共 11 位,但第 1 位用于表示文件的具体类型,最后一位此文件受 SELinux 的安全规则管理。因此,为文件设定不同用户的读、写和执行权限,仅涉及到 9 位字符。
-
文件类型
标识 含义 - 普通文件 d 目录文件(文件夹) p 管道文件(通信作用的文件) l 链接文件(软连接,快速找到文件) b 块设备文件(如磁盘,磁盘叫块设备,因为存储是以块为基本单位的) c 字符设备文件(如键盘,显示器 , 按字节字符顺序显示,输入) s 套接字文件
Linux 将访问文件的用户分为 3 类,分别是文件的所有者,所属组(也就是文件所属的群组)以及其他人。
-
文件和目录的三种权限对比
在Linux中,任何文件或者目录都有三种权限:读(Read)、写(Write)、执行(Execute)
文件 目录 Read 可以读取、查看文件的内容,比如: cat、more、less、head、tail
等可以读取、查看目录下边的内容,比如: ls
等Write 可以修改文件的内容,比如: vi
或者vim
等可以修改目录中的内容,创建子目录、删除子目录、创建文件、删除文件、重命名文件或者目录 Execute 如果该文件是可执行文件(.sh),可以直接运行,比如: ./xxx.sh
可以进去该目录,比如: cd
等
2、修改文件或者目录的所属组
使用chgrp
命令用于修改文件(或目录)的所属组。其基本格式为:
[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)
# -R(注意是大写)选项作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。
3、修改文件或者目录的所有者和所属组
chown
命令,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。
当只需要修改所有者时,可使用如下 chown 命令的基本格式:
[root@localhost ~]# chown [-R] 所有者 文件或目录
# -R(注意大写)选项表示连同子目录中的所有文件,都更改所有者。
如果需要同时更改所有者和所属组,chown 命令的基本格式为:
[root@localhost ~]# chown [-R] 所有者:所属组 文件或目录
当然,chown 命令也支持单纯的修改文件或目录的所属组,例如 chown :group test.txt
就表示修改 test.txt 文件的所属组(修改所属组通常使用 chgrp
命令)。
4、修改文件或者目录的权限
通过 chmod
命令可以修改文件或则目录的权限。chmod
命令设定文件权限的方式有 2 种,分别可以使用数字或者符号来进行权限的变更。
-
chmod
命令使用字母修改文件或目录权限既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用
u、g、o
分别代表 3 种身份,其中u
表示所有者,g
表示所属组,o
表示其他人,还用a
表示全部的身份(all 的缩写)。用+、-、=
分别表示给指定的用户增加、减少、设置对应的权限。使用字母修改文件权限的 chmod 命令,其基本格式如图所示
[root@localhoat ~]# chmod u=rxw,go=rx test # 设定test文件的权限为 rwxr-xr-x [root@localhoat ~]# chmod g-w,o+w test # 对于test文件,给所属组减少写权限,给其他人添加写权限
-
chmod
命令使用数字修改文件或目录权限Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:
r -> 4(22)、w -> 2(21)、x -> 1(20)
由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。
以rwxrw-r-x 为例,所有者、所属组和其他人分别对应的权限值为:
所有者:rwx = 4+2+1 = 7 所属组:rw- = 4+2 = 6 其他人:r-x = 4+1 = 5
所以,此权限对应的权限值就是 765
使用数字修改文件权限的 chmod 命令基本格式为:
[root@localhost ~]# chmod [-R] 权限值 文件名 # -R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。