Linux用户/权限理解

一、用户/用户切换

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

Linux中的所有用户都要有密码。

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

image-20241209215338692

相当于Windows下的管理员

image-20241209215052917

普通用户:在linux下做有限的事情。

我们自己创建的用户(adduser)

image-20241209215303408

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

切换用户

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su

root(root可以省略),此时系统会提示输入root用户的口令。

身份变化:普通用户变到root 直接用su 依旧是在家目录下

image-20241209215949405

重新登陆root:用 su -

image-20241209220227505

root变成普通用户 不需要输入密码

image-20241209220602446

普通用户之间切换 需要输入密码

image-20241209220750866

给一条指令做提权 后面的一定时间内 给这条指令提权就暂时不需要输入密码了

一开始我们用的普通用户,没有办法执行sudo,系统不信任。

除非将普通用户添加到系统信任白名单中。

image-20241209221723004


二、权限

1.概念

什么叫做权限?

一件事情是否允许被你做

1.权限认证的是身份(权限和“人”有关)

角色权限身份:

1.文件拥有者

image-20241210170844410

2.文件所属组

3.其他人

root和普通用户是具体的人

root和普通用户分别可以是文件拥有者、文件所属组、其他人。

image-20241210170733340


2.权限也和事物“属性”有关

文件属性: 可读、可写、可执行

image-20241210153405246

文件的类型:

windows通过文件的后缀来区别类型 如:.c .txt 等。

Linux系统中文件名后缀没有直接意义。(当然,不代表不用)

image-20241210155829203


gcc是一款编译器(软件),Linux操作系统不需要后缀,不代表Linux系统上运行的其他软件不需要后缀。

image-20241210160132382

image-20241210210950279

-:普通文件 文本、可执行程序、库基本都属于普通文件。

d:目录文件

b:块设备文件 磁盘文件

image-20241210154347112

c:字符设备文件 键盘、显示器文件等。

image-20241210154519151

p:管道文件 用来通信的

……


在Linux中如何看待后缀问题?看用户需求


image-20241210160413870

r:可读

w:可写

x:可执行

-:对应的权限位置,没有权限

image-20241210171853568

image-20241210172146169

如图:三三为一组

第一组(红色)为拥有者权限

第二组(橙色)为所属组权限

第三组(绿色)为其他人权限

image-20241210172430511


r/- w/- x/-

读权限 写权限 执行权限

1.位置的含义是确定的

2.每一个位置只有是或者否,具有指定的权限

image-20241210210837830

拥有者、所属组:

image-20241210174308539

others:

image-20241210174334750

root不受权限约束

image-20241210174606808

将所有权限取消

image-20241210175436444

image-20241210175448298

root依旧不受影响

image-20241210175512070


2.权限修改问题

更改权限的两种人:

1.文件的拥有者

2.root

命令:

a)chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

chmod

① 用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限

用户符号:

u:拥有者

image-20241210201920725

g:拥有者同组用

image-20241210202244951

o:其它用户

image-20241210202306710

a:所有用户

image-20241210202556644

八进制方案修改权限

image-20241210203951268

image-20241210210623328

b)chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

如果是普通用户则需要提权

或者直接用root

image-20241210205206869

不是文件的拥有者了 不可以修改权限 所以要用root

image-20241210205502976

image-20241210205553315

image-20241210205639282

将group修改为可读

image-20241210205830040

image-20241210205913997

c)chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

image-20241210210051213

image-20241210210122560

一次性改拥有者和所属组

image-20241210210254690


3.其他问题

在进行角色认证时,只能选择一个角色认证。

如:既是拥有者又是所属组,那么认证了拥有者之后 不会再认证所属组

lll既是拥有者又是所属组,拥有者身份有读的权限,所属组身份有读和写的权限,但是只认证一组,也就是一个身份,即为拥有者。

image-20241210211744101

将拥有者改成whw 那么lll就是所属组 可读可写

image-20241210212054465

image-20241210212143351


问题1:起始权限问题

为什么我们创建文件的默认权限是我们现在所看到的样子?????????

为什么普通文件权限是664?????

为什么目录文件权限是775??????

image-20241210212520088

1.默认给普通文件的起始权限其实是666

2.默认给目录文件的起始权限其实是777

umask(权限掩码):

凡是在umask中出现的权限,不会在最终的文件权限中出现。

普通文件

起始文件         110 110 110 666

umask             000 000 010 002

最终文件         110 110 100 664


目录文件

起始文件         111 111 111 777

umask             000 000 010 002

最终文件         111 111 101 775

这个计算不是减法

证明:

把umask改成0001

如果是减法:

110 110 110

000 000 001

110 110 101 ->665

image-20241210214804650

但是根据图中所示,图中为666,并不是665

所以这个计算不是减法。


最终权限计算:

最终权限=起始权限&(~umask)

测试:

将文件权限设置为只可以写:

image-20241210215618835

问题2:目录权限问题

读文件权限约束:

读权限不是影响进入目录的权限

读权限是影响查看下面文件列表的内容

image-20241210220353995

读写文件权限约束

image-20241210220712839

目录文件的读和写

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

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

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

可执行权限是影响是否能进入文件的权限

image-20241210221336030

问题3:粘滞位

1.普通用户自己的家目录权限是 700,我在我的家目录创建的文件,别人都看不到!(进都进不去)

image-20241211082338494

image-20241211082401716

2.有时候,我们多个用户想进行文件的共享。

3.一个文件能否被删除,并不由文件本身决定,由这个文件所处的目录决定。

4.我们如果去掉了共享文档的w权限,同时我们也无法创建文件了!

5.粘滞位:给目录设置,一般是共享目录,大家可以在目录中进行各自文件的增删查改,只允许文件的拥有者或者root能删除这个文件,其他人一律不允许删。t是一种特殊的x权限。


根据第一二点 --> 我们所建立的共享文档,不能在任何一个人的家目录下。

实现数据共享:

root在根目录下创建目录 将权限改为777

image-20241211083410000

lll在shared里创建test.txt并写入内容

image-20241211083444795

whw可以看到并读取文件内容

image-20241211083621006

lll把test.txt的权限改为600

image-20241211083911129

whw不能查看也不能写 但是可以删除

image-20241211083954110

whw可以删除的原因:shared对于others来说是可读可写可执行的。

image-20241211084318085

解决方法(不可行版):不能删除的同时,也不能创建文件了。

image-20241211084527758

所以,我们想要所有人都可以创建目录/文件,但是不是自己文件就不可以删。

所以我们需要使用粘滞位。

image-20241211085259675

image-20241211085509258

image-20241211085523075

如果粘滞位需要删除,只能由:

一、超级管理员删除

二、该文件的所有者删除

root不受权限约束。

在根目录下,普通用户不能创建文件/目录

image-20241211090715516

image-20241211090746590

在Linux中,共享文档不需要创建,tmp就是共享文档。(也是唯一有粘滞位的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值