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

目录

前言

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.mzph.cn/news/170412.shtml

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

相关文章

ssm+vue的物资物流系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的物资物流系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体…

JDK源码系列:StringBuffer与StringBuilder对比

一、源码分析StringBuffer与StringBuilder的区别 1、StringBuffer是多线程安全的&#xff0c;StringBuilder是多线程不安全的 多线程安全指的是 多个线程同时对一个对象进行append 等操作&#xff0c;不会出现覆盖、丢失的情况。 看下StringBuffer是如何做到多线程安全的&#…

BART 并行成像压缩感知重建:联合重建

本文使用 variavle-density possion-disc 采样的多通道膝盖数据进行并行重建和压缩感知重建。 0 数据欠采样sampling pattern 1 计算ESPIRiT maps % A visualization of k-space dataknee = readcfl(data/knee); ksp_rss = bart(rss 8, knee);ksp_rss = squeeze(ksp_rss); figu…

基于单片机的肺活量检测系统(论文+源码)

1.系统设计 在基于单片机的肺活量检测系统中&#xff0c;在硬件上整个系统通过利用主控制器STC89C52单片机来实现对整个系统进行控制的功能&#xff0c;通过采用LCD1602实现实时液晶显示数据的功能&#xff0c;通过肺活量传感器XGZP6847ADC0832实现监测肺活量的工作&#xff0…

终端移动性管理

联系前面所学的知识我们知道&#xff0c;移动性管理主要分为两大类&#xff1a;空闲状态下的移动性管理、连接状态下的移动性管理。我们今天来详细了解他们的工作原理~ 目录 移动性管理分类 1、空闲状态下的移动性管理 2、连接状态下的移动性管理 手机选择天线的原则 4G天…

使用Kibana让es集群形象起来

部署Elasticsearch集群详细步骤参考本人&#xff1a; https://blog.csdn.net/m0_59933574/article/details/134605073?spm1001.2014.3001.5502https://blog.csdn.net/m0_59933574/article/details/134605073?spm1001.2014.3001.5502 kibana部署 es集群设备 安装软件主机名…

Kafka系列 - 生产者客户端架构以及3个重要参数

整体架构 整个生产者客户端由两个县城协调运行&#xff0c;这两个线程分别为主线程和Sender线程&#xff08;发送线程&#xff09;。 主线程中由KafkaProducer创建消息&#xff0c;然后通过可能的拦截器&#xff0c;序列化器和分区器之后缓存到消息累加器&#xff08;RecordAc…

nodejs+vue+python+PHP+微信小程序-健身俱乐部在线管理平台的设计与实现-安卓-计算机毕业设计

随着经济的发展、财富的累积&#xff0c;人们生活水平、生活质量大幅度提高&#xff0c;生活环境得到明显改善&#xff0c;但是竞争激烈、人们生活压力大、生活节奏快加上饮食习惯和生活方式不合理导致国内 亚健康人群逐年增多。统计数据表明当前我国亚健康人群比例已经超过了7…

VScode

一、VSCode设置中文 1、首先我们打开vscode&#xff0c;进入编辑页面后点击左边栏的图示图标进入“EXTENSIONS”面板 2、进入后&#xff0c;在上方搜索“Chinese”&#xff0c;搜索到中文&#xff08;简体&#xff09;后&#xff0c;点击“install”按钮。 3、等待自动下载安装…

【一文讲清楚 Anaconda 相关环境配置】

文章目录 0 前言1 Package 与环境1.1 module1.2 package1.3 环境 2 Conda、Miniconda、Anaconda和Pip & PyPI2.1 Conda2. 2 Miniconda2.3 Anaconda2.3.1 Anaconda Navigator2.3.2 Anaconda PowerShell Prompt & Anaconda Prompt2.3.3 Jupyter notebook 2.4 Pip & P…

深度学习第二天:RNN循环神经网络

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 文章目录 介绍 记忆功能对比展现 任务描述 导入库 处理数据 前馈神经网络 循环神经网络 编译与训练模型 模型预测 可能的问题 梯度消失 梯…

2023/11/24JAVAweb学习

age只会执行成立的,show其实都展示了,通过display不展示 使用Vue,必须引入Vue.js文件 假如运行报错,以管理员身份打开vscode,再运行 ------------------------------------------------------------------- 更改端口号

HarmonyOS简述及开发环境搭建

一、HarmonyOS简介 1、介绍 HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。有三大系统特性&#xff0c;分别是&#xff1a;硬件互助&#xff0c;资源共享&#xff1b;一次开发&#xff0c;多端部署&#xff1b;统一OS&#xff0c;弹性部署。 HarmonyOS通过硬件互…

微服务实战系列之Nginx(技巧篇)

前言 今天北京早晨竟然飘了一些“雪花”&#xff0c;定睛一看&#xff0c;似雪非雪&#xff0c;像泡沫球一样&#xff0c;原来那叫“霰”。 自然中&#xff0c;雨雪霜露雾&#xff0c;因为出场太频繁&#xff0c;认识门槛较低&#xff0c;自然不费吹灰之力&#xff0c;即可享受…

基于 STM32 的温度测量与控制系统设计

本文介绍了如何基于 STM32 微控制器设计一款温度测量与控制系统。首先&#xff0c;我们将简要介绍 STM32 微控制器的特点和能力。接下来&#xff0c;我们将详细讨论温度传感器的选择与接口。然后&#xff0c;我们将介绍如何使用 STM32 提供的开发工具和相关库来进行温度测量和控…

电脑技巧:电脑常见蓝屏、上不了网等故障及解决办法

目录 一、电脑蓝屏 常见原因1: 病毒木马 常见原因2: 安装了不兼容的软件 二、电脑不能上网 常见原因1: 新装系统无驱动 常见原因2: DNS服务器异常 常见原因3: 硬件问题 三、电脑没声音 常见原因1: 未安装驱动 常见原因2: 硬件故障 四、电脑屏幕不显示 常见原因1: 显…

html实现我的故乡,城市介绍网站(附源码)

文章目录 1. 我生活的城市北京&#xff08;网站&#xff09;1.1 首页1.2 关于北京1.3 北京文化1.4 加入北京1.5 北京景点1.6 北京美食1.7 联系我们 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43…

2.19 keil里面工具EventCorder使用方法

设置方法如下&#xff1a; 添加初始化代码如下&#xff1a; eventRecord.c #include "eventRecord.h" #include "usart.h" extern UART_HandleTypeDef *pcControlUart;/* RecordEvent初始化 */ void InitEventRecorder(void) {#ifdef RTE_Compiler_Even…

[架构之路-251]:目标系统 - 设计方法 - 软件工程 - 软件建模 - 什么是建模,什么是软件系统建模?软件系统阶段性建模?正向建模与反向建模?

目录 前言&#xff1a; 一、什么是建模 1.1 什么是建模 1.2 常见的建模的方式与种类 二、什么是软件系统建模 2.1 软件系统建模的概念 2.2 软件系统常见的三种建模方法和手段 2.3 软件系统建模的常见工具 三、软件系统阶段性建模 3.1 软件工程在不同阶段对软件系统进…

合共软件创新亮相:第102届上海电子展成就技术新篇章

2023年&#xff0c;第102届中国&#xff08;上海&#xff09;电子展活动在全球瞩目中圆满落幕。作为下半年华东地区最具影响力的电子展会&#xff0c;此次盛会吸引了来自全球的600家领先企业&#xff0c;共同探讨电子元器件行业的最新发展成果和趋势。 本届展会围绕核心先导元器…