0
点赞
收藏
分享

微信扫一扫

【Linux】Linux权限管理

妖妖妈 2022-12-26 阅读 169

目录

一.Linux用户权限

1.权限的概念

人:一件事情是否允许被谁“做”,比如:我只能登录我自己的游戏账号,并对其进行操作,我没有权限去登录别人的游戏账号。我没有爱奇艺VIP,爱奇艺上的部分电影我就无法观看。

事物属性:访问的对象是否有这种“属性”权限,比如:爱奇艺只能用来看视频,无法用来打游戏。

2.用户分类

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

在这里插入图片描述

3.切换用户

语法: su [用户名]

功能: 切换用户

  • 从root用户切换到普通用户user,直接切换
[root@VM-16-5-centos ~]# su YX
[YX@VM-16-5-centos root]$
  • 从普通用户切换到root用户,需要输入root的密码
[root@VM-16-5-centos ~]# su YX
[YX@VM-16-5-centos root]$ su    //或su root,root可以省略
Password:                       //输入root的密码
[root@VM-16-5-centos ~]# 

与超级用户切换到普通用户不同,普通用户切换到超级用户共有两种方式:

su
在这里插入图片描述

  • 所在位置不变,用户身份发生改变

su -
在这里插入图片描述

  • 切换用户后,超级用户来到root的家目录

  • 可以使用Ctrl + d退出当前用户

4.sudo提权

使用普通用户时很多事情因为权限不够,我们是无法执行的。

  • 如下操作,我们对test.c文件进行减权,使其在普通用户下无法查看

在这里插入图片描述
我们上面讲了,Linux下root可以做任何事不受约束,这时我们可以使用sudo进行提权,使普通用户暂时有root用户的权力,可以查看该文件。

在这里插入图片描述
由上图可以看出,使用sudo后输入的是当前普通用户的密码,那我是不是可以在普通用户上用sudo胡作非为呢?
所以sudo需要用户自己配置,否则无法在普通用户中使用。

  • sudo的存活期为5分钟,输入一次密码后,五分钟内不用再次输入。

sudo需要配置后方可使用,若是没有配置可以去搜索以下相关的文章,这个并不难。

二.Linux文件权限

1.文件属性

每当我们使用ls -l去查看目录下的文件时,给出的结果如下图:
在这里插入图片描述
现在我们就来看看它们每一行所代表的意义:
在这里插入图片描述
而我们也就是围绕着这一张图来探讨文件的权限:

2.文件类型

如上图,每一行的第一个字母为 文件类型
Linux下不用文件后缀区分文件类型,而是用文件属性中第一列的第一个字符来区分文件类型

一般被分为以下几类:

如下图证明,我们修改a.out的后缀,它依然可以运行,证明Linux下文件类型与后缀无关。
在这里插入图片描述
但这里我们要注意一点,当我们修改test.c的后缀再运行时,就会报错。
在这里插入图片描述
我们要清楚,Linux下确实不用后缀区分文件,但是gcc是一个软件,它需要用后缀来区分文件

Linux中文件后缀的理解:

  1. 文件后缀是给用户看到,让用户明白文件是什么类型。
  2. 将后缀看作文件名的一部分。

3.文件角色划分

在这里插入图片描述
由这张图,我们清楚的看到,文件类型后,将文件的权限分为三份,对应着三种不同的访问者。

由图片中的所属用户和所属用户组可以看出,在Linux当中文件或目录一定有拥有者所属组

如下图,一个公司要开发一个项目,而这个公司只有一台Linux电脑,现在要将给A组和B组分别完成。
在这里插入图片描述

所以Linux需要使用所属组的概念,让文件的拥有者对其组内成员开发权限,使组内成员可以看到文件的内容,而其他人在拥有者不开放other权限的情况下无法查看。这就使得权限更加安全。

用户:root和普通用户
角色:拥有者、所属组和other

4.基本权限

在这里插入图片描述
依然是这张图,我们可以看到一个文件所对应的三个角色,使用4个字母将文件不同角色的权限划分。

这四个字母对应的意义如下:

  • 我们在来看图片中不同角色对应的权限:
  1. 拥有者:rwx,有读、写、执行权限
  2. 所属组:r-w,有读和执行权限,没有写权限
  3. other:r-w,有读和执行权限,没有写权限

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

1.chmod

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

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

常用选项:

chmod命令权限值的格式:

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

实例:

[YX@VM-16-5-centos lesson3]$ ll
total 4
drwxrwxr-x 2 YX YX 4096 Nov 22 15:15 mydir        //拥有者权限读、写、执行都有
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c
[YX@VM-16-5-centos lesson3]$ chmod u-x mydir      //将mydir目录的拥有者减去执行权限
[YX@VM-16-5-centos lesson3]$ ll
total 4
drw-rwxr-x 2 YX YX 4096 Nov 22 15:15 mydir
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c     //拥有者只有读和写权限
[YX@VM-16-5-centos lesson3]$ chmod u=x mydir      //使拥有者只有执行权限
[YX@VM-16-5-centos lesson3]$ ll
total 4
d--xrwxr-x 2 YX YX 4096 Nov 22 15:15 mydir        //拥有者只有执行权限
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c
[YX@VM-16-5-centos lesson3]$ chmod u+w mydir      //给拥有者增加写权限
[YX@VM-16-5-centos lesson3]$ ll
total 4
d-wxrwxr-x 2 YX YX 4096 Nov 22 15:15 mydir        //拥有者有写和执行权限
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c
  • 所属组和other操作和拥有者相同,但注意必须在文件所对应的拥有者所在的用户或root用户下执行
[YX@VM-16-5-centos lesson3]$ ll
total 12
drwxrw-rw- 2 YX YX 4096 Nov 22 15:15 mydir
-rw-rw-rw- 1 YX YX   13 Dec  9 14:40 myfile.c
-rw-rw-r-- 1 YX YX   27 Dec  9 14:46 test.txt
[YX@VM-16-5-centos lesson3]$ chmod u-x,g+x,o+x mydir    //使mydir目录中拥有者无执行权限,所属组增加执行权限,other增加执行权限
[YX@VM-16-5-centos lesson3]$ ll
total 12
drw-rwxrwx 2 YX YX 4096 Nov 22 15:15 mydir
-rw-rw-rw- 1 YX YX   13 Dec  9 14:40 myfile.c
-rw-rw-r-- 1 YX YX   27 Dec  9 14:46 test.txt
  1. 三位8进制数字

如下表,
r权限值为:4
w权限值为:2
x权限值为:1

权限符号(读写执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
0000

拥有者、所属组、other:按此顺序分别对应一个八进制数字,由三个八进制数组成三个角色的权限。

举例:

实例:

[YX@VM-16-5-centos lesson3]$ ll
total 4
d-wxrwxr-x 2 YX YX 4096 Nov 22 15:15 mydir
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c
[YX@VM-16-5-centos lesson3]$ chmod 666 mydir   //使该文件三个角色都有读和写,无执行权限
[YX@VM-16-5-centos lesson3]$ ll
total 4
drw-rw-rw- 2 YX YX 4096 Nov 22 15:15 mydir    //该文件三个角色都有读和写,无执行权限
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c
[YX@VM-16-5-centos lesson3]$ chmod 766 mydir  //使该文件拥有者有读、写、执行权限,所属组有读写权限,other有读写权限
[YX@VM-16-5-centos lesson3]$ ll
total 4
drwxrw-rw- 2 YX YX 4096 Nov 22 15:15 mydir   //该文件拥有者有读、写、执行权限,所属组有读写权限,other有读写权限
-rw-rw-r-- 1 YX YX    0 Nov 22 15:14 myfile.c

2.chown

功能: 修改文件的拥有者

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

实例:

[YX@VM-16-5-centos lesson3]$ ll
total 12
drwxrw-rw- 2 YX YX 4096 Nov 22 15:15 mydir
-rw-rw-rw- 1 YX YX   13 Dec  9 14:40 myfile.c
-rw-rw-r-- 1 YX YX   27 Dec  9 14:46 test.txt        //test.txt拥有者原为YX
[YX@VM-16-5-centos lesson3]$ chown root test.txt     //将test.txt文件拥有者改为root
chown: changing ownership of ‘test.txt’: Operation not permitted
  • 由最后一行可知,修改文件拥有者这个操作不被允许

  • 我们想将一个东西给别人,一定要别人同意后,我们才能给,要不给别人的是好处还好,要是口黑锅就说不过去了。

  • 将文件的拥有者改为别人,需要有别人的允许——但现有条件不允许这样做,普通用户也没有这个权限,我们只能强制执行,而LInux中可以这样做的只有root

sudo chown root test.txt    //使用sudo提权后操作
  • 即改变拥有者又改变所属组(扩展)
//sudo chown 用户:所属组 文件名
sudo chown root:root test.txt 

3.charp

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

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

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

实例:

  • 改变所属组和改变拥有者相同,都需要使用root用户权限完成

在这里插入图片描述
将目录mydir的所属组改为root

4.file

功能: 辨识文件类型

语法: file [选项] 文件或目录…

常用选项:

实例:

在这里插入图片描述

在这里插入图片描述

5.权限拒绝

如下,将myfile.c中三个角色的所有权限都关闭

[YX@VM-16-5-centos lesson3]$ chmod 000 myfile.c 
[YX@VM-16-5-centos lesson3]$ ll
total 4
drwxrw-rw- 2 YX YX 4096 Nov 22 15:15 mydir
---------- 1 YX YX    0 Nov 22 15:14 myfile.c
[YX@VM-16-5-centos lesson3]$ cat myfile.c 
cat: myfile.c: Permission denied

看最后一行,myfile.c的所有权限都是关闭的,无法对其进行读、写、执行操作

[root@VM-16-5-centos lesson3]# ll
total 8
drwxrw-rw- 2 YX YX 4096 Nov 22 15:15 mydir
---------- 1 YX YX   13 Dec  9 14:40 myfile.c
[root@VM-16-5-centos lesson3]# cat myfile.c 
hello world!

而root用户可以无视权限限制

四.默认权限

在这里插入图片描述

  • 如上图,为什么我们创建的普通文件(不包括可执行),为什么默认权限是从664开始的,为什么目录的默认权限是775开始的

默认权限的诞生可以分为三部分:

  • 权限掩码的作用:在起始权限中去掉在umask中出现的权限(去掉即为取反),不能影响其他任何权限,最后得到最终权限

  • 权限掩码可以通过umask指令查看:
    在这里插入图片描述
    权限掩码为002,最高位的0忽略不计。

普通文件的起始权限为 666 ,权限掩码为002,最终权限的计算公式为:起始权限 & (~umask)

最终权限的计算过程为:

普通文件起始权限:666
普通文件起始权限:110110110
权限掩码:002
权限掩码:000000010
普通文件最终权限:110110110 &(~(000000010))
               110110110 & 111111101
               110110100 = 664

umask

功能: 查看或修改文件掩码

格式: umask 权限值

**说明:**将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。

实例:

[YX@VM-16-5-centos lesson5]$ umask
0002
[YX@VM-16-5-centos lesson5]$ umask 007
[YX@VM-16-5-centos lesson5]$ umask
0007
  • 权限掩码改变,新创建的文件和目录对应三个角色的权限也会相应跟着改变。

五.目录的权限

实例:

六.粘滞位

1.背景

如下面的home目录就是一个共享目录,用来存放普通用户的家目录

[YX@VM-16-5-centos home]$ ll
total 12
drwx------ 3 lighthouse lighthouse 4096 Nov  2 23:04 lighthouse
drwx------ 4 pangyilin  pangyilin  4096 Nov  9 19:38 pangyilin
drwx------ 5 YX         YX         4096 Nov 11 22:11 YX

每个用户都是私有的,其他人没有权限访问。

2.准备

共享的目录通常都是root提供的,

在根目录下创建共享目录public,开放所有权限,chmod 777 public,并添加以下文件

在这里插入图片描述

public目录下添加如下文件:
在这里插入图片描述

3.情况

在其他用户想要删除共享目录中别人的文件或目录时,是非常简单的,因为由上图知共享目录给other分配了写权限(w)。
注意:other的三个权限必须要给,

在这里插入图片描述
我在共享目录下更新了一个文件,让大家一起学习探讨,但有人不经过我同意就私自删除它,这明显是不合理的。

为了解决这个问题,Linux提出了粘滞位。

4.粘滞位

  • 粘滞位只能给目录(共享目录)添加

采用如下方法添加:

在这里插入图片描述

  • 这是在root下添加,在普通用户添加需使用sudo提权

在这里插入图片描述
注意:当一个目录被设置为“粘滞位”,则该目录下的文件只能由

  1. 超级管理员(root)删除
  2. 该目录的所属者删除
  3. 该文件的的所有者删除
举报

相关推荐

0 条评论