【linux】权限相关问题

【linux】权限相关问题

一.用户的分类

在我们使用linux的时候,有用户类型的区分,不同用户有不同的权限

分为:
root用户 :不受权限约束
普通用户:受权限约束

这个大家应该都知道,因为平常使用的时候就已经接触过了。

相比于windows中的管理员身份

linux中的root用户可以说是无所不能 ,安装软件,添加用户权限,删除,查看,执行其他用户的文件 ,甚至rm -rf 整个系统都能做到。

所以root用户可以说是超级用户

而普通用户能做到只能对自己的文件进行删除,查看和删除,可以说只能做自己本分内的事情

那有什么办法可以让普通用户借到超级用户的权力呢?

sudo

相必大家在刷段子的时候应该经常看到删库跑路的代码:sudo rm-rf

sudo的意思就是以root的身份执行这个代码

但是当我们对新建用户使用sudo时会发现

这里会提醒你输入本用户密码。

输入完成后
会提示test不在sudoers的文件中

这个文件可以说是root的信任用户名单:
允许使用sudo的名单

新建用户肯定不在信任的环境中了。

所以我们接下来需要将test用户添加至sudoer的名单中

我们需要切换为root账号。

输入

bash 复制代码
vim /etc/sudoers

对sudoers进行编辑

进入这个界面后,我们随便找个地方进行添加

bash 复制代码
test    ALL=(ALL)       ALL

这句话即可。

输入完后
使用:!wq指令进行强行退出

这这样你就会发现

这个指令顺利执行完成了。

二.文件执行的权限

这个部分只要是讲文件的执行权限了。

这里先思考一个问题

要是老板有一个机密文件,一个普通员工能不能去随便翻看

答案肯定是不行的

为什么?

如果是老板能不能进行翻看,可以,因为他是老板

如果这个不是机密文件,只是个员工名单那普通员工能不能进行查看,可以,因为文件很普通

这里我们能得出,一个文件的权限由人和文件本身决定

这里我们就随便拿linux中的一个文件

分别解释这个文件的前面一大句话

i. 文件的分类

首先是这第一个杠

没错就是这第一个杠,第一个杠就代表了这个文件的属性

代表了这个test.cpp是普通文件

具体还有

- :普通文件 文件 可执行程序 库
d:目录文件
b:块设备文件 : 磁盘
c:字符设备文件: 键盘显示器文件
p:管道文件: 用来进行通信

相信用了这么久的linux大家相比都听过linux中一切都是文件
所以后缀没有意义

那为什么要有后缀呢?

想想本来设计这个就是给用户使用的,
所以是为了迎合用户需求。

知道了第一个是干嘛用的之后,那之后的字母代表了什么意思。

其实是代表了文件的权限
r:可读
w:可写
x:可执行(图中没有)
-:对应权限位置没有权限

不同文件的类型具有不同的功能
某些文件,无法进行执行,只能读和写

所以这就对应了不同类型的文件权限不同。

ii.''人''的分类

我们知道了这个字母对应不同的权限,
但是为什么会重复这么多回

其实对应了三种访问者的身份

用户很好理解,就是用户本人

所在组可以认为是工作组

因为以后肯定是用linux进行合作开发,所以有组的划分

其他人可以认为是其他访问用户

这就对应了三种身份有着不同的权限

三.修改创建文件的权限

chmod

还是这个文件

如果我们想给每个用户的权限都去掉的话,可以输入:

bash 复制代码
chmod u-wrx,g-wrx,o-wrx test.cpp

结果:

(添加的话换成+即可)

其中:
u-用户
g-所在组
o-其他人

还可以用数字设置权限

还是拿这个test.cpp举例子

bash 复制代码
chmod 624 test.cpp

结果

这个结果可能有点难理解。

但是其实就是二进制

将数字转化为二进制数

这里我们就能发现权限一一对应了。

所以每一个数字都代表对应用户的权限设定,所以只要输入三个数字就可以了

更改文件创造的默认权限(umask)

按道理来讲,默认创建文件的权限为666。

可以用umask来进行修改默认权限

可以通过

bash 复制代码
umask 042

进行设置

为现在创建文件的权限结果。

这里就直接介绍运算过程了
最终权限=(默认权限) & (~umask)


对umask进行取反

进行异或得到结果

这里就发现结果相同了

三.删除(粘滞位)

一个文件能不能删除,不是取决于文件本身,而是所在的目录
所以将目录设置为不可写,就无法进行删除

在合作开发中,我们常会遇到合作开发,就会在共享文件夹中进行编程。

在共享文件中,如果想要防止别人随意删除自己的文件。
将目录设置为不可写,那所有人都不能对自己的文件进行删除和修改,所以这个方案非常不现实

所以要引入新的权限位
粘滞位

给目录设置,在共享文件中允许大家对各自文件增删查改,不允许别人删除,一种特殊的x权限

添加方法为

bash 复制代码
chmod o+t

这里就能发现 o的最后一个权限位置加了t

这样用户在共享文件夹中,只能本用户进行删除,不能被其他用户随意删除了。

相关推荐
Agent产品评测局5 分钟前
企业数据处理自动化落地,抓取分析全流程实现方案 —— 2026企业级智能体选型与技术路径深度解析
运维·人工智能·ai·自动化
autumn20057 分钟前
Flutter 框架跨平台鸿蒙开发 - 历史人物对话
服务器·flutter·华为·harmonyos
爱莉希雅&&&29 分钟前
linux中MySQL数据库备份恢复的四种方法(更新中)
linux·数据库·mysql·数据库备份·mysqldumper
我科绝伦(Huanhuan Zhou)40 分钟前
分享一个网络智能运维系统
运维·网络
鬼先生_sir42 分钟前
Spring Cloud 微服务监控实战:SkyWalking + Prometheus+Grafana 全栈解决方案
运维·spring cloud·grafana·prometheus·skywalking
信创DevOps先锋1 小时前
DevOps工具链选型新趋势:本土化适配与安全可控成企业核心诉求
运维·安全·devops
coppher1 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
xyz5991 小时前
如何在 WSL 中删除指定版本的 Ubuntu 以及安装
linux·运维·ubuntu
linux修理工1 小时前
Claude code与CC-switch安装使用
运维·人工智能
小叶lr1 小时前
jenkins打包前端样式丢失/与本地不一致问题
运维·前端·jenkins