先做网站还是先做app,广州互联网,wordpress nginx 500错误,icp备案证书目录
前言
1. 用户身份与能力
2. 文件权限与归属
3. 文件的特殊权限
4. 文件的隐藏属性
5. 文件访问控制列表
6. su命令与sudo服务 前言
悟已往之不谏#xff0c;知来者之可追。实迷途其未远#xff0c;觉今是而昨非。舟遥遥以轻飏#xff0c;风飘飘而吹衣。问征夫以…目录
前言
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为1999Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器默认服务程序会由独立的系统用户负责运行进而有效控制被破坏范围。
普通用户UID从1000开始是由管理员创建的用于日常工作的用户。
用户组的概念。通过使用用户组号码GIDGroup IDentification可以把多个用户加入到同一个组中从而方便为组中的用户统一规划权限或指定任务。这个简单来讲就是小团体党争。
在Linux系统中创建每个用户时将自动创建一个与其同名的基本用户组而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组但是可以有多个扩展用户组从而满足日常的工作需要你被任命了先各自为战然后如果有人拉拢你其他用户就是扩展用户组但是基本用户组还是你你中有我我中有你天下事坏就坏在这里但是我们都是有基本立场的。
1. id命令
id命令用于显示用户的详细信息语法格式为“id用户名”
使用id命令查看一个名称为linuxprobe的用户信息
[rootlocalhost ~]# id centos8
uid1000(centos8) gid1000(centos8) groups1000(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命令确认信息
[rootlocalhost ~]# useradd weihongbin04
[rootlocalhost ~]# id weihongbin04
uid1004(weihongbin04) gid1004(weihongbin04) groups1004(weihongbin04)
创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器/sbin/nologin它是终端解释器中的一员与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin则代表该用户不能登录到系统中
[rootlocalhost ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin jinyiwei01
[rootlocalhost ~]# id jinyiwei01
uid8888(jinyiwei01) gid8888(jinyiwei01) groups8888(jinyiwei01)
3. groupadd命令
groupadd命令用于创建新的用户组语法格式为“groupadd [参数] 群组名”
创建一个用户组cabinet内阁
[rootlocalhost ~]# 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用户组的字样而基本组不会受到影响
[rootlocalhost ~]# usermod -G root weihongbin01
[rootlocalhost ~]# id weihongbin01
uid1001(weihongbin01) gid1001(weihongbin01) groups1001(weihongbin01),0(root)
用-u参数修改weihongbin01用户的UID号码值
[rootlocalhost ~]# usermod -u 9999 weihongbin01
[rootlocalhost ~]# id weihongbin01
uid9999(weihongbin01) gid1001(weihongbin01) groups1001(weihongbin01),0(root)
把用户的解释器终端由默认的/bin/bash修改为/sbin/nolog
[rootlocalhost ~]# usermod -s /sbin/nologin weihongbin01
[rootlocalhost ~]# 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显示用户的密码是否被锁定以及密码所采用的加密算法名称
修改自己的密码只需要输入命令后敲击回车键即可
[rootlocalhost ~]# 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管理员权限然后在命令后指定要修改密码的那位用户的名称
[rootlocalhost ~]# 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命令禁止该用户登录系统等假期结束回归工作岗位时再使用该命令允许用户登录系统而不是将其删除。
[rootlocalhost ~]# passwd -l weihongbin01
Locking password for user weihongbin01.
passwd: Success
[rootlocalhost ~]# passwd -S weihongbin01
weihongbin01 LK 2023-11-17 0 99999 7 -1 (Password locked.)
在解锁时记得也要使用管理员的身份
[rootlocalhost ~]# passwd -u weihongbin01
Unlocking password for user weihongbin01.
passwd: Success
[rootlocalhost ~]# 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目录中等确认未来不再使用时将其手动删除即可
[rootlocalhost ~]# userdel weihongbin01
[rootlocalhost ~]# id weihongbin01
id: ‘weihongbin01’: no such user
[rootlocalhost ~]# cd /home
[rootlocalhost 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
[rootlocalhost home]# rm -rf weihongbin01
2. 文件权限与归属
文件权限解析可读r、可写w、可执行x可读”表示能够读取文件的实际内容“可写”表示能够编辑、新增、修改、删除文件的实际内容“可执行”则表示能够运行一个脚本程序。
读写执行权限对于文件与目录可执行命令的区别 文件的可读、可写、可执行权限的英文全称分别是read、write、execute可以简写为r、w、x亦可分别用数字4、2、1来表示文件所有者、文件所属组及其他用户权限之间无关联 减号是占位符代表这里没有权限在数字表示法中用0表示 文件的类型、访问权限、所有者属主、所属组属组、占用的磁盘大小、最后修改时间和文件名称等信息。通过分析可知该文件的类型为普通文件所有者权限为可读、可写rw-所属组权限为可读r--除此以外的其他人也只有可读权限r--文件的磁盘占用大小是34298字节最近一次的修改时间为4月2日的0:23文件的名称为install.log 普通文件-和目录文件d的身影。块设备文件b和字符设备文件c一般是指硬件设备比如鼠标、键盘、光驱、硬盘等在/dev/目录中最为常见
3. 文件的特殊权限
1. SUID
SUID是一种对二进制程序进行设置的特殊权限能够让二进制程序的执行者临时拥有所有者的权限仅对拥有执行权限的二进制程序有效在使用命令时如果加上SUID特殊权限位就可让普通用户临时获得程序所有者的身份。
[rootlocalhost home]# ll /etc/shadow
----------. 1 root root 1686 Nov 17 16:39 /etc/shadow
[rootlocalhost home]# ll /bin/passwd
-rwsr-xr-x. 1 root root 33600 Apr 7 2020 /bin/passwd
加粗显示的字体用来告诫用户一定要小心这个权限因为一旦某个命令文件被设置了SUID权限就意味着凡是执行该文件的人都可以临时获取到文件所有者所对应的更高权限。因此千万不要将SUID权限设置到vim、cat、rm等命令上
2. SGID
SGID特殊权限有两种应用场景当对二进制程序进行设置时能够让执行者临时获取文件所属组的权限当对目录进行设置时则是让目录内新创建的文件自动继承该目录原有用户组的名称。
[rootlocalhost home]# mkdir test
[rootlocalhost home]# ll test/
[rootlocalhost home]# ls -ald test/
drwxr-xr-x. 2 root root 6 Nov 17 16:54 test/
[rootlocalhost home]# chmod -R 777 test/
[rootlocalhost home]# ls -ald test/
drwxrwxrwx. 2 root root 6 Nov 17 16:54 test/
[rootlocalhost home]# chmod -R gs test/
[rootlocalhost home]# ls -ald test/
drwxrwsrwx. 2 root root 6 Nov 17 16:54 test/
[rootlocalhost home]# mkdir -p test/123
[rootlocalhost home]# ls -ald test/123/
drwxr-sr-x. 2 root root 6 Nov 17 16:55 test/123/
chmod命令用于设置文件的一般权限及特殊权限语法格式为“chmod [参数] 文件名”
文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限则相应的字符法表示为rwxrw----其对应的数字法表示为760。
[rootlocalhost ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 2788 Nov 9 15:44 anaconda-ks.cfg
[rootlocalhost ~]# chmod 760 anaconda-ks.cfg
[rootlocalhost ~]# ll anaconda-ks.cfg
-rwxrw----. 1 root root 2788 Nov 9 15:44 anaconda-ks.cfg
chown命令用于设置文件的所有者和所有组语法格式为“chown所有者:所有组 文件名”
“所有者:所有组”的格式把前面那个文件的所属信息修改变更后的效果如下
[rootlocalhost ~]# chown weihongbin02:weihongbin02 anaconda-ks.cfg
[rootlocalhost ~]# 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
[rootlocalhost ~]# ls -ald /tmp
drwxrwxrwt. 32 root root 4096 Nov 17 17:01 /tmp
赋予test文件最大的777权限rwxrwxrwx切换到一个普通用户身份下尝试删除这个由其他人创建的文件这时就会发现即便读、写、执行权限全开但是由于SBIT特殊权限位的缘故依然无法删除该文件
[rootlocalhost ~]# echo 123 /tmp/test
[rootlocalhost ~]# chmod 777 /tmp/test
[rootlocalhost ~]# ls -al /tmp/test
-rwxrwxrwx. 1 root root 4 Nov 17 17:03 /tmp/test
[rootlocalhost ~]# su - weihongbin02
[weihongbin02localhost ~]$ rm -rf /tmp/test
rm: cannot remove /tmp/test: Operation not permitted
使用特殊权限就能实现很多巧妙的功能。使用chmod命令设置特殊权限 SUID、SGID、SBIT特殊权限设置参数
参数作用us设置SUID权限u-s取消SUID权限gs设置SGID权限g-s取消SGID权限ot设置SBIT权限o-t取消SBIT权限
在家目录中创建一个名为linux的新目录随后为其设置SBIT权限
[rootlocalhost ~]# mkdir linux
[rootlocalhost ~]# chmod -R ot linux/
[rootlocalhost ~]# 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。 特殊权限的5是由41组成的意味着有SUID和SBIT。SUID和SGID的写法是原先有执行权限则是小写s如果没有执行权限则是大写S而SBIT的写法则是原先有执行权限是小写t没有执行权限是大写T。一般权限的537进行字符转换后应为r-x-wxrwx然后在此基础上增加SUID和SBIT特殊权限合并后的结果是r-s-wxrwt。 UID占位是4GID占位是2BID占位是1先占为小写后占为大写U和G的为sB的为t
4. 文件的隐藏属性
Linux系统中的文件除了具备一般权限和特殊权限之外还有一种隐藏权限即被隐藏起来的权限默认情况下不能直接被用户发觉。
1. chattr命令
chattr命令用于设置文件的隐藏权限语法格式为“chattr [参数] 文件名称”如果想要把某个隐藏功能添加到文件上需要在命令后面追加“参数”如果想要把某个隐藏功能移出文件则需要追加“-参数”
chattr命令中参数及作用
参数作用i无法对文件进行修改若对目录设置了该参数则仅能修改其中的子文件内容而不能新建或删除文件a仅允许补充追加内容无法覆盖/删除内容Append OnlyS文件内容在变更后立即同步到硬盘syncs彻底从硬盘中删除不可恢复用0填充原文件所在硬盘区域A不再修改这个文件或目录的最后访问时间atimeb不再修改文件或目录的存取时间D检查压缩文件中的错误d使用dump命令备份时忽略本文件/目录c默认将文件或目录进行压缩u当删除该文件后依然保留其在硬盘中的数据方便日后恢复t让文件系统支持尾部合并tail-mergingx可以直接访问压缩文件中的内容
设置“不允许删除与覆盖”a参数权限然后再尝试将这个文件删除
[rootlocalhost ~]# echo for Test linux
[rootlocalhost ~]# chattr a linux
[rootlocalhost ~]# rm -rf linux
rm: cannot remove linux: Operation not permitted
2. lsattr命令
lsattr命令用于查看文件的隐藏权限语法格式为“lsattr [参数] 文件名称”
文件的隐藏权限必须使用lsattr命令来查看
[rootlocalhost ~]# ls -al linux
-rw-r--r--. 1 root root 9 Nov 17 17:22 linux
[rootlocalhost ~]# lsattr linux
-----a-------------- linux
按照显示的隐藏权限的类型字母使用chattr命令将其去掉
[rootlocalhost ~]# chattr -a linux
[rootlocalhost ~]# rm -rf linux
彻底地保护某个文件不允许任何人修改和删除它的话加上-i参数彻底删除某个文件可以使用s参数来保证其被删除后不可恢复—硬盘上的文件数据会被用零块重新填充
5. 文件访问控制列表
基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限更加精准地派发权限。针对某个目录设置了ACL则目录中的文件会继承其ACL权限若针对文件设置了ACL则文件不再继承其所在目录的ACL权限。
[rootlocalhost ~]# su - weihongbin02
Last login: Fri Nov 17 17:03:51 CST 2023 on pts/0
[weihongbin02localhost ~]$ cd /root
-bash: cd: /root: Permission denied
1. setfacl命令
setfacl命令用于管理文件的ACL权限规则语法格式为“setfacl [参数] 文件名称”ACL权限提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制。使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中针对目录文件需要使用-R递归参数针对普通文件则使用-m参数如果想要删除某个文件的ACL则可以使用-b参数。 setfacl命令中参数及作用
参数作用-m修改权限-M从文件中读取权限-x删除某个权限-b删除全部权限-R递归子目录
为普通用户单独设置一下权限
[rootlocalhost ~]# setfacl -Rm u:weihongbin02:rwx /root
再切换到这位普通用户的身份下现在能正常进入了
[rootlocalhost ~]# su - weihongbin02
Last login: Mon Nov 20 09:13:26 CST 2023 on pts/0
[weihongbin02localhost ~]$ cd /root
[weihongbin02localhost root]$ ll
-rw-rwxr-- 1 root root 587202560 Nov 8 15:53 560
查看文件是否设置了ACL文件权限的最后一个点.变成了加号代表该文件已经设置了ACL。
[weihongbin02localhost root]$ ls -ld /root
dr-xrwx--- 17 root root 4096 Nov 17 17:25 /root
2. getfacl命令
getfacl命令用于查看文件的ACL权限规则语法格式为“getfacl [参数] 文件名称”查看ACL用getfacl命令
[rootlocalhost ~]# 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权限还可以针对某个用户组进行设置
[rootlocalhost ~]# setfacl -m g:weihongbin02:rw /etc/fstab
[rootlocalhost ~]# 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参数
[rootlocalhost ~]# setfacl -x g:weihongbin02 /etc/fstab
[rootlocalhost ~]# 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递归参数这样不仅能够把目录本身的权限进行备份还能将里面的文件权限也自动备份。
[rootlocalhost ~]# cd /
[rootlocalhost /]# getfacl -R home backup.acl
[rootlocalhost /]# ll backup.acl
-rw-r--r--. 1 root root 59442 Nov 20 09:27 backup.acl
ACL权限的恢复也很简单使用的是--restore参数。
[rootlocalhost /]# setfacl --restore backup.acl
6. su命令与sudo服务
su命令可以解决切换用户身份的需求使得当前用户在不退出登录的情况下顺畅地切换到其他用户
[rootlocalhost /]# su - weihongbin02
Last login: Mon Nov 20 09:18:30 CST 2023 on pts/0
从普通用户切换成root管理员就需要进行密码验证
[weihongbin02localhost ~]$ 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这样的文件名称来限制命令列表多个命令文件之间用逗号,间隔。
红色为新添加的用户及权限
[rootlocalhost /]# visudo 99 ## Allow root to run any commands anywhere 100 root ALL(ALL) ALL 101 weihongbin02 ALL(ALL) ALL
在填写完毕后记得要先保存再退出然后切换至指定的普通用户身份此时就可以用sudo -l命令查看所有可执行的命令了验证的是普通用户的密码而不是root管理员的密码
[rootlocalhost ~]# su - weihongbin02
Last login: Mon Nov 20 09:29:46 CST 2023 on pts/0
[weihongbin02localhost ~]$ 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_keepCOLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS, env_keepMAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE, env_keepLC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES, env_keepLC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE, env_keepLC_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规则
[rootlocalhost ~]# setfacl -x u:weihongbin02 /root
[weihongbin02localhost ~]$ ll /root
ls: cannot open directory /root: Permission denied
[weihongbin02localhost ~]$ sudo ls /root
560 bash.txt Checkkeys.sh
需要让某个用户只能使用root管理员的身份执行指定的命令切记一定要给出该命令的绝对路径否则系统会识别不出来。这时可以先使用whereis命令找出命令所对应的保存路径
[rootlocalhost ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[rootlocalhost ~]# whereis reboot
reboot: /usr/sbin/reboot /usr/share/man/man8/reboot.8.gz /usr/share/man/man2/reboot.2.gz
使用visudo命令继续编辑权限文件将原先第101行所新增的参数作如下修改且多个命令之间用逗号,间隔
[rootlocalhost ~]# 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命令就能顺利地查看文件内容了
[rootlocalhost ~]# su - weihongbin02
Last login: Mon Nov 20 09:42:20 CST 2023 on pts/0
[weihongbin02localhost ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[weihongbin02localhost ~]$ sudo cat /etc/shadow
[sudo] password for weihongbin02: 此处输入当前用户的密码
bin:*:18397:0:99999:7:::
daemon:*:18397:0