Linux 文件的权限管理

一、文件权限的意义

在系统中每一个文件都有 UID 和 GID,通过文件的 UID 和 GID 将决定文件的访问权限

也就是如果一个进程来访问某个文件

        如果进程的 UID 和文件的 UID 一致,则匹配到的文件的 UID 访问权限

        如果进程的 GID 和文件的 GID 一致,则匹配到的文件的 GID 访问权限

        如果进程 UID 和 GID 都无法匹配文件,则使用其他人身份访问该文件

权限存在的意义

        如果文件没有权限控制,则任意的用户都可以访问文件,那么不管是 root 用户还是普通用户对于系统来说,文件就是透明的,因为所有人都可以使用文件;在业务场景下,如果业务的数据,可以被所有人查看和修改,那么对于系统而言是不安全的

        文件权限存在的意义,是为了保证系统的访问更加安全,系统通过文件的权限来控制用户对系统的访问

文件的权限管理详解

        每一个文件都有一个 UID 和 GID,那么文件的 UID 将其称为文件的拥有人(所有者)【user】;那么文件的 GID 将其称为拥有组【group】;文件还有一类访问权限,如果访问该文件的对象,无法匹配到文件的用有人或者是拥有组,则这一类对象被称为其他人【other】

        在 Linux 系统中进程和程序也有 UID 和 GID,所以系统中是根据 UID 和 GID 来判断访问的权限,而不是根据用户名

优先级

如果一个进程去访问一个文件,访问路径是:

        如果一个进程被用户运行,则该进程继承用户的 UID 和 GID

        此时该进程去访问文件,将会以用户的 UID 和 GID 进行访问

        如果 UID 匹配上了文件的 UID,则适用于 UID 的权限

        如果 GID 匹配上了文件的 GID,则适用于 GID 的权限

        如果 UID 和 GID 都没有匹配成功,则使用其他人权限

查看权限:

ls -l file.txt    查看文件的详细信息  包括文件的权限

-rw-r--r--. 1 root root 0 sep 4 23:41 file.txt

第一栏位:-            表示文件的类型,如果是 - 表示普通文件,如果是 d 表示目录,如果是 i 表示字符文件

第二栏位:rw-        表示的是拥有人的权限

第三栏位:r--          表示的是拥有组的权限

第四栏位:r--          表示的是其他人的权限

第五栏位:           表示的是该文件受到 SELINUX 的保护

第六栏位:          表示的是该文件的硬链接数

第七栏位:root        表示的是该文件的 UID 也就是文件的拥有人

第八栏位:root        表示的是该文件的 GID 也就是文件的拥有组

第九栏位:0            表示的是文件的大小

第十栏位:Sep 4 23:41  表示的是文件最后一次被修改的时间

第十一栏位:file.txt         表示的是文件名

ls -ld dir1    查看目录的详细信息包括目录的权限

不管是拥有人还是拥有组,还是其他人,对于文件的管理都有三类权限:

r                    w                     x                   -

读                   写                   执行                无权限

执行指的是可以将文件像命令一样来执行

rwx 对于文件和目录的意义

类别                r                        w                     x
    

文件        可以查看文件的内容         可以修改文件的内容        文件可以被执行


目录    可以查看目录下的文件和子目录    可以修改目录的内容        可以进入到该目录

PS:注意到 Linux 中一个目录要有意义,至少需要有rx 权限

二、文件权限的修改方式

字符的方式修改:       

UID         简称 u

GID         简称 g

other       简称 o

直接赋权:

chmod u=rwx,g=rwx,o=rwx file / dir

chmod ugo=rwx file/dir

加减赋权:

u+g+o=all=a

chmod u+rw,g+r,o+x file / dir

chmod u-w,g-r.o-x file / dir

chmod ugo+w file / dir

chmod a+rwx file / dir
    
chmod +rw file / dir    给 ugo 加 rx 权限

chmod +w file / dir     仅给 u 加 w 权限

注意生产环境下,建议使用加减赋权,不要使用等于号赋权,因为,等于号赋权会发生权限覆盖,而加减权限是在原来的基础上进行赋权

数字的方式来修改

数字表示:     

r          w          x            

4          2          1

二进制,在计算机世界中 0 表示没有权限 1 表示有权限

r          w          x            二进制转十进制

1          0          0                 4

0          1          0                 2

0          0          1                 1

最大的权限 = 4+2+1 = 7

user:7

group:7

other:7

chmod 777 file / dir

递归批量修改文件的权限

chmod -R 777 /tmp/test    表示 test 目录权限设置为 777 且 test 目录下的子目录和文件也设置为 777 权限

三、修改文件的拥有人和拥有组 

chown zhangsan abc.txt      修改 abc.txt 文件的拥有人为 zhangsan

chgrp it abc.txt            修改 abc.txt 文件的拥有组为 it

chown lisi:itgroup abc.txt  直接指定拥有人和拥有组

chown :ctgroup abc.txt      直接修改拥有组

同时 chgrp 和 chown 都支持 -R 递归修改目录以及目录下的文件和子目录的拥有人和拥有组

文件的拥有人:文件的拥有人可以修改文件的权限

        普通用户可以修改自己文件的权限(仅可以改权限),而 root 用户可以修改所有文件的权限

        普通用户不能修改文件的拥有人,文件的拥有人只有两种来源,第一种是该文件是谁创建,那么谁就是拥有人,第二种是 root 用户指定文件的拥有人(也就是只有 root 才可以执行chown)

        修改文件的拥有组,则该用户,必须是该组的成员, 组可以是附加组或者私有组;文件拥有组的来源,第一种是该文件创建用户的私有组,第二种是 root 指定

你可能感兴趣的:(Linux,linux,运维,服务器,学习方法,笔记,经验分享)