pppcloud云主机内LINUX用户安全管理2

◆超级用户权限与授权

  ●建立多个超级用户

  不少新系统管理员认为root用户是唯一的超级用户,其实root只是系统默认的超级用户的名称,root并非因为它叫root而成为超级用户的。随便打开一个/etc/passwd文件的例子,你就会发现如下几行:

root:asiewhgYfaoO/J:0:0:root:/root:/bin/tcsh
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
lanf:Yuao56Ioyefg:0:0:bluewind:/home/bluewind:/bin/bash
jake:gUyfaiIodashfj:501:501:jake cheng:/home/jake:/bin/tcsh
apache:!!:502:502::/usr/local/apache:/bin/false

  可以看到,root的UID和GID都被设置为0了。实际上,超级用户的充要条件就是UID和GID都等于0。也就是说,任何用户,只要它的UID和GID都为0,就与常被称为root超级用户没有什么两样了。比如上面那个例子里面的lanf,也是一个超级用户。

  所以,可以将任何普通用户变成超级用户。但是,这样做并没有好处,很多时候这都会增加系统的隐患。除非在组织中需要多个系统管理员管理同一个系统,这就需要有多个超级用户帐号。这有利于各个管理员明确责任,通过日志知道不同的人分别做过什么事。

   还有一种情况,也可能出现多个超级用户帐号,那就是黑客入侵后设置一个看起来象普通帐号的用户,却修改了UID和GID使之为0。这样根本就不需要知道 root用户密码,就可以执行超级用户权限了。而从我们的系统管理员的一方来说,我们不可能时刻注意passwd文件的变化的,没有那个时间也没有那个精 力。这时只好编写一个脚本来帮助监视,例如:

/bin/grep ‘0:0’ /etc/passwd |awk ‘BEGIN{FS=”:”}
{print $1}’|mail –s “`date +”%D%T”`”root

  这是一个很小的脚本程序,使用了一些常规的命令来查看/etc/passwd文件,把UID和GID为0的行寄给root用户。把这个脚本放在/etc/cron.daily文件中让cron运行,root将每天收到一封信,报告当前的超级用户。

   实际上,由于PAM(可插入验证模块)的限制,在telnet上是不允许超级用户登入的,也就是说,黑客修改了自己的UID和GID后,想再次登陆从而 获得超级用户的权限的话,不修改/etc/seuretty文件是不可能的——除非你傻到自己添加了伪TTY设备ROOT用户登陆权限。一般可以让超级用 户先用普通用户帐号登陆,再su(su命令相关内容请参考本站命令查询部分)。

  ●为普通用户分配特权

  使用sudo命 令可以允许普通用户执行超级用户才能执行的命令。无论是基于信任的建立需要时间,还是基于是否存在这种必要,我们都不会把超级用户的所有权限轻易许人的。 这是网管工作的原则。所以,当一些用户必须访问某些内容时,我们可以配置sudo以允许单独的普通用户运行特权命令。

  sudo命令允许已经在/etc/sudoers文件中指定的用户运行超级用户命令。例如,一个已经获得许可的普通用户可以运行:

sudo vi /etc/passwd

  实际上,sudo的配置完全可以让我们指定某个列入/etc/sudoers文件的普通用户可以做什么、不可以做什么。/etc/sudoers的配置行如下:

  > 空行或注释行(以#字符打头):无用行。

  > 可选的主机别名行:用来创建主机列表的简称。必须以Host_Alias关键词开头,列表中的主机必须用逗号隔开。例如:

Host_Alias REDHAT=binbu,qd

  其中binbu和qd是俩主机名,你可以用REDHAT(别名)统称它们。

  >可选的用户别名行:用来创建用户列表的简称。用户别名行必须以User_Alias关键词开头,列表中的用户名必须以逗号隔开。其格式同主机别名行。

  >可选的命令别名行:用来创建命令列表的简称。必须以Cmnd_alias开头,列表中的命令必须用逗号隔开。

  >可选的运行方式别名行:也是用来创建用户列表的简称。不同的是,使用这样的别名可以告诉sudo程序以列表中某一用户的身份来运行程序。

  >必要的用户访问说明行:用户访问的说明语法如下:

user host= [run as user ] command list

   在user处指定一个真正的用户名或定义过的别名,同样的,host也可以是一个真正的主机名或者定义过的主机别名。默认情况下,sudo执行的所有命 令都是以root身份执行。如果你想使用其他身份可以指定。至于command list可以是以逗号分隔的命令列表,也可以是一个已经定义过的别名。例如:

lanf binbu=/sbin/shutdown

  这一句说明lanf可以在binbu主机上运行关机命令。

  注意:

  1、可以在一行定义多个别名,中间用:隔开。

  2、可以在命令或命令别名之前加上!号,使该命令或命令别名无效。

  3、有两个关键词:ALL 和NOPASSWD。ALL意味着“所有文件”(所有主机或所有命令),NOPASSWD意味着不用密码。

  下面是一个sudoers文件的例子:

#sudoers files
#User alias specification
User_Alias ADMIN=yourid:POWERUSER=hisid,herid
#user privilege specification
ADMIN ALL=ALL
POWERUSER ALL=ALL,!/bin/su

  第三行定义了两个别名ADMIN和POWERUSER,第五行说明在所有主机上ADMIN都可以以root身份执行所有命令。第六行给POWERUSER除了运行su命令外同等ADMIN的权限。

转载于:https://www.cnblogs.com/qq3391826735/p/5664291.html

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

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

相关文章

一份完全解读:是什么使神经网络变成图神经网络?

图1:来自(Bruna等人,ICLR,2014)的图,描绘了3D领域内的MNIST图像。虽然卷积网络很难对球面数据进行分类,但是图网络可以很自然地处理它。可以把它当做是一个处理工具,但在实际应用程序中会出现许多类似的任务…

linux的exec函数

在用fork函数创建子进程后,子进程往往要调用一个exec函数以执行另一个程序 当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程I D并未改变。exec只是…

python中get函数作用_python get函数有什么作用?示例解析

这篇文章之中我们来了解一下关于python字典之中的pythonget函数的相关知识,get函数是什么意思,他有什么作用都将会在接下来的文章之中得到解答。描述Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。语法get(…

C++vector的reserve和resize比原来的容量小

vector的resize()函数的作用是改变vector元素个数 reverse()函数的作用是改变容量 如果v.reserve(n)函数的n的大小比vector原来的容量小。容量没有变化。size也没有变: 如果v.resize(n)函数的n比vector原来的size小,结果是size…

sql server 游标的使用方法

数据库游标:是面向行来取数据集合的标识,可以很好的弥补面向表或数据集合阅读数据的不便之处;游标的内存消耗也很大,所以使用有标签还要衡量是否值得使用游标标识。 游标举例: declare test_cursor cursor --定义游标…

中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】

来源: 智东西RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学伯克利…

sha256校验工具_使用AIDE工具做入侵检测

AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。AIDE能够构造一个指定文档的数据库,他使用aide.conf作为其配置文档。AIDE数据库能够保存文档的各种属性,包括:权…

transition过渡的趣玩

本例中将三张图&#xff08;来自网络&#xff09;进行堆叠&#xff0c;鼠标悬停触发。附有源代码 <!DOCTYPE html> <html> <head><title>照片墙</title><meta charset"utf-8"><style type"text/css">.parent{wi…

内存管理之段错误

当程序试图访问不允许访问的内存位置&#xff0c;或试图以不允许的方式访问内存位置时会发生段错误。 几种常见的段错误&#xff1a; 使用野指针 试图修改字符串常量的内容 数组越界 堆栈溢出

网上花店系统源码_如何创建一个花店线上商城,可以开发一个微信小程序

说起来花店&#xff0c;相信很多人都去花店买过花&#xff0c;许多花店通常都是个人开的店&#xff0c;一般位置回去选取在人口稠密的地区&#xff0c;以求争取到附近的流量。一般来说&#xff0c;人们会在有人创业或做些开心的事&#xff0c;或者情人节时买鲜花。随着城市的不…

机器的类比

来源&#xff1a;人机与认知实验室如果说机器深度学习有几个重要的边界&#xff1a;数据边界、语义边界、符号边界和因果边界。那么突破这几个边界的口子可能就是——类比&#xff0c;不仅是比例类比&#xff0c;更是跨域机器类比机理的形成可能就是一条前进的光明大道。实质上…

ligerDialog的使用

1.通过ViewBag来传值。 if (ViewBag.ReturnMessage ! null) 2.脚本代码&#xff1a; 对话框设计与赋值问题。 <script type"text/javascript">$(function () {if (document.getElementById("dialog-BorrowInformation") ! null) {$.ligerDialog.open…

野指针和悬空指针

野指针就是没有被初始化过的指针&#xff1b; 悬空指针是指针最初指向的内存已经被释放了的一种指针

python求零点_python – 计算大序列的过零点的结果不同

这个问题源于查看this关于计算zero crossings数量的问题的答案.提供了几个解决问题的答案,但NumPyappproach在时间上摧毁了其他问题.问题&#xff1a;为什么NumPy解决方案提供的结果与其他三种解决方案不同&#xff1f; (哪个是正确的&#xff1f;)以下是计算过零次数的结果&am…

【深度】全球机器人产业趋势及特征分析

来源&#xff1a;工业机器人前沿当前&#xff0c;全球机器人市场规模持续扩大&#xff0c;工业机器人市场增速回落&#xff0c;服务、特种机器人增速稳定。技术创新围绕仿生结构、人工智能和人机协作不断深入&#xff0c;产品在教育陪护、医疗康复、危险环境等领域的应用持续拓…

git commit --amend修改git commit提交的message

当git commit -m "message"提交之后&#xff0c;在push之前&#xff0c;发现git commit中的message有误&#xff0c;想把提交的message改过来&#xff0c;有什么办法&#xff1f; 首先输入git commit --amend命令&#xff0c;此时会打开一个vim窗口&#xff0c;里面…

为什么多个线程不可能同时抢到一把锁_并发基础理论:原子性问题、锁、管程...

我们再回顾一下&#xff0c;原子性问题的根源是CPU切换线程执行指令所导致的&#xff0c;当前一个对共享变量的操作没有完成之前&#xff0c;CPU又切换到另外一个线程来操作对应的共享变量&#xff0c;那么最终产生的结果就可能出现问题。比如如果现在有两个线程都在执行number…

继智能手机之后,增强现实如何再次改变我们与世界的交互方式

来源&#xff1a;资本实验室作为面向未来的新技术&#xff0c;增强现实和虚拟现实在过去几年中的发展可以用不温不火来形容。尽管创业投资和市场规模都在不断扩大&#xff0c;但硬件设备、数据传输速度、沉浸式体验效果、分辨率等因素都制约着该技术的快速发展&#xff0c;而大…

UVALive 6885 Flowery Trails 最短路枚举

题目连接&#xff1a; http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id129723 题意&#xff1a; 给你一个n点m图的边 1到n有多条最短路&#xff0c;问你所有经过的边的总和*2是多少 题解&#xff1a; 对1,n分别求单源最短路径上spfa 枚举某条边是否为最短上的…

git撤销git commit

git reset --soft HEAD^ 这样就成功的撤销了上一次的commit 注意&#xff0c;仅仅是撤回commit操作&#xff0c;写的代码仍然保留。 如果想要连着add也撤销的话&#xff0c;--soft改为--hard&#xff0c;但注意&#xff1a;这样会删除工作空间的改动过代码&#xff01;&…