【Linux】Linux权限管理

一.Linux用户权限

1.权限的概念

权限 = 人 + 事物属性

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

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

2.用户分类

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

  • 超级用户:可以再Linux系统下做任何事情,不受约束,是Linux系统的“老天爷”,且一个Linux系统上只能有一个root用户
  • 普通用户:只能再Linux下做有限的事情,可以有多个普通用户
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

在这里插入图片描述

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用户的家目录下

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下不用文件后缀区分文件类型,而是用文件属性中第一列的第一个字符来区分文件类型

一般被分为以下几类:

  • -:普通文件,文件,可执行,归档文件等
  • d:目录
  • b:块设备,block,磁盘
  • c:字符设备,键盘或者显示器
  • p:管道文件
  • s:网络socket文件
  • l:连接文件link

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

Linux中文件后缀的理解:

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

3.文件角色划分

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

  • 文件拥有者:文件和目录的所有者,对应图片后边所属用户,u——user
  • 文件所属组:文件和文件目录的所有者所在组的用户,对应图片后面的所属用户组,g——group
  • 文件的other:其他用户,除了拥有者和所属组之外的用户,o——other

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

那什么是所属组?

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

假如没有所属组,只有拥有者和other两种角色,当A组的一个成员完成了他的代码,他需要将代码给A组的其他人看,而没有所属组,只能放开other的权限,A组的其他人才能看到,但是other权限放开A组的其他人可以看到,那B组的人也可以看到,毕竟是在一个操作系统上,B组想要抄袭A组就很容易。

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

用户和角色的关系

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

用户可以扮演不同的角色,root或普通用户都可以成为拥有者、所属组和other中的一员,而角色无法成为用户。

4.基本权限

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

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

  • 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录的权限

  • 写(w):write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

  • 执行(x):excute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

  • —:表示不具有该项权限

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

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

1.chmod

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

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

常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式:

  1. 用户表示符 +/-/= 权限字符
  • +:向权限范围增加权限代号所表示得权限
  • -:向权限范围取消权限代号所代表得权限
  • =:向权限范围赋予权限代号所表示得权限
  • 用户符号:
  • u:拥有者
  • g:拥有者同组用户
  • o:其他用户
  • a:所有用户

实例:

三种权限分开测试

[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:按此顺序分别对应一个八进制数字,由三个八进制数组成三个角色的权限。

举例:

三个数字为:734
拥有者:7 = 4 + 2 + 1,拥有者有读、写权限和执行权限
所属组:3 = 0 + 2 + 1,所属者有写和执行权限,无读权限
other:4 = 4 + 0 + 0,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.chgrp

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

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

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

实例:

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

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

4.file

功能: 辨识文件类型

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

常用选项:

  • -c :详细显示指令执行过程,便于排错或分析程序执行的情形
  • -z :尝试去解读压缩文件的内容

实例:

查看目录

在这里插入图片描述

查看文件

在这里插入图片描述

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开始的

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

默认权限——你看到的

起始权限——系统设定的 (普通文件起始权限:666开始的(没有x的),目录文件的起始权限是:777(rwx))

最终权限——起始权限 & (~umask),系统为了更好的控制文件权限,系统会有默认的权限掩码(umask)的概念!

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

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

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

最终权限的计算过程为:

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

umask

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

格式: umask 权限值

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

超级用户默认掩码值为:022,

普通用户默认为:002.

实例:

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

五.目录的权限

  • 可执行权限(x):如果目录没有可执行权限,则无法cd到目录中
  • 可读权限®:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容
  • 可写权限(w):如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件

实例:

目录没有可执行权限x,无法cd到目录
在这里插入图片描述

目录没有可读权限r,无法用ls等命令查看目录中的文件内容
在这里插入图片描述

目录没有可写权限w,则无法在目录中创建文件,也无法在目录中删除文件
在这里插入图片描述

六.粘滞位

1.背景

在使用Linux的时候,未来可能会有一些共享目录,被所有的普通用户共享,用来保存普通用户产生的临时数据。

每个用户的文件都是私有的,其他人无法访问,为了让多个人之间可以交互他们的东西,产生了共享目录。

共享目录对所有Linux的普通用户共享。

如下面的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的三个权限必须要给,

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

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

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

4.粘滞位

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

采用如下方法添加:

在这里插入图片描述

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

我们在进行删除操作

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

  1. 超级管理员(root)删除
  2. 该目录的所属者删除
  3. 该文件的的所有者删除
### 回答1: 在Linux中,可以使用umask命令来设置文件的默认权限。umask命令用于设置新创建文件的默认权限掩码,它会屏蔽掉文件的权限位,使其默认权限为指定值的补集。例如,如果umask值为022,则新创建的文件权限为644,新创建的目录权限为755。可以通过修改umask值来改变文件的默认权限。 要设置文件的默认权限,可以按照以下步骤操作: 1. 打开终端,输入umask命令查看当前的umask值。 2. 使用umask命令设置新的umask值。例如,如果要将默认权限设置为755,则可以使用umask 022命令。 3. 创建新的文件或目录,它们的默认权限将会是指定umask值的补集。例如,如果umask值为022,则新创建的文件权限为644,新创建的目录权限为755。 注意:umask值是八进制数,它的值范围为-777,其中每一位代表一种权限,分别为读、写、执行权限。例如,umask值为022表示屏蔽掉组和其他用户的写权限,即新创建的文件和目录的默认权限为755。 ### 回答2: Linux是一种多用户、多任务的操作系统,为了保证文件与目录的安全性,Linux系统中对文件和目录设置了不同的权限。在Linux系统中,每个文件和目录都有一个所有者和一组访问权限,这些权限可以控制用户对文件和目录的访问权限。比如,读、写、执行权限,所有者可以授予其他用户相应的权限。 在Linux系统中,我们可以通过chmod命令来设置文件和目录的访问权限。该命令需要指定文件或目录的路径和对应的权限值,有三种设置权限的语法格式: 1.符号模式: 使用"u,g,o,a"来表示用户用户组、其他用户和所有用户,使用"+"、"-"或"="来表示增加权限、删除权限、赋权权限。 chmod u+rwx,g+rx,o+r testfile 该命令的意思是,给testfile文件的所有者(u)添加读、写和执行(rwx)权限,给用户组(g)添加读和执行(rx)权限,以及给其他用户(o)添加只读(r)权限。 2.数字模式: 使用三个数字的表示法来设置权限,其中第一个数字表示所有者的权限,第二个数字表示用户组的权限,第三个数字表示其他用户权限,每个数字的值都是0到7之间的数字。 chmod 754 testfile 该命令的意思是,给testfile文件的所有者添加读、写和执行权限(7 = 4 + 2 + 1),给用户组添加读和执行权限(5 = 4 + 1),给其他用户添加只读权限(4)。 3.字母模式: 使用r、w、x和s等符号来表示读、写、执行和特殊权限,其中"s"表示设置SUID,即设置程序的用户ID,"t"表示设置sticky bit,即只允许文件的所有者删除该文件。 chmod u=rwx,g=rx,o=r testfile 该命令的意思是,给testfile文件的所有者添加读、写和执行(rwx)权限,给用户组添加读和执行(rx)权限,给其他用户添加只读权限(r)。 总之,通过这些命令可以为文件或目录设置相应的权限,从而控制文件的读写执行操作,保证文件和目录的安全性和隐私。 ### 回答3: 在Linux系统中,每个文件都有一组权限,用于控制文件的读、写和执行。默认情况下,新创建的文件的权限是由 umask 值决定的。umask 是在创建新文件时从文件权限掩码中删除的权限位。 如果您想更改文件的默认权限,可以通过在配置文件中设置 umask 的值来实现。umask 的值通常用三个数字表示,每个数字代表一个权限组(所有者、群组和其他人),例如 umask 022 表示所有者拥有读写权限,而群组和其他人只有读权限。 要更改默认权限,您需要编辑 /etc/profile 或 ~/.bashrc 文件,并添加以下行: umask 002 要使新的 umask 变更生效,您需要注销并重新登录,或者使用以下命令使新的设置立即生效: source /etc/profile 您还可以使用 chmod 命令来更改文件的默认权限。要更改默认权限,您可以在 /etc/rc.local 中添加 chmod 命令。例如,如果您想将 /var/www 目录和其下的文件的默认权限设置为 755,您可以添加以下行: chmod -R 755 /var/www 您可以根据需要更改文件的默认权限。请注意,更改默认权限可能会导致文件的安全性降低,因此请谨慎操作。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榶曲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值