Linux权限

Linux权限的概念

什么叫做权限呢?

那么我们能不能从生活中找一些例子,一些熟悉的场景呢?比如说,你是一个腾讯视频网站所对应的一个普通用户,想看vip的电影,就是看不了,你要是vip,你就能看,你不是vip你就看不了。再比如说,你是个学生,在自习期间你不想在教室上晚自习,你想去老师办公室上晚自习,可不可以呢?这是不被允许的。所以权限,我们可以理解为:一件事情是否允许被你做。

权限是跟我们对应人的角色有关。现实生活中我们所约束的是对应的角色,还有就是要有相对应得事务属性,比如校长办公室是给来办公的,而你想要去校长办公室去吃饭,那当然是不合理的,校长办公室不是餐厅,没有给其他角色吃饭这个事务属性。

Linux下有两种用户:

一种是root(超级管理员):可以在linux系统下做任何事情,不受任何权限限制。

另一种是普通用户:受权限约束的一批用户。

其实在windows系统里面我们也有这种类似的权限的概念,我们平常进行一些操作的时候,打开一些文件其实也是受权限约束的,当然我们也有提升权限的操作

Linux权限_第1张图片

像这里就有一个以管理员身份运行,以此来提升权限。

那么在我们的linux系统下是可以进行用户切换的。下面我们来看看这个操作是怎么做的。

普通用户切root超管命令:

su  

Password: 这里输入root对应的密码

Linux权限_第2张图片

如果我们当前用户是普通用户账号想要切换成root账号的话,我们可以通过使用su [root] (root可以省略)命令,然后回车,会让我们输入密码,密码是root账号的密码,当我们输入正确的时候他就会如上图所示。

注意到一个细节会发现,原本普通用户的命令提示符是'$',切成root超级管理员之后,命令提示符变成了 '#'。

还有一条命令也可以切换到root用户

su -

Linux权限_第3张图片

那么这里su 命令和su - 命令有什么区别呢?

区别就是:su : 单纯的账号切换

                 su - : 让root账号重新登陆

如果我们又想切回普通用户,那么我们需要输入命令 su user(这个是普通用户的用户名,因为我目前使用的是腾讯的云服务器,所以一台机器可能有多个普通用户的账号,所以需要确定切换成哪个普通用户)。

root用户切普通用户命令:

su user

Linux权限_第4张图片

此时我们就切换到了普通用户

当然,如果你一开始就是从普通用户切换到的超级管理员root账号,也可以通过ctrl +d直接退出就会直接回到普通账号了。

有的时候呢,我们有可能仅仅只是想要借助一下权限对几条指令进行提权,并不需要切换账号这么麻烦,而且不可能一个root账号的密码人人都知道,谁能保证群众中没有坏人呢,对吧。所以我们就可以通过sudo命令对一些指令进行提权。

下面我们对sudo进行一定的了解

1.在linux中,sudo全称“super user do”,意思为“干超级用户才能干的事”,是一个系统权限管理命令,可以让非root的用户运行只有root才有权限执行的命令,语法“sudo [选项] [-u 新使用者账号] 要执行的命令”。

2.相对于使用 su 命令还需要新切换用户的密码,sudo 命令的运行只需要知道自己的密码即可,甚至于,我们可以通过手动修改 sudo 的配置文件,使其无需任何密码即可运行。

是不是每一个新创建的用户都可以使用sudo提升命令的权限呢?如果不是那么哪些用户可以使用此命令呢?

1.要想使一个用户具有使用sudo的能力,需要让root用户将其名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息注册到/etc/sudoers文件中,即完成对该用户的授权(此时该用户称为“sudoer”)才可以。

2.当一般用户执行特殊权限时,在命令前加上 sudo,此时系统会让你输入密码以确认终端机前操作的是你本人,确认后系统会将该命令的进程以超级用户的权限运行。

3.在一定的时间段内,再次执行sudo的命令时不再询问密码,超出此时间段(一般为5分钟)后需要再次输入密码。

Linux权限管理

linux中的权限是伴生文件的!我们上面举的例子说到了跟权限有关的是角色和属性,linux的文件也有相对于的角色和文件属性。文件属性有r(读),w(写),x(可执行)。角色所对应的有:拥有者,所属组,other。

Linux权限_第5张图片

上面我们介绍的普通用户和root用户都是用来承担这三种角色的,每个用户对所对应的一个文件,有一个自己对应的角色。

这里所谓的所属组是什么意思呢?

其实就像我们平常在学校里面有一些课程需要我们分组进行完成,学习小组啊这些,都会选一个组长出来进行管理,这是我们生活中的例子。

特殊情况:一个组可以只有一个人;

                一个组内可以有很多人,用组长的名字来对组进行命名;

为什么要有所属组?

文件的所有者可以拥有文件的完全控制权限,但是有时候我们需要将文件的某些权限授予其他用户,而不需要授予文件所有者。这时候,我们可以将文件的所有者设置为某个组,然后将该组的成员添加到该组中,这样该组的成员就可以拥有该文件的某些权限。

例如,假设我们有一个名为"mygroup"的组,我们需要将一个文件的某些权限授予该组的成员。我们可以将该文件的所属组设置为"mygroup",然后将该组的成员添加到该组中,这样该组的成员就可以访问该文件,并且拥有与文件所有者相同的权限。

这种机制可以让我们在不授予文件所有者权限的情况下,授予其他用户一些权限,同时保持文件的安全性和稳定性。 

前面我们都说了有这三种角色,拥有者和所属组都有了,那么为什么我们没有看到other呢?

其实,没必要在文件中去显示other,因为我们的文件除了拥有者和所属组以外的其他人就是other.

Linux权限_第6张图片

这里的第一列的第一个字符是表示什么意思呢?

第一列第一个字符表示的是文件类型,是用来区分文件类型的。

-:源代码,可执行程序,库等。

d:目录文件

c:字符设备文件

b:块设备文件

l:链接文件

p:管道文件

在我们的windows中,区分文件是通过文件的后缀来区分的,而linux区分文件类型与文件后缀无关

,与文件后缀无关并不代表我们不用文件后缀。

linux区分文件类型与后缀无关,那和什么有关呢?

与文件是否具有可执行权限有关。

既然文件后缀与文件类型无关,那文件后缀有什么意义呢?

Linux权限_第7张图片

那么如果我们要修改权限该如何修改呢?

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”表示不具有该项权限

假设我想给一个test.txt文件的other加上w权限

Linux权限_第8张图片

通过使用命令

chmod o+w test.txt

我们发现test.txt文件的other权限变成了rw-
文件权限值的表示方法

Linux权限_第9张图片

 Linux权限_第10张图片

文件访问权限的相关设置方法

a)chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号: 
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

实例:

# chmod u+w test.txt
# chmod o-x test.txt

②三位8进制数字

实例:

# chmod 660 test.txt
# chmod 520 test.txt

b)chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:

# chown user1 f1
# chown -R user1 filegroup1


c)chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
实例:

chgrp users /abc/f2

d)umask

功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用
户默认为0002。

实例:

# umask 755
# umask //查看
# umask 044//设置

file指令:
功能说明:辨识文件类型。
语法:file [选项] 文件或目录...
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。

目录的权限

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 

为了解决这个不科学的问题, Linux引入了粘滞位的概念

粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由


一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

Linux权限总结

目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档

你可能感兴趣的:(linux,运维,服务器)