Linux加强篇005-用户身份与文件权限

news2024/11/29 20:37:01

目录

前言

1. 用户身份与能力

2. 文件权限与归属

3. 文件的特殊权限

4. 文件的隐藏属性

5. 文件访问控制列表

6. su命令与sudo服务


前言

悟已往之不谏,知来者之可追。实迷途其未远,觉今是而昨非。舟遥遥以轻飏,风飘飘而吹衣。问征夫以前路,恨晨光之熹微。

本系列依照《Linux就该这么学》第二版随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,学习起来我们既要多巴胺也要内啡肽。

不能谋万世者不能谋一时,不能谋全局者不能谋一隅,请挨下今天学习痛苦的小皮鞭,一鞭加一鞭,砥砺前行,到时站在塔尖俯瞰众生,唯我独尊,送上一首天王的<周杰伦-琴伤>,今天要学的也是用户身份和权限,你的能力越大责任就越大,权限也就越高,身份一朝改变,从此一骑绝尘。

1. 用户身份与能力

在RHEL 8系统中,用户身份有下面这些,相当于皇宫的一些身份,皇帝、锦衣卫、大臣,皇帝是0独一无二,也就是root,锦衣卫是1-999保护系统免于崩溃,大臣是1000+由皇帝任命,拼命干活,出生的时候都以为自己是0,长大之后发现拿错本了,都是1000+。UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码),就是有的萝卜坑不是你想占就占的。

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

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

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

用户组的概念。通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。这个简单来讲就是小团体,党争。

在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要,你被任命了先各自为战,然后如果有人拉拢你,其他用户就是扩展用户组,但是基本用户组还是你,你中有我,我中有你,天下事坏就坏在这里,但是我们都是有基本立场的。

1.  id命令

id命令用于显示用户的详细信息,语法格式为“id用户名”

使用id命令查看一个名称为linuxprobe的用户信息:

[root@localhost ~]# id centos8  

uid=1000(centos8) gid=1000(centos8) groups=1000(centos8)

2.  useradd命令

useradd命令用于创建新的用户账户,语法格式为“useradd [参数] 用户名”

可以使用useradd命令创建用户账户。使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。

useradd命令中参数及作用

参数作用
-d指定用户的家目录(默认为/home/username)
-e账户的到期时间,格式为YYYY-MM-DD.
-u指定该用户的默认UID
-g指定一个初始的用户基本组(必须已存在)
-G指定一个或多个扩展用户组
-N不创建与用户同名的基本用户组
-s指定该用户的默认Shell解释器

使用useradd命令创建一个名称为linuxcool的用户,并使用id命令确认信息:

[root@localhost ~]# useradd weihongbin04

[root@localhost ~]# id weihongbin04

uid=1004(weihongbin04) gid=1004(weihongbin04) groups=1004(weihongbin04)

创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器,/sbin/nologin,它是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中:

[root@localhost ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin jinyiwei01

[root@localhost ~]# id jinyiwei01

uid=8888(jinyiwei01) gid=8888(jinyiwei01) groups=8888(jinyiwei01)

3.  groupadd命令

groupadd命令用于创建新的用户组,语法格式为“groupadd [参数] 群组名”

创建一个用户组cabinet(内阁):

[root@localhost ~]# groupadd cabinet

4.  usermod命令

usermod命令用于修改用户的属性,语法格式为“usermod [参数] 用户名”

用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等

  usermod命令参数及作用

参数作用
-c填写用户账户的备注信息
-d -m参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e账户的到期时间,格式为YYYY-MM-DD
-g变更所属用户组
-G变更扩展用户组
-L锁定用户禁止其登录系统
-U解锁用户,允许其登录系统
-s变更默认终端
-u修改用户的UID

将用户weihongbin01加入到root用户组中,这样扩展组列表中则会出现root用户组的字样,而基本组不会受到影响:

[root@localhost ~]# usermod -G root weihongbin01

[root@localhost ~]# id weihongbin01

uid=1001(weihongbin01) gid=1001(weihongbin01) groups=1001(weihongbin01),0(root)

用-u参数修改weihongbin01用户的UID号码值:

[root@localhost ~]# usermod -u 9999 weihongbin01

[root@localhost ~]# id weihongbin01

uid=9999(weihongbin01) gid=1001(weihongbin01) groups=1001(weihongbin01),0(root)

把用户的解释器终端由默认的/bin/bash修改为/sbin/nolog:

[root@localhost ~]# usermod -s /sbin/nologin weihongbin01

[root@localhost ~]# su - weihongbin01

This account is currently not available.

将用户的终端设置成/sbin/nologin后用户马上就不能登录了,但这个用户依然可以被某个服务所调用,管理某个具体的服务。当黑客通过这个服务入侵成功后,破坏的范围也仅仅局限于这个特定的服务,而不能使用这个用户身份登录到整台服务器上,从而尽可能地把损失降至最小化。

5.  passwd命令

passwd命令用于修改用户的密码、过期时间等信息,语法格式为“passwd [参数] 用户名”

普通用户只能使用passwd命令修改自己的系统密码,而root管理员则有权限修改其他所有人的密码。

passwd命令参数及作用

参数作用
-l锁定用户,禁止其登录
-u解除锁定,允许用户登录
--stdin允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
-d使该用户可用空密码登录系统
-e强制用户在下次登录时修改密码
-S显示用户的密码是否被锁定,以及密码所采用的加密算法名称

修改自己的密码,只需要输入命令后敲击回车键即可:

[root@localhost ~]# passwd

Changing password for user root.

New password:  

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:  

passwd: all authentication tokens updated successfully.

要修改其他人的密码,则需要先检查当前是否为root管理员权限,然后在命令后指定要修改密码的那位用户的名称:

[root@localhost ~]# passwd weihongbin01

Changing password for user weihongbin01.

New password:  

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:  

passwd: all authentication tokens updated successfully.

使用passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。

[root@localhost ~]# passwd -l weihongbin01

Locking password for user weihongbin01.

passwd: Success

[root@localhost ~]# passwd -S weihongbin01

weihongbin01 LK 2023-11-17 0 99999 7 -1 (Password locked.)

在解锁时,记得也要使用管理员的身份;

[root@localhost ~]# passwd -u weihongbin01

Unlocking password for user weihongbin01.

passwd: Success

[root@localhost ~]# passwd -S weihongbin01

weihongbin01 PS 2023-11-17 0 99999 7 -1 (Password set, SHA512 crypt.)

6.  userdel命令

userdel命令用于删除已有的用户账户,语法格式为“userdel [参数] 用户名”

userdel命令中参数及作用

参数作用
-f强制删除用户
-r同时删除用户及用户家目录

在删除一个用户时,一般会建议保留他的家目录数据,以免有重要的数据被误删除。所以在使用userdel命令时可以不加参数,写清要删除的用户名称就行,用户删除但是家目录数据会继续存放在/home目录中,等确认未来不再使用时将其手动删除即可::

[root@localhost ~]# userdel weihongbin01

[root@localhost ~]# id weihongbin01

id: ‘weihongbin01’: no such user

[root@localhost ~]# cd /home

[root@localhost home]# ll

drwx------. 15 centos8      centos8      4096 Nov 15 10:38 centos8

drwx------.  3 jinyiwei01   jinyiwei01     78 Nov 16 16:43 linux

drwx------.  3         9999         1001   78 Nov 15 15:31 weihongbin01

[root@localhost home]# rm -rf weihongbin01

2. 文件权限与归属

文件权限解析可读(r)、可写(w)、可执行(x):可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。

读写执行权限对于文件与目录可执行命令的区别

image

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

image

减号是占位符,代表这里没有权限,在数字表示法中用0表示

image

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

image

普通文件(-)和目录文件(d)的身影。块设备文件(b)和字符设备文件(c)一般是指硬件设备,比如鼠标、键盘、光驱、硬盘等,在/dev/目录中最为常见

3. 文件的特殊权限

1.  SUID

SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)在使用命令时如果加上SUID特殊权限位,就可让普通用户临时获得程序所有者的身份。

[root@localhost home]# ll /etc/shadow

----------. 1 root root 1686 Nov 17 16:39 /etc/shadow

[root@localhost home]# ll /bin/passwd  

-rwsr-xr-x. 1 root root 33600 Apr  7  2020 /bin/passwd

加粗显示的字体用来告诫用户一定要小心这个权限,因为一旦某个命令文件被设置了SUID权限,就意味着凡是执行该文件的人都可以临时获取到文件所有者所对应的更高权限。因此,千万不要将SUID权限设置到vim、cat、rm等命令上

2.  SGID

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

[root@localhost home]# mkdir test

[root@localhost home]# ll test/

[root@localhost home]# ls -ald test/

drwxr-xr-x. 2 root root 6 Nov 17 16:54 test/

[root@localhost home]# chmod -R 777 test/

[root@localhost home]# ls -ald test/

drwxrwxrwx. 2 root root 6 Nov 17 16:54 test/

[root@localhost home]# chmod -R g+s test/

[root@localhost home]# ls -ald test/

drwxrwsrwx. 2 root root 6 Nov 17 16:54 test/

[root@localhost home]# mkdir -p test/123

[root@localhost home]# ls -ald test/123/

drwxr-sr-x. 2 root root 6 Nov 17 16:55 test/123/

chmod命令用于设置文件的一般权限及特殊权限,语法格式为“chmod [参数] 文件名”

文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限,则相应的字符法表示为rwxrw----,其对应的数字法表示为760。

[root@localhost ~]# ll anaconda-ks.cfg  

-rw-------. 1 root root 2788 Nov  9 15:44 anaconda-ks.cfg

[root@localhost ~]# chmod 760 anaconda-ks.cfg  

[root@localhost ~]# ll anaconda-ks.cfg  

-rwxrw----. 1 root root 2788 Nov  9 15:44 anaconda-ks.cfg

chown命令用于设置文件的所有者和所有组,语法格式为“chown所有者:所有组 文件名”

“所有者:所有组”的格式把前面那个文件的所属信息修改,变更后的效果如下:

[root@localhost ~]# chown weihongbin02:weihongbin02 anaconda-ks.cfg

[root@localhost ~]# ll anaconda-ks.cfg  

-rwxrw----. 1 weihongbin02 weihongbin02 2788 Nov  9 15:44 anaconda-ks.cfg

3.  SBIT

SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。文件的其他用户权限部分的x执行权限就会被替换成t或者T—原本有x执行权限则会写成t,原本没有x执行权限则会被写成T。

/tmp目录上的SBIT权限默认已经存在,这体现为“其他用户”权限字段的权限变为rwt:

[root@localhost ~]# ls -ald /tmp

drwxrwxrwt. 32 root root 4096 Nov 17 17:01 /tmp

赋予test文件最大的777权限(rwxrwxrwx)切换到一个普通用户身份下,尝试删除这个由其他人创建的文件,这时就会发现,即便读、写、执行权限全开,但是由于SBIT特殊权限位的缘故,依然无法删除该文件:

[root@localhost ~]# echo "123" > /tmp/test

[root@localhost ~]# chmod 777 /tmp/test  

[root@localhost ~]# ls -al /tmp/test  

-rwxrwxrwx. 1 root root 4 Nov 17 17:03 /tmp/test

[root@localhost ~]# su - weihongbin02

[weihongbin02@localhost ~]$ rm -rf /tmp/test  

rm: cannot remove '/tmp/test': Operation not permitted

使用特殊权限,就能实现很多巧妙的功能。使用chmod命令设置特殊权限

 SUID、SGID、SBIT特殊权限设置参数

参数作用
u+s设置SUID权限
u-s取消SUID权限
g+s设置SGID权限
g-s取消SGID权限
o+t设置SBIT权限
o-t取消SBIT权限

在家目录中创建一个名为linux的新目录,随后为其设置SBIT权限:

[root@localhost ~]# mkdir linux

[root@localhost ~]# chmod -R o+t linux/

[root@localhost ~]# ls -ld linux/

drwxr-xr-t. 2 root root 6 Nov 17 17:05 linux/

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。

image

特殊权限的5是由4+1组成的,意味着有SUID和SBIT。SUID和SGID的写法是,原先有执行权限则是小写s,如果没有执行权限则是大写S;而SBIT的写法则是,原先有执行权限是小写t,没有执行权限是大写T。一般权限的537进行字符转换后应为r-x-wxrwx,然后在此基础上增加SUID和SBIT特殊权限,合并后的结果是r-s-wxrwt。

image

UID占位是4,GID占位是2,BID占位是1,先占为小写,后占为大写,U和G的为s,B的为t

4. 文件的隐藏属性

Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。

1.  chattr命令

chattr命令用于设置文件的隐藏权限,语法格式为“chattr [参数] 文件名称”如果想要把某个隐藏功能添加到文件上,需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”

chattr命令中参数及作用

参数作用
i无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用dump命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并(tail-merging)
x可以直接访问压缩文件中的内容

设置“不允许删除与覆盖”(+a参数)权限,然后再尝试将这个文件删除:

[root@localhost ~]# echo "for Test" > linux

[root@localhost ~]# chattr +a linux  

[root@localhost ~]# rm -rf linux  

rm: cannot remove 'linux': Operation not permitted

2.  lsattr命令

lsattr命令用于查看文件的隐藏权限,语法格式为“lsattr [参数] 文件名称”

文件的隐藏权限必须使用lsattr命令来查看

[root@localhost ~]# ls -al linux

-rw-r--r--. 1 root root 9 Nov 17 17:22 linux

[root@localhost ~]# lsattr linux  

-----a-------------- linux

按照显示的隐藏权限的类型(字母),使用chattr命令将其去掉:

[root@localhost ~]# chattr -a linux  

[root@localhost ~]# rm -rf linux  

彻底地保护某个文件,不允许任何人修改和删除它的话,加上-i参数,彻底删除某个文件,可以使用+s参数来保证其被删除后不可恢复—硬盘上的文件数据会被用零块重新填充

5. 文件访问控制列表

基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限,更加精准地派发权限。针对某个目录设置了ACL,则目录中的文件会继承其ACL权限;若针对文件设置了ACL,则文件不再继承其所在目录的ACL权限。

[root@localhost ~]# su - weihongbin02

Last login: Fri Nov 17 17:03:51 CST 2023 on pts/0

[weihongbin02@localhost ~]$ cd /root

-bash: cd: /root: Permission denied

1.  setfacl命令

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

 setfacl命令中参数及作用

参数作用
-m修改权限
-M从文件中读取权限
-x删除某个权限
-b删除全部权限
-R递归子目录

为普通用户单独设置一下权限:

[root@localhost ~]# setfacl -Rm u:weihongbin02:rwx /root

再切换到这位普通用户的身份下,现在能正常进入了:

[root@localhost ~]# su - weihongbin02

Last login: Mon Nov 20 09:13:26 CST 2023 on pts/0

[weihongbin02@localhost ~]$ cd /root

[weihongbin02@localhost root]$ ll

-rw-rwxr--+   1 root         root          587202560 Nov  8 15:53 560

查看文件是否设置了ACL,文件权限的最后一个点(.)变成了加号(+),代表该文件已经设置了ACL。

[weihongbin02@localhost root]$ ls -ld /root

dr-xrwx---+ 17 root root 4096 Nov 17 17:25 /root

2.  getfacl命令

getfacl命令用于查看文件的ACL权限规则,语法格式为“getfacl [参数] 文件名称”查看ACL,用getfacl命令

[root@localhost ~]# getfacl /root/

getfacl: Removing leading '/' from absolute path names

# file: root/

# owner: root

# group: root

user::r-x

user:weihongbin02:rwx

group::r-x

mask::rwx

other::---

ACL权限还可以针对某个用户组进行设置

[root@localhost ~]# setfacl -m g:weihongbin02:rw /etc/fstab  

[root@localhost ~]# getfacl /etc/fstab  

getfacl: Removing leading '/' from absolute path names

# file: etc/fstab

# owner: root

# group: root

user::rw-

group::r--

group:weihongbin02:rw-

mask::rw-

other::r--

要清空所有ACL权限,请用-b参数;要删除某一条指定的权限,就用-x参数:

[root@localhost ~]# setfacl -x g:weihongbin02 /etc/fstab  

[root@localhost ~]# getfacl /etc/fstab  

getfacl: Removing leading '/' from absolute path names

# file: etc/fstab

# owner: root

# group: root

user::rw-

group::r--

mask::r--

other::r--

ACL权限的设置都是立即且永久生效的,不需要再编辑什么配置文件,在备份/home目录上的ACL权限时,可使用-R递归参数,这样不仅能够把目录本身的权限进行备份,还能将里面的文件权限也自动备份。

[root@localhost ~]# cd /

[root@localhost /]# getfacl -R home > backup.acl

[root@localhost /]# ll backup.acl  

-rw-r--r--. 1 root root 59442 Nov 20 09:27 backup.acl

ACL权限的恢复也很简单,使用的是--restore参数。

[root@localhost /]# setfacl --restore backup.acl  

6. su命令与sudo服务

su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户

[root@localhost /]# su - weihongbin02

Last login: Mon Nov 20 09:18:30 CST 2023 on pts/0

从普通用户切换成root管理员就需要进行密码验证

[weihongbin02@localhost ~]$ su -

Password:  

Last login: Mon Nov 20 09:13:06 CST 2023 from 192.168.227.1 on pts/0

su命令与用户名之间有一个减号(-)把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)

sudo命令用于给普通用户提供额外的权限,语法格式为“sudo [参数] 用户名”

sudo命令中可用参数及作用

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u 用户名或UID值以指定的用户身份执行命令
-k清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b在后台执行指定的命令
-p更改询问密码的提示语

使用sudo命令提供的visudo命令来配置用户权限,visudo命令用于编辑、配置用户sudo的权限文件,语法格式为“visudo [参数]”这是一条会自动调用vi编辑器来配置/etc/sudoers权限文件的命令,能够解决多个用户同时修改权限而导致的冲突问题

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

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

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

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

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

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

红色为新添加的用户及权限

[root@localhost /]# visudo

    99 ## Allow root to run any commands anywhere

   100 root    ALL=(ALL)       ALL

   101 weihongbin02 ALL=(ALL)       ALL

在填写完毕后记得要先保存再退出,然后切换至指定的普通用户身份,此时就可以用sudo -l命令查看所有可执行的命令了,验证的是普通用户的密码,而不是root管理员的密码

[root@localhost ~]# su - weihongbin02

Last login: Mon Nov 20 09:29:46 CST 2023 on pts/0

[weihongbin02@localhost ~]$ sudo -l

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:

   #1) Respect the privacy of others.

   #2) Think before you type.

   #3) With great power comes great responsibility.

[sudo] password for weihongbin02:  此处输入当前用户的密码

Matching Defaults entries for weihongbin02 on localhost:

   !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME

   HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE

   LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",

   env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User weihongbin02 may run the following commands on localhost:

   (ALL) ALL

作为一名普通用户,是肯定不能看到root管理员的家目录(/root)中的文件信息的,但是,只需要在想执行的命令前面加上sudo命令就行了,加之前先去掉之前加的root规则:

[root@localhost ~]# setfacl -x u:weihongbin02 /root

[weihongbin02@localhost ~]$ ll /root

ls: cannot open directory '/root': Permission denied

[weihongbin02@localhost ~]$ sudo ls /root

560   bash.txt Checkkeys.sh

需要让某个用户只能使用root管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统会识别不出来。这时,可以先使用whereis命令找出命令所对应的保存路径:

[root@localhost ~]# whereis cat

cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz

[root@localhost ~]# whereis reboot

reboot: /usr/sbin/reboot /usr/share/man/man8/reboot.8.gz /usr/share/man/man2/reboot.2.gz

使用visudo命令继续编辑权限文件,将原先第101行所新增的参数作如下修改,且多个命令之间用逗号(,)间隔:

[root@localhost ~]# visudo

    99 ## Allow root to run any commands anywhere

   100 root    ALL=(ALL)       ALL

   101 weihongbin02 ALL=(ALL) /usr/bin/cat,/usr/sbin/reboot

在编辑好后依然是先保存再退出。再次切换到指定的普通用户,然后尝试正常查看某个系统文件的内容,此时系统提示没有权限(Permission denied)。这时再使用sudo命令就能顺利地查看文件内容了:

[root@localhost ~]# su - weihongbin02

Last login: Mon Nov 20 09:42:20 CST 2023 on pts/0

[weihongbin02@localhost ~]$ cat /etc/shadow

cat: /etc/shadow: Permission denied

[weihongbin02@localhost ~]$ sudo cat /etc/shadow

[sudo] password for weihongbin02: 此处输入当前用户的密码

bin:*:18397:0:99999:7:::

daemon:*:18397:0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1253802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIGC创作系统ChatGPT网站源码、支持最新GPT-4-Turbo模型、GPT-4图片对话能力+搭建部署教程

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

居家适老化设计第三十一条---卫生间水龙头

以上产品图片均来源于淘宝 侵权联系删除 居家适老化中&#xff0c;水龙头是一个非常重要的设备。水龙头的选择应该考虑到老年人的特点和需求。首先&#xff0c;水龙头的操作应该简单方便&#xff0c;老年人手部灵活性可能不如年轻人&#xff0c;因此水龙头应该设计成易于转动和…

计算机网络常考计算题之循环冗余校验(宝典教学)

文章目录 奇偶效验循环冗余校验例题四步走另一种题型 本文讲述了计算机考研中易出现的循环冗余校验&#xff0c;点赞关注收藏不迷路哦 我是一名双非计算机本科生&#xff0c;希望我的文章可以帮助到你。 奇偶效验 奇偶校验&#xff1a;也可以检测数据在传输过程中是否出现错误…

Ceph----RBD块存储的使用:详细实践过程实战版

RBD 方式的 工作 流程&#xff1a; 1、客户端创建一个pool&#xff0c;并指定pg数量&#xff0c;创建 rbd 设备并map 到文件系统&#xff1b; 2、用户写入数据&#xff0c;ceph进行对数据切块&#xff0c;每个块的大小默认为 4M&#xff0c;每个 块名字是 object序号&#xff…

【UnLua】在 Lua 中定义 UE 反射类型

【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型&#xff08;开个临时的 Lua VM 即可&#xff09;直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …

算法基础之单链表

单链表 核心思想&#xff1a; 用数组模拟链表(new节点非常慢 用数组模拟快) e[N] 表示节点value ne[N]表示next指针指向 (空节点为-1) #include<iostream>using namespace std;const int N100010;//head头结点的指针//e[N] 表示节点value ne[N]表示next指针指向 //idx…

聚簇索引和非聚簇索引的区别;什么是回表

聚簇索引和非聚簇索引的区别 什么是聚簇索引&#xff1f;&#xff08;重点&#xff09; 聚簇索引就是将数据(一行一行的数据)跟索引结构放到一块&#xff0c;InnoDB存储引擎使用的就是聚簇索引&#xff1b; 注意点&#xff1a; 1、InnoDB使用的是聚簇索引&#xff08;聚簇索…

学习.NET验证模块FluentValidation的基本用法(续2:其它常见用法)

FluentValidation模块支持调用When和Unless函数设置验证规则的执行条件&#xff0c;其中when函数设置的是满足条件时执行&#xff0c;而Unless函数则是满足条件时不执行&#xff0c;这两个函数的使用示例如及效果如下所示&#xff1a; public AppInfoalidator() {RuleFor(x>…

CodeTON Round 7(D、E)

D - Ones and Twos 题意&#xff1a;给你一个长度为 n 的 数组 a &#xff0c;其中每个元素都是 1 或 2。请处理以下两种类型的询问 "1 s"&#xff1a;检查是否存在 a的子数组 &#xff0c;其总和等于 s。 "2 i v"&#xff1a;将 ai改为v。 如果数组 …

MySQL性能优化,SQL调优,SQL调优的手段

文章目录 对MySQL性能的优化的理解硬件和操作系统层面的优化架构设计层面的优化MySQL程序配置优化SQL优化 SQL调优有哪几种方式1.EXPLAIN2.SQL语句中IN包含的值不应过多3.SELECT语句务必指明字段名称4.当只需要一条数据的时候&#xff0c;使用limit 15.如果排序字段没有用到索引…

(附源码)SSM环卫人员管理平台 计算机毕设36412

目 录 摘要 1 绪论 1.1背景及意义 1.2国内外研究概况 1.3研究内容 1.4 ssm框架介绍 1.5论文结构与章节安排 2 环卫人员管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

面对困境时的力量——《难不难》与歌手荆涛的坚持

歌手荆涛演唱的《难不难》不仅是一首歌曲&#xff0c;更是一种精神的呈现。它告诉我们&#xff0c;面对问题时&#xff0c;只要我们坚持并勇往直前&#xff0c;一切困难都会变得简单。无论前方有多少险阻&#xff0c;总有过去的那一天&#xff0c;只要我们不放弃&#xff0c;就…

SAP smartforms二维码输出

此方法需要SAP_BASIS版本在731以上 TCODE-SE73 选择’系统条形码’点击 ‘更改’ 按步骤创建一个系统条形码 Module Size 调节二维码的尺寸 进入smartforms 创建样式 填入条形码名称 创建一张表单测试二维码&#xff0c;填入创建好的样式 测试结果&#xff1a;

快递批量查询高手软件,让你轻松掌握多家快递物流信息,提升工作效率

随着电子商务的繁荣和智能化物流的普及&#xff0c;快递行业在全球范围内迅速发展。在这个快节奏的时代&#xff0c;为了提高工作效率并更好地管理物流信息&#xff0c;一款强大的工具——快递批量查询高手软件应运而生。这款软件可以让你轻松掌握多家快递公司的物流信息&#…

CorelDRAW X7最新下载安装详细图文步骤教程

CorelDRAW X7是加拿大Corel公司推出的向量图形制作工具&#xff0c;经历二十多年的发展与蜕变&#xff0c;CorelDRAW系列已发布了17个版本&#xff0c;而CorelDRAW X7是此系列中的新版本。其完善的内容环境和强大的平面设计功能为设计师提供充分的施展舞台&#xff0c;是向量绘…

防火墙命令行基础配置实验(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求3. 当前配置3.1 PC配置3.2 FW配置&#xff08;防火墙&#xff09;[^7][^8]3.2.1 FW1配置3.2.2 FW2配置 3.3 R配置3.3.1 R1配置3.3.2 R2配置 3.4 SW配置3.4.1 SW1配置3.4.2 SW2配置3.4.3 SW3配置…

【漏洞复现】Array VPN任意文件读取漏洞

漏洞描述 华耀(中国)科技有限公司(简称:Array)于2003年创建于北京,是优秀的网络功能平台解决方案提供商,也是应用交付解决方案、移动应用接入(SSL VPN)解决方案的全球领导者。华耀现有员工200余人,其中研发团队占到100余人,总部位于北京。并在北京、上海、广州、杭…

二十五、DSL查询文档(全文检索查询、精确查询、地理查询、复合查询)

目录 一、全文检索查询 1、match查询 语法: 2、multi_match查询 语法: 3、match和mult_match的区别 二、精确查询 1、term查询&#xff1a; 语法&#xff1a; 2、range查询&#xff1a;&#xff08;范围查询&#xff09; 语法&#xff1a; 三、地理查询 1、geo_bou…

如何看待 2023 OPPO 开发者大会?潘塔纳尔进展如何?AndesGPT 有哪些亮点?

在2023年11月16日举行的OPPO开发者大会&#xff08;ODC23&#xff09;上&#xff0c;OPPO带来了全新ColorOS 14、全新互联网服务生态以及健康服务进展&#xff0c;这些新动态中有许多值得关注的地方。 1、全新ColorOS 14&#xff1a; 效率提升&#xff1a;ColorOS 14通过一系列…

Linux常用命令——bg命令

在线Linux命令查询工具 bg 用于将作业放到后台运行 补充说明 bg命令用于将作业放到后台运行&#xff0c;使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&amp;的效果是相同的&#xff0c;都是将其放到系统后台执行。 在Linux系统中执行某些操作时候&…