【Linux】权限

在这里插入图片描述

欢迎来到Cefler的博客
博客主页:那个传说中的man的主页
个人专栏:题目解析
推荐文章:题目大解析3


目录

  • shell命令解释器
  • Linux用户权限
    • 如何创建新用户?
    • 如何删除用户?
    • 如何切换账号?
    • sudo是什么?
    • sudor名单
  • Linux权限管理
    • 文件访问者分类
    • 所属组是什么?
    • 为什么要有所属组?
    • 文件类型
    • Linux下后缀名的意义
  • 文件权限值
    • 文件权限值的表示方法
    • 文件访问权限的相关设置方法
      • chmod

shell命令解释器

我们学习Linux,知道它不过就是操作系统,我们称其为kernel核心,但是我们作为用户不能直接访问核心,要借助软件,如Xshell,我们称之为外壳。
我们输入命令,shell翻译命令给操作系统,操作系统再通过外壳反馈。
所以关系可以表示为:
【Linux】权限_第1张图片
在Linux中,Shell是一种命令行解释器,它允许用户与操作系统进行交互。Shell提供了一个命令行界面,用户可以在其中输入命令并执行它们。

Shell的存在有以下几个原因

  1. 提供了一种与操作系统进行交互的方式,使用户能够执行各种操作,如运行程序、管理文件和目录等。
  2. Shell可以执行脚本,这些脚本可以自动化执行一系列命令,从而简化重复性任务的操作。
  3. Shell提供了丰富的命令和功能,使用户能够根据自己的需求进行定制和扩展。
  4. 阻拦非法命令,保护内核

Shell实现的具体进程
Shell实现的具体进程是通过解释和执行用户输入的命令来与操作系统进行交互。当用户在Shell中输入一个命令时,Shell会解析该命令并执行相应的操作。这些操作可以包括运行系统命令、启动其他程序、管理文件和目录、配置系统设置等。

具体来说,当用户在Shell中输入一个命令时,Shell会创建一个子进程来执行该命令。子进程是由Shell通过调用系统调用(如fork()和exec())来创建的。子进程会继承Shell的环境变量和文件描述符,并执行相应的命令。执行完命令后,子进程会将结果返回给Shell,并退出。

Shell本身是一个进程,通常作为用户登录时的默认进程。它可以是不同的Shell程序,如Bash、Zsh、Fish等。这些Shell程序在底层使用不同的实现方式,但它们的目标都是提供一个交互式的命令行界面,使用户能够与操作系统进行交互。

注意

shell只是外壳的统称,外壳程序不止一个,如bash、sh、图形化界面(GUI)等都是外壳程序

Linux用户权限

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

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su or su - [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su,root(root可以省略),此时系统会提示输入root用户的口令。

如何创建新用户?

法一
在Linux中,可以使用useradd命令来创建新用户。以下是创建新用户的步骤:

  1. 打开终端或命令行界面。
  2. 以root用户身份登录或使用具有sudo权限的用户登录。
  3. 运行以下命令来创建新用户:
    其中,新用户名是你想要创建的新用户的用户名。
   sudo useradd -m 新用户名
  1. 设置新用户的密码:
    系统会提示你输入新用户的密码并进行确认。
   sudo passwd 新用户名
  1. 完成以上步骤后,新用户就会被成功创建。

请注意,上述命令中的sudo用于提升权限,确保你具有足够的权限来创建新用户。

法二
在Linux中,可以使用adduser命令来创建新用户。以下是使用adduser命令创建新用户的步骤:

  1. 打开终端或命令行界面。
  2. 以root用户身份登录或使用具有sudo权限的用户登录。
  3. 运行以下命令来创建新用户:
    其中,新用户名是你想要创建的新用户的用户名。
   sudo adduser 新用户名
  1. 系统会提示你输入新用户的密码以及其他相关信息,如全名、电话号码等。根据提示输入相应的信息。(如果没有提示,可以passwd 用户名自己重新设置密码
  2. 完成以上步骤后,新用户就会被成功创建。
    【Linux】权限_第2张图片

如何删除用户?

要删除用户,可以使用userdel命令。以下是删除用户的步骤:

  1. 打开终端或命令行界面。
  2. 以root用户身份登录或使用具有sudo权限的用户登录。
  3. 运行以下命令来删除用户:
    其中,用户名是你要删除的用户的用户名。
   sudo userdel 用户名
  1. 如果你想同时删除用户的主目录和邮箱,可以使用-r选项:
   sudo userdel -r 用户名

这将删除用户的账户信息、主目录和邮箱。

请注意,删除用户是一个敏感操作,请谨慎使用,并确保你了解删除用户可能带来的影响。在执行上述命令时,需要以root用户身份登录或使用具有sudo权限的用户登录。

如何切换账号?

在Linux中,可以使用su命令来切换到其他用户的账号。以下是切换账号的步骤:

  1. 打开终端或命令行界面。
  2. 以当前用户登录或使用具有sudo权限的用户登录。
  3. 运行以下命令来切换到其他用户的账号:
    其中,目标用户名是你要切换到的目标用户的用户名。
   su - 目标用户名
  1. 系统会提示你输入目标用户的密码。输入密码后,你将切换到目标用户的账号。

请注意,上述命令中的-选项表示切换到目标用户的账号时,同时切换到目标用户的环境变量和工作目录。如果不使用-选项,则只切换账号,而不改变环境变量和工作目录。

另外,如果你想切换到root用户的账号,可以直接运行以下命令:

sudo su -

输入当前用户的密码后,你将切换到root用户的账号。请谨慎使用root用户的权限,以免造成意外的损坏或安全问题。

sudo是什么?

sudo是在Linux和Unix系统中用于提升用户权限的命令。它允许普通用户以超级用户(通常是root用户)的权限来执行特定的命令或访问特定的文件。

当你在使用sudo命令时,系统会要求你输入当前用户的密码,以确认你有权限执行该命令。一旦验证通过,你就可以以超级用户的权限来执行该命令。

使用sudo命令的好处是,它可以限制普通用户对系统的访问权限,只有在需要执行特定任务时才提升权限。这有助于提高系统的安全性,因为普通用户不会一直以超级用户的身份运行。

需要注意的是,sudo命令需要在具有sudo权限的用户下执行,或者以root用户身份执行。在执行敏感或危险的操作时,务必谨慎使用sudo命令,以免造成意外的损坏或安全问题。

sudor名单

我们知道了,sudo是可以让普通用户获得root超级管理员的权限。
但是,我们有没有发现,如果sudo就可以轻易获得超级管理员的权限,还要linux的权限限制有何用?
【Linux】权限_第3张图片
所以,linux其实设置了一个“白名单”——sudors
只有在这个名单的用户才是被信任的,可以使用sudo指令的。
【Linux】权限_第4张图片
【Linux】权限_第5张图片

Linux权限管理

文件访问者分类

Linux 文件的访问者可以分成三类:

  • 拥有者:文件和文件目录的所有者:u—User
  • 所属组:文件和文件目录的所有者所在的组的用户:g—Group
  • 其它用户:o—Others

Linux上任何一个文件都有它的拥有者,默认情况下,该文件的隶属组就是拥有者本身。

所属组是什么?

在Linux中,每个文件和目录都有一个所有者和一个所属组。所属组是一组用户的集合,这些用户具有对该文件或目录的特定权限。当一个用户创建一个文件或目录时,它会自动继承创建者的所属组

所属组可以用来控制文件和目录的访问权限。通过设置适当的权限和所属组,可以限制对文件和目录的访问,以确保只有授权的用户可以进行操作。

为什么要有所属组?

所属组在Linux中起到了多个重要的作用:

  1. 权限管理:所属组可以用来控制文件和目录的访问权限。通过设置适当的权限和所属组,可以限制对文件和目录的访问,以确保只有授权的用户可以进行操作。这有助于保护敏感数据和系统文件免受未经授权的访问。

  2. 协作和共享:所属组可以用于实现文件和目录的共享和协作。当多个用户属于同一个所属组时,他们可以共享文件并进行协作编辑。这对于团队合作和项目管理非常有用。

  3. 简化权限管理:通过将多个用户分配到相同的所属组,可以简化权限管理。而不是为每个用户单独设置权限,只需为所属组设置适当的权限即可。这样可以减少管理工作量,并确保一致的权限设置。

总之,所属组在Linux中是一种重要的组织和管理用户权限的机制,它提供了安全性、协作性和简化权限管理的好处。

文件类型

我们这里需要知道一句话:Linux中不以后缀名判断文件类型!
那么Linux是怎么判断文件类型呢?
我们在输入命令ll后可以查看当前文件下的文件属性
【Linux】权限_第6张图片
这些文件属性的含义是有这些的
【Linux】权限_第7张图片
所以我们知道了属性第一位才是表达文件的类型。
那么文件类型都有哪些呢?
文件类型

  • d:文件夹
  • -:普通文件(源代码,可执行文件exe、库等)
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

Linux下后缀名的意义

既然linux下后缀名无法判断文件类型,那么后缀名的意义有什么呢?
1.增强可读性,后缀名本身并不决定文件的类型,但它可以提供一些有用的信息
2.Linux不判断后缀名,gcc编译器会判断,如果我们在进行gcc 编译文件时,文件后缀不是可执行文件,则会出现报错。

文件权限值

文件权限值的表示方法

在Linux中,文件权限通过一个三位数的权限值来表示。每个权限值由三个位组成,分别表示文件所有者、所属组和其他用户的权限。

每个权限位可以有以下三个值之一:

  • r:读权限,表示可以读取文件的内容或查看目录的内容。
  • w:写权限,表示可以修改文件的内容或在目录中创建、删除和重命名文件。
  • x:执行权限,表示可以执行文件(如果是可执行文件)或进入目录。

这些权限位可以通过以下方式进行组合和表示:

  • r:4(此为8进制表示)
  • w:2
  • x:1

通过将这些值相加,可以得到表示权限的三位数值。例如,如果一个文件的所有者具有读、写和执行权限,所属组具有读和执行权限,其他用户只有读权限,那么该文件的权限值将是754。

  • 所有者权限:rwx(读、写、执行)= 4 + 2 + 1 = 7
  • 所属组权限:r-x(读、执行)= 4 + 0 + 1 = 5
  • 其他用户权限:r–(只读)= 4 + 0 + 0 = 4

因此,该文件的权限值为754。

要查看文件或目录的权限值,可以使用ls -l命令,并查看输出中的第一个字段。要更改文件或目录的权限值,可以使用chmod命令,并指定新的权限值。

例如,要将文件example.txt的权限值更改为754,可以运行以下命令:

chmod 754 example.txt

这将把example.txt的权限值更改为754。

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

chmod

chmod 是一个在 Linux 和其他类 Unix 系统中用于更改文件或目录权限的命令。它是 “change mode” 的缩写。

chmod 命令可以通过两种方式来更改文件或目录的权限:符号模式绝对模式。

  1. 符号模式:符号模式使用符号来表示权限的增加或减少。它由以下组件组成:
  • u:表示文件所有者的权限。
  • g:表示所属组的权限。
  • o:表示其他用户的权限。
  • a:表示所有用户的权限(等同于 ugo)。
  • +:表示增加权限。
  • -:表示减少权限。
  • =:表示设置权限为指定值。

例如,要将文件 example.txt 的所有者权限设置为可读写,可以运行以下命令:
这将增加文件所有者的读和写权限。

   chmod u+rw example.txt
  1. 绝对模式:绝对模式使用数字来表示权限。每个权限位都有一个对应的数字值,如下所示:
  • r:读权限,对应数字值为 4。
  • w:写权限,对应数字值为 2。
  • x:执行权限,对应数字值为 1。

将这些数字值相加,可以得到表示权限的三位数值。例如,要将文件 example.txt 的权限设置为 -rwxr-x—,可以运行以下命令:

   chmod 750 example.txt

这将设置文件的所有者具有读、写和执行权限,所属组具有读和执行权限,其他用户没有任何权限。

要查看文件或目录的权限,可以使用 ls -l 命令,并查看输出中的第一个字段。

请注意,只有文件的所有者或超级用户(root)才能使用 chmod 命令更改文件或目录的权限。
所以,root真的可以为所欲为啊。
【Linux】权限_第8张图片


如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注❤️ ,学海无涯苦作舟,愿与君一起共勉成长
【Linux】权限_第9张图片
在这里插入图片描述

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