Linux权限

一、Linux中的用户

Linux下有两种用户分别为超级用户(root)、普通用户。

超级用户:可以在Linux系统下做任何事情,不受限制。

普通用户:在Linux系统下做有限的事情。

命令:su 用户名

功能是用来切换用户,从普通用户切换到超级用户系统会提示输入超级用户的密码

二、Linux权限管理

首先先介绍一个指令sudo:它是用来进行指定的短暂提权的,比如进行软件安装时需要管理员root权限,但是第一次使用sudo可能会报错,这是因为我们需要将普通用户添加到一个类似于白名单的文件中叫做sudoers,这里先不进行讲解等我们后面学完vim后再说。

1.权限的介绍

权限=角色+目标权限属性

角色分为拥有者(user)、所属组(group)、other

目标权限属性分为读(r)、写(w)、执行(x)

如上图怎么没有other呢?这是因为other不需要记录,只要不是拥有者和所属组就是other。

上图中-是什么含义呢?r、w、x顺序是固定的如果没有相应的权限相应的位置上就是-,比如拥有者的权限,如果不可读那么就将r替换成-,如果不可写就将w替换成-。

2.文件权限的修改

首先是文件权限属性的修改,我们使用的是chmod指令:

上图是chmod指令的一些使用,我们可以更改u(拥有者)、g(所属组)、o(other)、a(全部)来选择更改相应角色的权限,而+表示增加相应的权限,-表示减少相应的权限。

(1)那么现在有一个问题,任何用户都可以更改权限吗?

显然是不可以的当我切换成普通用户后再对拥有者为root的文件进行修改权限属性时就会报错,这是因为除了root用户或者进行sudo外其他普通用户只能修改自己的文件。

(2)如果没有权限会怎样?

上图中作为一个普通用户,对于text.txt这个文件角色是other,拥有的权限只有写权限因此可以进行写入,但当我查看文件内容的时候就报错了。

(3)确定权限信息的时候,系统会先确定用户是谁?拥有者、所属组还是other

在Centos下,用户角色确定只有一个顺序是:拥有者、所属组、other。

(4)root用户不受权限约束

(5)如何理解可执行?

可执行权限!=文件可执行

此外还有另一种更改方式,我们发现对于读、写、可执行来说都具有是或否,也就是说是两态的,因此可以当作0或1。

因此我们可以使用每一位对应的数来修改拥有者的权限、所属组的权限以及other的权限。

但因为每一位又只有三个二进制位,所以每一位的最大值为7最小值为0。

然后就是角色的修改,我们对拥有者修改使用的是chown,对所属组修改使用的是chgrp,其实可以只使用chown对拥有者跟所属组进行修改。

但是我们发现默认情况下以普通用户的身份是无法将文件给别人,这是合理的,因此想要将文件给别人必须高权限。

上图是仅使用chown指令进行拥有者跟所属组的修改。

三、三个问题

1.目录权限

如果我想要进入一个目录需要什么权限?

是读权限吗?通过上面两幅图可以发现显然不是,所以要进入一个目录必须拥有x权限。

接下来分别介绍一下rwx分别对目录意味着什么,首先是r,如果没有r权限我们就无法查看目录里面的文件,如果没有w,我们就无法在指定目录里新建文件,如果没有x,我们就无法进入这个目录。

结合上面的目录权限我们来谈谈Linux用户之间是如何做到相互"隔离"的?

这是因为对于other来言是没有x权限的,因此用户之间是无法相互进入的。

2.缺省权限

为什么新建立的目录文件跟普通文件的默认权限是这样的?

对于普通文件来说起始权限是666,也就是rw- rw- rw-,对于目录文件来说起始权限是777 默认携带x,但为什么上面图片跟这里所说的不同呢,这是因为系统中默认存在一个叫做权限掩码的东西。

对于一个文件来说,最终权限=起始权限&(~umask)

按照公式计算得出普通文件的权限为110 100 100 也就是对应着上图中my.txt这个普通文件的最终权限。

那么umask的目的是什么呢?希望凡是出现在umask中的权限都不要出现在最终权限中。

为什么要有umask?特殊情况下配置umask,可以控制文件的默认权限,让我们的代码都是可控的。

3.对一个文件没有写的权限,为什么可以删除这个文件?

这是因为一个文件能否被删除,与文件本身无关,与文件所处的目录是否有w权限有关。

相关推荐
云计算老刘2 小时前
6.Nginx 服务器技术手册(CentOS 7 版)
服务器·nginx·centos
Byte不洛2 小时前
基于 C++ 手写 HTTP 服务器:从请求解析到响应构建全流程解析
linux·网络·c++·计算机网络·http
小橙子学AI2 小时前
OpenClaw 定时任务与提醒:打造你的 AI 自动化工作流
运维·人工智能·自动化
DA02212 小时前
Linux设备树,DTS、DTB浅析
linux·c语言·linux驱动
程序猿阿伟2 小时前
《OpenClaw端口通信失效全解:监听修改与防火墙规则落地指南》
服务器·数据库·windows
ONE_SIX_MIX2 小时前
debian13 无显示器的 服务器,开机不自动加载nvidia 驱动的,解决
运维·计算机外设
虾..2 小时前
Linux 五种IO模型
linux·服务器·数据库
一只积极向上的小咸鱼2 小时前
docker exec 命令详解
运维·docker·容器
CDN3602 小时前
中小团队安全方案:360CDN 高防服务器基础配置
运维·服务器·安全