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导致出现危险操作!!!

相关推荐
jieyu11194 小时前
虚拟专用网络
linux·网络
报错小能手5 小时前
linux学习笔记(19)进程间通讯——消息队列
linux·笔记·学习
liujing102329296 小时前
Day14_内核编译&安装
linux
进击的_鹏6 小时前
【Linux】vim的操作大全
linux·编辑器·vim
云动雨颤6 小时前
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
linux·运维·服务器
亮子AI6 小时前
【Ubuntu】清理空间的几种方法
linux·运维·ubuntu
零基础的修炼7 小时前
Linux---进程信号
运维·服务器
Abstracod7 小时前
centos7 安装病毒扫描软件ClamAV
服务器
赵渝强老师7 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes