【Linux】权限

个人主页~


Linux权限

一、Linux权限的概念

Linux有两种用户,一种是超级用户,也就是我们所说的root用户,它可以在Linux系统下做任何事情不受限制,另一种就是普通用户,它限制了某些可能导致Linux系统风险的行为,牺牲了自由换取了安全,所以我们在学习和工作中一般是用普通用户,超级用户的命令提示符为#,普通用户的为$

如果我们想要切换用户,用以下命令

su [用户名]

su不加用户名即切换到超级用户,输入密码不回显

ctrl+d退回

二、Linux权限管理

1、文件访问者的分类

文件访问者分为文件或文件目录的所有者u(user),文件或文件目录的所有者所在小组的用户g(group),以及其他用户o(others)

其中u很好理解,u就是创建这个文件或者文件目录的人,o也比较好理解,就是除了u和g的其他所有的用户都是o,对于g,我们上学时会分小组,老师布置小组作业并且嘱咐不能抄袭,但既然是小组作业,小组的同学之间对于这份作业是要互相加交流借鉴的,但是这个组以外的其他人是不能看我们的作业的,这里的组就是g,当然这里的其他人就是o

2、文件类型和访问权限

以上是我们在使用ll指令时打印出的我们文件的详细信息,我们一共将它分为10块

第一块也就是第1位为文件类型

第二块也就是2~10位为文件权限

第三块为硬连接数,它表示指向该文件或目录的硬链接的数量,硬链接是一种文件系统机制,多个硬链接可以指向同一个文件,它们共享相同的索引节点和磁盘空间,例如,目录test的硬链接数为 2,意味着有两个不同的文件名指向磁盘上的同一个文件内容,因为test是个空目录,所以可能导致还有一个空目录与test指向了一块空间

第四块为该文件所属用户,也就是u

第五块为该文件所属用户组,也就是g

第六块为该文件大小

第七、八、九块为该文件最新修改日期,对应月、日、时分

第十块为该文件的文件名

(1)文件类型

符号 文件类型
d 文件夹
- 普通文件
l 软连接(类似于Windows快捷方式)
b 块设备文件(硬盘、光驱等)
p 管道文件
c 字符设备文件(屏幕、键盘灯)
s 套接口文件

我们初学者一般懂文件夹d和普通文件-就可以了

这里我们Linux认识文件类型只看前面的第一个符号,不看我们文件的后缀,如果我们不带后缀Linux也是可以识别出该文件是一个普通文件还是一个目录文件,但是,Linux可以识别,不代表在Linux上所安装的软件可以识别,比如说gcc,它就要通过后缀来判定文件是否是c文件,没有后缀无法编译

所以前面的是给Linux看的,后缀的是给Linux上面的软件看的

(2)文件权限

文件权限共9位,按顺序3位一组共3组,第一组为u对于该文件的权限,第二组为g对于该文件的权限,第三组为o对于该文件的权限

每组的第一位都是读权限r,无读权限为-,每组的第二位都是写权限w,无写权限为-,每组的第三位为执行权限x,无执行权限为-

所以只读就可以用r- -来表示,无权限用- - -来表示,可读可写可执行用rwx来表示,每个位置的情况只有有权限和无权限两种情况,即对于第一位读位置来说,只有可读和不可读两种情况,所以我们可以相应的转化为二进制位来表示,所以只读也可以用100来表示,无权限可以用000来表示,可读可写也可以用111来表示

3、文件权限的设置方法

(1)chmod

chmod指令的作用是设置文件的访问权限

chmod [选项] 权限 文件名

只有root用户才能改变文件的权限

选项-R ,递归修改目录文件的权限

chmod命令修改权限有两种方法

①用户表示符+、-、=权限字符
用户表示符 意义
u 拥有者用户
g 拥有者所在小组用户
o 其他用户
a 所有用户
权限字符 意义
+ 向权限范围增加权限代号所表示的权限
- 向权限范围取消权限代号所表示的权限
= 向权限范围赋予权限代号所表示的权限

+的运用

-的运用

=的运用(这里中间忘记输文件名了,不好意思,忽略一下)

②三位八进制数字

前面在文件权限中提到,rwx是可以用三位二进制数来表示的,也就是一位八进制数,共有三组,我们就可以用三位八进制数来表示ugo三位的权限,比如说我将要将test目录调为u全权限,o全权限,g无任何权限,那么对应的二进制数就是u111,g000,o111,换算成八进制数就是u7,g0,o7

(2)chown

chown的作用是修改文件的拥有者

chown [选项] 用户名 文件名

常用选项-R,递归修改该目录下的所有文件或目录的拥有者

上图是因为权限不够,只有root权限可以修改拥有者,我们登陆root账号修改一下


内部文件的拥有者也全部修改了

(3)chgrp

修改文件或目录的所属组

chgrp [参数] 用户组名 文件名

(4)umask

umask指令的功能是查看或修改文件掩码

umask 权限值(这是修改)

umask (这是查看)

新建文件的默认权限为0666,新建目录默认权限为0777

这里文件new.c的权限为0664

目录new的权限为0775

这里实际权限与默认权限不一样的原因就是文件掩码umask

事实上,最终权限 = 起始权限 & (~umask) ,最终权限等于起始权限按位或上umask的取反,

对于文件new.c来说,就是110 110 110 & (~000 000 010)也就是 110 110 110 & 111 111 101,最终等于110 110 100 也就是 0664

对于目录new来说,就是111 111 111 & (~000 000 010)也就是 111 111 111 & 111 111 101,最终等于111 111 101 也就是0775

当umask改为0777,那么创建出的任何文件将没有任何权限

在这里的文件对应的rwx我们都好理解,对于目录文件

r:是否允许我们查看指定目录下的文件内容

w:是否允许我们在当前目录下进行创建更改

x:是否允许用户进入对应的目录

4、粘滞位

粘滞位是给目录设置的,一般是共享目录一个root账户下的普通用户可以在目录中进行各自文件的增删改查,但是只允许文件拥有者或者root可以删这个文件,是一种特殊x权限,用t表示

在云服务器上它自带了一个共享文件夹tmp,它属于root用户所有,除root用户以外的所有用户都无法删掉里面的文件,但是可以对里面的文件进行增删改查,当然里面的文件是可以由文件的所有者删除的,简单来说,当o的权限为rwt时,该目录下的文件只能由三种人删除,一是超级管理员root,二是该目录的所有者,三是该文件的所有者,在互联网公司中,我们程序员一般都会一个或一组人分配一个普通用户,然后技术主管或经理是该共享目录的所有者,老板掌握root用户,以防止有人误删或者故意将文件删除从而导致不可避免的损失

三、sudo提升权限

sudo指令可以短暂的将我们的权限提升至超级用户权限

当我们使用sudo的时候发现,无法提高权限,这是因为我们的账户没有在信任白名单里,我添加了slm账户进入信任白名单,这个账户就可以在需要超级用户权限的时候在指令前面加上sudo指令,短暂提高权限,那么如何将账户添加到信任白名单呢?

我们先把用户切换为root用户,然后在当前我们可以使用nano打开该文件,然后在红框区域我们可以看到有两个用户,一个是root一个是slm,所以我们的slm可以进行sudo提权限,temp就不行,如果要添加新用户进入白名单,第一列是用户名,后面直接对齐抄上就行

这样我们在下载啊或者一些其他需要root权限的时候就可以sudo来解决了,不需要切换用户了


今日分享就到这里了~

相关推荐
V+zmm101342 分钟前
基于微信小程序的医院挂号预约系统ssm+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
m0_7482565611 分钟前
MySQL 实战 4 种将数据同步到ES方案
数据库·mysql·elasticsearch
蚂蚁质量15 分钟前
mysql的测试方案
数据库·mysql
123yhy传奇19 分钟前
【学习总结|DAY034】Maven高级
java·学习·maven
我们的五年33 分钟前
【Linux课程学习】:锁封装(Mutex)线程封装(Thread),this指针
linux·服务器·c语言·c++·学习
fechild34 分钟前
npm和webpack学习
学习·webpack·npm
九河云36 分钟前
分布式数据库中间件(DDM)的使用场景
数据库·分布式·中间件·华为云
Icoolkj1 小时前
微服务学习-Sentinel 限流保护服务
学习·微服务·sentinel
小馋喵知识杂货铺1 小时前
Redis性能测试
数据库·redis·缓存
GIS小小研究僧1 小时前
数据库基础知识:理论、E-R图、事务、原则
数据库·ubuntu·postgresql