为什么会有 Root 权限?

2021-03-05 21:33:25 +08:00
 exc
5239 次点击
所在节点    问与答
74 条回复
SuperMild
2021-03-06 10:29:00 +08:00
@exc 可以在锁上留下更多的钥匙孔,可以的,因此我上面说了 “便利与安全永远对立,大多数情况下,客户、用户都会更看重便利性”。

一把锁上有多个钥匙孔,安全性提高了,理论上是一个更完美的产品,奈何缺少客户、用户的支持啊!

产品做出来,不是裱起来观赏的,要有人用才有价值。


用户、客户、老板的水平低,不重视安全,这是问题的关键所在,是他们让产品不能表现得又简洁又完美。一些非必要的 root 用户的出现,根源就是用户、客户、老板要求要有这个。
exc
2021-03-06 10:36:43 +08:00
@MozzieW 嗯嗯,你说的是,可在做编码时,你不觉得针对 Root 的处理很丑陋吗。他就好像一个钉子户一样钉在了程序里,非常的突兀。在软件设计上,这种硬编码也是反模式的一种。同时他的存在,也是数据安全最大的风险。

你说的这些理由虽然也是理由,但我认为在无 Root 的情况,也是可以解决的。
jay777
2021-03-06 10:37:04 +08:00
书读得不多而想得太多
exc
2021-03-06 10:47:03 +08:00
@SuperMild 那如果不考虑便利性,我们应当如何设计一个无 root 的程序呢?
SuperMild
2021-03-06 10:55:24 +08:00
@exc 两个方向,1.直接不做会影响安全的 api,2.增加执行高风险 api 的步骤(比如需要步验证、两人验证、要求各种前提条件)。
exc
2021-03-06 10:56:19 +08:00
@jay777 还请明说,谢谢。
exc
2021-03-06 11:15:00 +08:00
@nvkou 用户使用程序是使用程序提供的服务,用户数据理应只有用户本人可访问和操作,而 root 的存在却可以无视这个规则。那么又为何要保留 Root 呢?
exc
2021-03-06 11:17:25 +08:00
@SuperMild 谢谢,不过个人觉得牺牲这点便利性换取更好的系统安全是值得的。
imn1
2021-03-06 11:18:49 +08:00
你说的“硬编码”,是指没有鉴权,代码直接调用 root 么,这个操作跟 linux 直接用 root 登录一个思路

我只能说用 root 权限写入代码思路不对,或者说高控制代码应该分开写
当一个系统具有 root 用户权限时,应该同时也有普通用户权限,所以常用操作都应该以一般用户权限写,不创设普通用户而直接使用 root,是偷懒了
agagega
2021-03-06 11:19:59 +08:00
@exc 这样不是比特殊对待某个用户的做法更干净吗,而且把两个入口彻底分开,还能提高点安全性
Kinnice
2021-03-06 12:10:49 +08:00
1.单用户系统,你总要有个用户吧,就算是不需要输入用户名的,但是这个用户也是相当于是个 root 用户
2.多用户系统,总要有一个用户来管理其他用户吧,此时这个用户就是 root 用户,难道说每一个用户都能删除其他用户?另外有些全用户通用的文件比如 hosts,一个人修改全系统都会受到影响,难道人人都能修改? 还是说修改一次就要重新编译一次系统,为什么不能有个 root 用户可以对它进行修改呢。root 就是上帝模式。
Kinnice
2021-03-06 12:15:56 +08:00
@exc 另外 cms 系统中,如果有修改系统的名称或者删除其他普通用户账户的需求,随便一个普通用户就可以改 /删除?
大家都是普通用户你凭什么删除我?或者是有个主管的用户可以对普通用户来进行删除 /改,但是此时这个主管如果是写死的那他就是 root,如果是别人分配的,那分配者就是 root
所以需要一个 root(管理员)用户来进行操作。
exc
2021-03-06 12:46:30 +08:00
@imn1 额,路由器激活时、Linux 初次安装时、数据库初次运行时,都有提示输入 Root 或 Admin 的密码吧,这个 root 或 admin 是不是写死在系统代码里的?于我而言,这就是硬编码。
exc
2021-03-06 12:51:17 +08:00
@Kinnice 程序是提供服务所在,A 用户删除了 B 用户的数据,是程序 Bug,与 Root 有何关系,如果 A 用户拥有删除 B 数据的权限,也应该是 B 用户向 A 用户授权后的结果。如果在 B 用户不知情的情况下,A 用户可以删除 B 用户的数据,那么不管怎样,都是不应该发生的。因此在这里,Root 用户是没有存在的必要的。
exc
2021-03-06 12:54:18 +08:00
@agagega Root 用户可以对你的数据进行任何操作,安全吗?
MozzieW
2021-03-06 12:54:59 +08:00
@exc 用硬编码理解 Root 权限应该是不准确的,更应该把 Root 看做一个协议。
在需求上,既然能明确分权限是有意义的,那么把总的权限命名为 Root 还是 Admin 还是其他,都是偏好而已。把初始化交给用户,是一种选择。默认初始化为 Root,也是一种商定好的协议。
exc
2021-03-06 13:09:49 +08:00
@MozzieW 然鹅你不可否认的是,从编程角度看,Root 或类似的存在的确就是一种硬编码设计。如果说是现在的 Root 是协议的一种实现方式,那么是否有其他非硬编码的方案可以实现同样的效果呢,而非 Root 方案不可?
Kinnice
2021-03-06 13:47:07 +08:00
@exc 好家伙,你离职了,公司删你 oa 账号还得你同意?
Kinnice
2021-03-06 13:49:10 +08:00
@exc 老板 /管理员删你账号,还得你同意是吗?
YAFEIML
2021-03-06 14:27:27 +08:00
没有用户也就没有 root 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/758933

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX