Linux中权限系统

目录

简介:

文件和文件目录的权限:

[ls -l 结果解析:](#ls -l 结果解析:)

修改文件权限:

数字法:

字母法:

命令chown:

命令su

[su和su - :](#su和su - :)

详细对比

环境变量:

什么是环境变量??

环境变量举例:

什么叫环境变量不纯净??

举个危险的例子:

重要总结!!:


简介:

权限是对文件和文件目录之间的一套管理规则

这种规则决定了不同角色可以对文件做什么事情


文件和文件目录的权限:

文件:

r:读权限,用类似cat命令去查看文件时需要该权限

w:写权限,使用vim进行编辑,删除时需要用到该权限

x:执行权限,将文件交给内核处理并运行文件中的内容

r--:只具有读权限,可以通过vim往里面写但是,:wq不能保存退出,:wq!可以强制保存

退出

-w-:只具有写权限,但是在这个状态不能从vim写,

因为你使用vim写时必须先要读取文件里的数据

可以使用echo加重定向往文件写内容

--x:不能读不能写,不能执行,因为你要执行文件里的内容,也得先知道文件里的内容,也

就是得先读取文件里的内容

文件目录(和文件权限有点不同):

r:读权限,类似通过ls查看(不能ls -l)目录下的文件名需要用到这个权限。

w:写权限,就是对目录内的的东西操作,比如创建删除等对文件的操作

x:执行权限,cd进目录需要该权限,ls -l也需要该权限

r--:只有读权限,不能cd进目录,也不能ls -l(需要x),可以ls -ld查看目录信息

-w-:只有写权限,不能ls ,可以touch 路径创建文件,但是还是不能cd

--x:只有执行权限,只可以cd进目录,ls,ll,touch,rm都不行


ls -l 结果解析:

例如:查看文件test1

现在对结果一列一列说:

-:

这个位置代表文件类型:

-:代表普通文件

d:目录文件

l:链接文件

b:block块设备文件,提供带缓冲的随机访问,按照快数据访问

c:字符设备文件,提供无缓冲的串行输入输出,一次处理一个字符

s:套接字文件,进程间的通信文件

p:命名管道,先进先出的特殊文件,用于进程间的通信

后面的九列分为三个部分:

rw-:这个代表文件所属用户的权限,

r--:这个代表文件所属组的权限

r--:这个是其他用户对该文件拥有的权限

.:这个点是特殊权限符。

1:这个是共享文件数量,硬链接数量

root:文件所属用户

root:文件所属组

0:这代表文件的大小

oct...:代表更改文件的时间

test1:文件名


修改文件权限:

命令: chmod

数字法:

chmod 数字 文件名

数字如何确定权限?现在来举个例子:

1.rw- r-- r-- (有权限就是1,没有权限-就是0) 转化位二进制:110 100 100

2.再将二进制三组每一组都化为10 进制,就是 6 4 4

3.所有设置rw- r-- r--就是 chmod 644 test1

如图设置test权限为rwxr-xr-x

字母法:

首先要明白

u代表第一段权限(用户)

g代表第二段权限(组)

o代表第三段权限(其他用户)

案例:

如图语法,等号后面有什莫权限就在对应的部分增加权限,

如果等号后面啥都不写,则对应段权限为---

比如

本来是rwxr-xr--,使用了chmod o= test 变成了rwxr-x---

当然还有第二中比较方便:

列出原本权限:

u用户对应的权限是rw-,现在为他增加一个x权限

chmod u+x test1

去掉则是:

chmod u-x test1


命令chown:

复制代码
chown student:studentGroup test1

命令su

su - 用户名(完全切换或者登录式切换)

su 用户名(不完全切换或者是非登录切换)


su和su - :

详细对比

特性 su (不完全切换) su - (完全切换)
全称 Substitute User (替代用户) Substitute User Login (以登录方式替代用户)
环境变量 继承 了当前用户的环境变量。 完全重置 为目标用户的环境变量。
工作目录 保持在当前目录。 切换 到目标用户的家目录。
Shell 模式 非登录 Shell。 登录 Shell。
读取的配置文件 通常只读取 ~/.bashrc 会读取目标用户的所有登录配置文件,如: - /etc/profile - ~/.bash_profile - ~/.bash_login - ~/.profile
体验 像是"借用"了目标用户的身份,但还穿着旧用户的"工作服和环境"。 像是 完全重新登录 到目标用户的账户,拥有一个全新的会话。

以以下的代码为例:

bash 复制代码
[zhangsan@server ~]$ su
密码: 
[root@server zhangsan]# pwd      # 注意:目录没变,还在 /home/zhangsan
/home/zhangsan

就是zhangsan想用root用户的权限,在自己的目录下做一些事情。

注:意思zhangsan希望以root用户的身份 ,但保持当前的工作目录和环境变量,来执行操作。

环境变量还是zhangsan的

但是一般使用:

bash 复制代码
su - root #进入root用户
cd /home/zhangsan

因为直接su有风险,导致环境变量不纯净


环境变量:

什么是环境变量??

环境变量就像是程序的身份证和工作证

  • 我是谁? (USER=zhangsan)

  • 我在哪? (PWD=/home/zhangsan)

  • 我该去哪找工具? (PATH=...)

  • 我该说什么语言? (LANG=zh_CN.UTF-8)

环境变量举例:

bash 复制代码
$ echo $USER    # 当前用户名
zhangsan
$ echo $HOME    # 家目录位置
/home/zhangsan
$ echo $PATH    # 命令搜索路径
/usr/local/bin:/usr/bin:/bin
$ echo $PWD     # 当前目录
/home/zhangsan

什么叫环境变量不纯净??

场景再现:

bash 复制代码
# zhangsan用户的环境
[zhangsan@server ~]$ echo $PATH
/home/zhangsan/.local/bin:/usr/local/bin:/usr/bin:/bin

# 使用 su 切换到root
[zhangsan@server ~]$ su
密码:
[root@server zhangsan]# echo $PATH
/home/zhangsan/.local/bin:/usr/local/bin:/usr/bin:/bin  # 看!还是zhangsan的PATH!

不纯净就是:身份是root但是环境还是zhangsan的

举个危险的例子:

zhangsan是恶意用户他在自己目录下放了

bash 复制代码
/home/zhangsan/.local/bin/ls   # 这是个恶意程序!

现在root用户执行ls会先把在zhangsan的环境下寻找

bash 复制代码
# 使用 su(不纯净环境)
[root@server zhangsan]# ls   # 系统会先搜索 /home/zhangsan/.local/bin/ls
# 💥 中招!root执行了恶意程序!

重要总结!!:

zhangsan恶意用户写的这个/home/zhangsan/.local/bin/ls,这个ls根本是假的ls,他的作用以及不

是查询了,而是其他恶意操作名字叫ls

但是root还是会去找这个假的ls导致出现危险操作!!!

相关推荐
骑上单车去旅行4 小时前
MD5校验对比脚本
linux·服务器·windows
平生幻4 小时前
Linux 常用命令
linux
期待着20134 小时前
docker 安装 ,在centos7.9
运维·docker·容器
踏月的造梦星球5 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
MXsoft6185 小时前
平台化是智能运维发展的必然趋势吗?
运维
ShirleyWang0126 小时前
让headlamp控制台能访问
linux·服务器·python·k8s·k3s
liuccn6 小时前
Linux 存储系统:LVM 与直接分区
linux·运维
捷配链6 小时前
六层服务器板行业材料与工艺标准化选型指南
服务器·制造·pcb
xexpertS8 小时前
CI/CD 熔断机制:如何通过编排级熔断器提升开发者效率
java·linux·运维
xuefeiniao8 小时前
CentOS + 宝塔服务器偶发 SSH、面板、网站全部无法访问排查记录(PHP-FPM 内存耗尽案例)
服务器·centos·ssh·php