首页 > 系统相关 >RHEL8用户身份与文件权限-Linux就该怎么学5

RHEL8用户身份与文件权限-Linux就该怎么学5

时间:2023-04-30 15:01:18浏览次数:35  
标签:文件 用户 RHEL8 命令 Linux 权限 root 目录

   Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,保障Linux系统的安全则是一系列复杂的配置工作。本章将详细讲解文件的所有者、所属组以及其他人可对文件进行的读(r)、写(w)、执行(x)等操作,还将介绍如何在Linux系统中添加、删除、修改用户账户信息。

   还可以使用SUID、SGID与SBIT特殊权限更加灵活地设置权限,来弥补对文件设置一般操作权限时所带来的不足。隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能篡改或删除。而文件访问控制列表(Access Control List,ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限。最后讲解如何使用su命令与sudo服务让普通用户具备管理员的权限,这不仅能够满足日常的工作需求,还可以确保系统的安全性。

5.1 用户身份与能力

       Linux 系统的设计初衷之一就是为了满足多个用户同时工作的需求,因此必须具备很好的安全性,尤其是不能因为一两个服务出错而影响到整台服务器。在第 1 章学习安装 Linux 操作系统时,特别要求设置 root 管理员的密码,这个 root 管理员就是存在于所有类 UNIX 系统中的超级用户。它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户、启动/关闭服务进程、开启/禁用硬件设备等。虽然以 root 管理员的身份工作时不会受到系统的限制,但俗话讲“能力越大,责任就越大”,因此一旦使用这个高能的 root 管理员权限执行了错误的命令,可能会直接毁掉整个系统。

       推荐大家在学习时使用 root 管理员权限!因为学习过程中如果使用普通用户身份进行操作,则在配置服务之后出现错误时很难判断是系统自身的问题还是因为权限不足而导致的;更何况实验环境是使用 VMware 虚拟机软件搭建的,可以将安装好的系统设置快照,这样即便系统彻底崩溃了,也可以在几秒的内快速还原系统,而不用担心数据丢失。

       严格来讲 Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID(User IDentification)的数值为 0。在 Linux 系统中,UID 就像我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。在 RHEL 8 系统中,用户身份有下面这些。

➢ 管理员UID为0:系统的管理员用户。

➢ 系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏范围。

➢ 普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

    Linux 系统也有用户组的概念。通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。假设一个公司中有多个部门,每个部门中又有很多员工,如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限。

       另外创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。

5.1.1 id 命令

       id 命令用于显示用户的详细信息,语法格式为“id 用户名”。它能够查看用户的基本信息,例如用户 ID、基本组与扩展组 GID,或判别某个用户是否已经存在。下面使用 id 命令查看一个名称为 probe 的用户信息。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组

5.1.2 useradd 命令

      useradd 命令用于创建新的用户账户,语法格式为“useradd [参数] 用户名”。使用该命令创建用户账户时,默认的用户家目录会被存放在 /home 目录中,默认的 Shell 解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。这些默认设置可以根据图中的 useradd 命令参数自行修改。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_02

       下面使用 useradd 命令创建一个名称为 cool 的用户,并使用 id 命令确认信息;创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器。请注意/sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别;一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中。

5.1.3 groupadd 命令

        groupadd 命令用于创建新的用户组,语法格式为“groupadd [参数] 群组名”。创建用户组的步骤类似创建用户,例如创建一个用户组 ronny;/etc/group文件存放着组相关信息可以用 tail 命令查看验证。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_03

5.1.4 usermod 命令

       usermod 命令用于修改用户的属性,英文全称为“user modify”,语法格式为“usermod [参数] 用户名”。用户的信息保存在/etc/passwd 文件中,可以直接用文本编辑器来修改其中的用户信息,也可以用 usermod 命令修改已经创建的用户信息,比如用户的 UID、基本/扩展用户组、默认终端等。usermod 命令的参数以及作用如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_04

       将用户 probe 加入到 root 用户组中,这样扩展组列表中则会出现 root 用户组的字样,而基本组不会受到影响;试试用-u 参数修改 probe 用户的 UID 号码值;再如果把用户的解释器终端由默认的/bin/bash 修改为 /sbin/nologin 后会有什么样的效果呢?

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_05

       将用户的终端设置成/sbin/nologin 后用户马上就不能登录了(切换身份也不行),但这个用户依然可以被某个服务所调用。这样的好处是当黑客通过这个服务入侵成功后,破坏的范围也仅仅局限于这个特定的服务,而尽可能地把损失降至最小化。

5.1.5 passwd 命令

        passwd 命令用于修改用户的密码、过期时间等信息,英文全称为“password”,语法格式为“passwd [参数] 用户名”。普通用户只能使用 passwd 命令修改自己的系统密码,而 root 管理员则有权限修改其他所有人的密码。passwd 命令中的参数以及作用如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_06

       要修改自己的密码,只需要输入命令后敲击回车键即可;要修改其他人的密码,则需要先检查当前是否为 root 管理员权限,然后在命令后输入用户名;

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_07

       假如有位同事正在休长假,那么可以使用 passwd 命令禁止该用户登录系统,等假期结束回归工作岗位时再使用该命令解除限制,而不是将其删除;这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_08

5.1.6 userdel 命令

       userdel 命令用于删除已有的用户账户,英文全称为“user delete”,语法格式为“userdel [参数] 用户名”。如果确认某位用户后续不会再登录到系统中,则可以通过 userdel 命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以加上-r 参数将其同时删除。userdel 命令的参数以及作用如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_09

       在删除用户时,一般会建议保留他的家目录数据,以免有重要的数据要用到;所以在使用 userdel 命令时可以不加参数。虽然此时该用户已被删除,但家目录数据会继续存放在/home 目录中,等确认不再使用时将其手动删除即可。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_10

5.2 文件权限与归属

       在 Linux 系统中,每个文件都有归属的所有者和所属组,并且规定了文件的所有者、所属组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。

       文件的可读、可写、可执行权限的英文全称分别是 read、write、execute,可以简写为 r、w、x,亦可分别用数字 4、2、1 来表示,文件所有者、文件所属组及其他用户权限之间无关联如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_11

       文件权限的数字表示法基于字符(rwx)的权限计算而来,其目的是简化权限的表示方式。若某个文件的权限为 7,则代表可读、可写、可执行(4+2+1);若权限为 6,则代表可读、可写(4+2)。我们来看一个例子。现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限;其他人只有可读的权限。那么这个文件的权限就是 rwxrw-r--,数字法表示即为 764;三者(项)之间没有互通关系。

       这里以 rw-r-x-w-权限为例来介绍如何将字符表示的权限转换为数字表示的权限。要先将各个位上的字符替换为数字,如上图所示。减号是占位符,代表这里没有权限,在数字表示法中用 0 表示。也就是说,rw-转换后是420,r-x 转换后是 401,-w-转换后是 020。然后将这 3 组数字每组的和进行排列,得出 652,这便是转换后的数字表示权限。

       在下图中包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、最后修改时间和文件名称等信息。通过分析可知,该文件的类型为普通文件,所有者权限为可读、可写(rw-),所属组权限为可读(r--),除此以外的其他人也只有可读权限(r--),文件的磁盘占用大小是 34298 字节,最近一次的修改时间为 4 月 2 日的 0:23,文件的名称为 install.log。

       排在权限前面的减号(-)是文件类型(减号表示普通文件),新手经常会把它跟“无权限”混淆。目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)。

       普通文件的范围特别广泛,比如纯文本信息、服务配置信息、日志信息以及 Shell 脚本等,都属于普通文件。块设备文件(b)和字符设备文件(c)一般是指硬件设备,比如鼠标、键盘、光驱、硬盘等,在 /dev/ 目录中最为常见。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_12

5.3 文件的特殊权限

       有时候单纯设置文件的 rwx 权限无法满足我们对安全和灵活性的需求,因此便有了 SUID、SGID 与 SBIT 的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。 下面具体解释这 3 个特殊权限位的功能以及用法。

5.3.1 SUID

       SUID 是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)。所有用户都可以执行 passwd 命令来修改自己的用户密码,而用户密码保存在/etc/shadow 文件中。仔细查看这个文件就会发现它的默认权限是 000,也就是说除了 root 管理员以外,所有用户都没有查看或编辑该文件的权限。实际上 passwd 命令就是加上了 SUID 特殊权限位,让普通用户临时获得程序所有者的身份,把变更的密码信息写入到 shadow 文件中。

       查看 passwd 命令属性时发现所有者的权限由 rwx 变成了 rws,其中 x 改变成 s 就意味着该文件被赋予了 SUID 权限。如果原本的权限是 rw-呢?那么被赋予特殊权限后将变成大写的 S。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_13

注意!s这个权限,一旦某个命令文件被设置了 SUID 权限,就意味着凡是执行该文件的人都可以临时获取到文件所有者所对应的至高权限。因此千万不要将 SUID 权限设置到 vim、cat、rm 等命令上面。


       在设置特俗权限前介绍两个与权限相关的命令:chmod 和 chown。 chmod 命令用于设置文件的一般权限及特殊权限,英文全称为“change mode”,语法格式为“chmod [参数] 文件名”。比如要把一个文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限,则相应的字符法表示为 rwxrw----,其对应的数字法表示为 760。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_14

        chown 命令用于设置文件的所有者和所有组,英文全称为 change own,语法格式为“chown 所有者:所有组 文件名”。chmod 和 chown 命令针对目录进行操作时需要加上大写参数-R 来表示递归操作,即对目录内所有的文件进行整体操作。 下面试着把某文件的属性信息修改一下。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_15

5.3.2 SGID

       SGID 特殊权限有两种应用场景:当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限;当对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的权限。

       每个文件都有其归属的所有者和所属组,当创建或传送一个文件后,这个文件就会自动归属于执行这个操作的用户(即该用户是文件的所有者)。如果现在需要在一个部门内设置共享目录,让部门内的所有人员都能够读取目录中的内容,那么就可以在创建部门共享目录后,在该目录上设置 SGID 特殊权限位。这样部门内的任何人员在里面创建的文件都会归属于该目录的所属组,而不再是自己的基本用户组。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_16

       确保普通用户可以向dirtest文件夹写入文件,并为该目录设置了 SGID 特殊权限位后,就可以切换至一个普通用户,然后尝试在该目录中创建文件,并查看新创建的文件是否会继承所在的目录的原所属组 root 名称。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_17

5.3.3 SBIT

       工作中部门员工有需要上传文件的特定共享目录中,但有时候“破坏分子”喜欢删除他人上传的文件,这时就要设置 SBIT(Sticky Bit)特殊权限位了(也可以称之为特殊权限位之粘滞位)。SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。最初Sticky Bit 直译成了“粘滞位”,译为“保护位”更贴切又好记。

       与前面讲的 SUID 和 SGID 权限显示方法不同,当目录被设置 SBIT 特殊权限位后,文件的其他用户权限部分的 x 执行权限就会被替换成 t 或者 T—原本有 x 执行权限则会写成 t,原本没有 x 执行权限则会被写成 T。

       RHEL 8 系统中的/tmp 作为一个共享文件的目录,默认已经设置了 SBIT 特殊权限位,因此除非是该目录的所有者,否则无法删除这里面的文件;这体现在“其他用户”权限字段变为 rwt。下面的命令赋予了/tmp/test 文件最大的 777 权限(rwxrwxrwx)。切换到一个普通用户身份下,尝试删除这个由其他人创建的文件,即便读、写、执行权限全开,但是由于 SBIT 特殊权限位的存在,依然无法删除该文件。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_18

       下面切换回 root 管理员,在家目录中创建一个名为 linux 的目录,o+t为其设置 SBIT 权限再查看效果。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_19

       其实SUID、SGID 与 SBIT 也有对应的数字表示法,分别为 4、2、1。也就是说 777 还不是最大权限,最大权限应该是 7777,其中第 1 个数字代表的是特殊权限位。既然知道了数字表示法是由“特殊权限+一般权限”构成的,现在就以上面 linux 目录的权限为例,来梳理一下计算方法。在 rwxr-xr-t 权限中,最后一位是 t,这说明该文件的一般权限为 rwxr-xr-x,并带有 SBIT 特殊权限。对于可读(r)、可写(w)、可执行(x)权限的数字计算—rwxr-xr-x 即 755,而 SBIT 特殊权限位是 1,则合并后的结果为 1755。

       如果权限是“rwsrwSr--”呢?大写 S 表示原先没有执行权限,因此一般权限为 rwxrw-r--,将其转换为数字表示法是 764。带有的 SUID 和 SGID 特殊权限的数字法表示是 4 和 2,心算得出结果是 6,合并后的结果为 6764。可以参考下图计算过程。

       将权限的数字表示法转换成字符表示法的难度高一些,这里以 5537 为例,特殊权限的 5 是由 4+1 组成的,意味着有 SUID 和 SBIT。(SUID 和 SGID 在原先有执行权限则是小写 s,如果没有执行权限则是大写 S;而 SBIT 的写法则是原先有执行权限是小写 t,没有执行权限是大写 T)。一般权限的 537 进行字符转换后应为 r-x-wxrwx,然后在此基础上增加 SUID 和 SBIT 特殊权限,合并后的结果是 r-s-wxrwt。可以参考下图计算过程。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_20

5.4 文件的隐藏属性

       Linux 系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,默认情况下不能直接被用户发觉;明明权限充足但却无法删除某个文件,或者仅能在日志文件中追加内容而不能修改或删除内容的情况,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件权限也保障了 Linux 系统的安全性。既然叫隐藏权限,那么使用常规的 ls 命令是不能看到它的。隐藏权限的专用设置命令是 chattr,专用查看命令是 lsattr。

5.4.1 chattr 命令

       chattr 命令用于设置文件的隐藏权限,英文全称为 change attributes,语法格式为“chattr [参数] 文件名称”。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。chattr 命令中可供选择的隐藏权限参数非常丰富如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_21

       接下来新建一个普通文件,并为其设置“不允许删除与覆盖”(+a 参数)权限,然后再尝试将这个文件删除,可见操作失败。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_22

5.4.2 lsattr 命令

       lsattr 命令用于查看文件的隐藏权限,英文全称为“list attributes”,语法格式为“lsattr [参数] 文件名称”。上面的chattr文件使用 ls 命令看不出隐藏属性,一旦使用 lsattr 命令后,文件上被赋予的隐藏权限就原形毕露了;此时按照显示的隐藏权限的类型(a),使用 chattr 命令将其去掉,再次删除就成功了。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_23

       工作中一般会将 -a 参数设置到日志文件(/var/log/messages)上,这样可在不影响系统正常写入日志的前提下,防止黑客擦除自己的作案证据。如果希望彻底地保护某个文件,不允许任何人修改和删除它的话,不妨加上-i 参数试试。

5.5 文件访问控制列表

       前文讲到的一般权限、特殊权限、隐藏权限其实有一个共性—权限是针对某一类用户设置的,能够对很多人同时生效。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。基于普通文件或目录设置 ACL 其实就是针对指定的用户或用户组设置文件或目录的操作权限,如果针对某个目录设置了 ACL,则目录中的文件会继承其 ACL 权限;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL 权限。

       为了更直观地看到 ACL 对文件权限控制的强大效果,我们先切换到普通用户然后尝试进入 root 管理员的家目录中。在没有针对普通用户为 root 管理员的家目录设置 ACL 之前,其执行结果显示权限被拒绝。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_24

5.5.1 setfacl 命令

       setfacl 命令用于管理文件的 ACL 权限规则,英文全称为“set files ACL”,语法格式为 “setfacl [参数] 文件名称”。ACL 权限提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制。使用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R 递归参数;针对普通文件则使用 -m 参数;如果想要删除某个文件的 ACL,则使用 -b 参数。setfacl 命令的常用参数如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_25

       默认普通用户是无法进入/root 目录中的,现在为c3用户设置一下权限: 随后再切换到c3的身份下就能正常进入了;那么怎么去查看文件是否设置了 ACL 呢?常用的 ls 命令看不到 ACL 信息,但是却可以看到文件权限的最后一个点( .) 变成了加号(+ ),这就意味着该文件已经设置了 ACL。没想到吧就这么一个不起眼的点(.),竟然还表示这么重要的权限。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_26

5.5.2 getfacl 命令

      getfacl 命令用于查看文件的 ACL 权限规则,英文全称为“get files ACL”,语法格式为 “getfacl [参数] 文件名称”。想要设置 ACL,用的是 setfacl 命令;要想查看 ACL,则用的是 getfacl 命令。下面使用 getfacl 命令显示在 root 管理员家目录上设置的所有 ACL 信息。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_27

       ACL 权限也可以针对某个用户组进行设置,允许某个组的用户都可以读写 /etc/fstab文件;设置错了想删除?要清空所有 ACL 权限用-b 参数;要删除某一条指定的权限就用-x 参数。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_28

       ACL 权限的设置都是立即且永久生效的,不需要再编辑什么配置文件,这一点特别方便。这也带来了一个安全隐患。如果我们不小心设置错了权限,就会覆盖掉文件原始的权限信息,并且无法找回。

       可以在设置ACL前先备份;例如备份/home 目录上的 ACL 权限时,可使用-R 递归参数,这样不仅能够把目录本身的权限进行备份,还能将里面的文件权限也自动备份。需要注意!getfacl 在备份目录权限制不能使用绝对路径的形式,因此需要先切换到最上层根目录,然后再进行操作。

       ACL 权限的恢复也很简单,使用的是 --restore 参数。由于在备份时已经指定是对/home 目录进行操作,所以不需要写对应的目录名称,它能够自动找到要恢复的对象。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_29

5.6 su 命令与 sudo 服务

       在生产环境中不要用 root 管理员的身份去做所有事情。因为一旦执行了错误的命令,可能会直接导致系统崩溃。尽管 Linux 系统为了安全性考虑,使得许多系统命令和服务只能被 root 管理员来使用,但是这也让普通用户受到了更多的限制,从而导致无法顺利完成特定的工作任务。

       su 命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从 root 管理员切换至普通用户。su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原用户的信息。当从 root 管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成 root 管理员就需要进行密码验证了。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_30

       尽管使用 su 命令后普通用户可以完全切换到 root 管理员的身份来完成相应工作,但这将暴露 root 管理员的密码,从而也增大系统密码被黑客获取的概率。

       接下来将介绍 sudo 命令把特定命令的执行权限赋予指定用户,这样既可保证普通用户能够完成特定的工作,也可以避免泄露 root 管理员密码。我们要做的就是合理配置 sudo 服务,以便兼顾系统的安全性和用户的便捷性,语法格式为“sudo [参数] 用户名”。

       使用 sudo 命令可以给普通用户提供额外的权限来完成原本只有 root 权限才能完成的任务,可以限制用户执行指定的命令,记录用户执行过的每一条命令,集中管理用户与权限(/etc/sudoers),以及可以在验证密码后的一段时间无须让用户再次验证密码。常见的 sudo 命令参数如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_31

       如果担心直接修改配置文件会出现问题,则可以使用 sudo 命令提供的 visudo 命令来配置用户权限。visudo 命令用于编辑、配置用户 sudo 的权限文件,语法格式为“visudo [参数]”。这是一条会自动调用 vi 编辑器来配置/etc/sudoers 权限文件的命令,能够解决多个用户同时修改权限而导致的冲突问题;还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错提醒如图。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_32

   使用visudo命令配置权限文件时,其操作方法与Vim编辑器中用到的方法完全一致,因此在编写完成后记得在末行模式下保存并退出。在配置权限文件时,按照下面的横格式在第101行(大约)填写上指定的信息。

      谁可以使用 允许使用的主机 = (以谁的身份) 可执行命令的列表

➢ 谁可以使用:稍后要为哪位用户进行命令授权。

➢ 允许使用的主机:可以填写ALL表示不限制来源的主机,亦可填写如192.168.10.0/24这样的网段限制来源地址,使得只有从允许网段登录时才能使用sudo命令。

➢ 以谁的身份:可以填写ALL表示系统最高权限,也可以是另外一位用户的名字。

➢ 可执行命令的列表:可以填写ALL表示不限制命令,亦可填写如/usr/bin/cat这样的文件名称来限制命令列表,多个命令文件之间用逗号(,)间隔。

       在 Linux 系统中配置服务文件时虽然没有硬性规定,但不建议新增参数的位置太靠上,以免新填写的参数在执行时失败,导致下面一些必要的服务功能没有成功加载。建议在配置文件中找一下相似的参数,然后在相邻位置进行新的修改,或者在文件的中下部位置进行添加后修改。输入visudo进入添加。

RHEL8用户身份与文件权限-Linux就该怎么学5_普通用户_33

       保存退出后切换至probe普通用户身份,再用 sudo -l 命令查看所有可执行的命令(在下面的命令中,验证的是普通用户的密码,而不是 root 管理员的密码)。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_34

       作为普通用户默认是不能看到 root 管理员的家目录(/root)中的文件信息的,这时只需要在想执行的命令前面加上 sudo 命令就行了。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_35

       考虑到生产环境中普通用户需要在可以完成任务的情况下,尽可能少地赋予权限的原则,上面配置的ALL 参数就不合适了。因此只需赋予普通用户具体的命令以满足工作需求就行。如果需要让某个用户只能使用 root 管理员的身份执行指定的命令,一定要给出该命令的绝对路径,否则系统会识别不出来。可以先使用 whereis 命令找出命令所对应的保存路径。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_36

       然后使用 visudo 命令编辑权限文件,将原先第 101 行新增的最后项ALL修改为上面查询后的路径,且多个命令之间用逗号(,)间隔;再次切换到指定的普通用户,尝试正常查看某个系统文件的内容,此时系统提示没有权限(Permission denied)。这时再使用 sudo 命令就能顺利地查看文件内容了。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_37

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_38

       上图标注点每次执行 sudo 命令后都会要求验证一下密码。虽然这个密码就是当前登录用户的密码,但是每次执行 sudo 命令都要输入一次密码其实也挺麻烦的,这时可以添加 NOPASSWD 参数,使得用户下次再执行 sudo 命令时就不用验证密码了。

RHEL8用户身份与文件权限-Linux就该怎么学5_文件名_39

       当切换到普通用户后再执行命令时,就不用再频繁地验证密码了。

RHEL8用户身份与文件权限-Linux就该怎么学5_用户组_40


标签:文件,用户,RHEL8,命令,Linux,权限,root,目录
From: https://blog.51cto.com/u_9134612/6237882

相关文章

  • 基本的Linux命令学习
    1.cd:  改变目录2.cd..  回退到上一个目录,直接cd进入默认目录3.pwd: 显示当前所在目录路径4.ls(ll): 都是列出当前目录中的所有文件,只不过ll(l) ...1、push命令;2、pull命令;3、commit命令;4、add命令;5、checkout命令;6、fetch/clone命令。Git有很多命令,如果想要完全......
  • 每天一个Linux命令-lastlog.
    关于lastlog命令,reportsthemostrecentloginofallusersorofagivenuser可以作为一个审计命令,可以参考笔者的另一篇文章:《关于Linux操作系统使用lastlog命令对OS账号最后一次登录时间的审计》lastlog,是读取的/var/log/lastlog这个data类型的文件,这里主要讲一下关于last......
  • 关于Linux操作系统OS账号最后一次登录时间的审计
    本文以RedHatEnterpriseLinuxrelease8.1(Ootpa)为例,应该也能适用于7.x版本的如果对操作系统中的账号审计,其中有一个项目可能会比较重要(尤其是对于个人账号),那就是最后一次登录的记录如果需要查看每一个OS账号的最后一次登录记录,可以使用lastlog命令[qq-5201351@localho......
  • Linux用ntpdate自动同步时间后使用crontab定时任务更新
     两种同步linux系统的时间方法:(1)开启ntpd服务,即配置ntp服务器实现时间同步。(2)利用ntp客户端程序,即ntpdate同步时间。注意:因为ntp服务器本来就会与上层时间服务器进行同步,所以在默认的情况下,ntp服务器不可以使用ntpdate,也就是说ntpdate和ntpd不能同时启用。上一篇已经介绍......
  • Android 检测是否有ROOT权限
    android(linux)很多命令需要root权限才能执行,比如说查看系统目录文件等,如果我们的程序需要用到查看此类文件或执行系统命令,就必须先获取Root权限。1.importjava.io.DataInputStream;2.importjava.io.DataOutputStream;3.importjava.io.InputStream;4.impor......
  • 单机版hadoop在Linux环境下的安装和配置
    创建hadoop用户首先打开终端窗口,输入如下命令创建hadoop用户,这条命令创建可以登录的hadoop用户,并使用/bin/bash作为shell:$sudouseradd-mhadoop-s/bin/bash接着为hadoop设置登录密码,可简单设为123456,按提示输入两次:$sudopasswdhadoop为hadoop用户增加管理员权限,......
  • Linux系统软件安装
    实战章节:在Linux上部署各类软件前言为什么学习各类软件在Linux上的部署在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,但是并没有一些具体的实操能够串联起来这些知识点。所以,现在我们设计......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......