unix是什么用户,unix是什么意思中文翻译

  

  来自:众成翻译,译者:有马:当你意识到你在项目开始时所做的轻松简单的想法是完全错误的时候,你已经在这个项目上投入了六个月的时间。现在你需要解决这些问题,以保持这个系统的运行。你发现你在这个项目上的精力远远超出了你的预期。如果你一开始就用正确的方法做这件事,这件事就不会发生了。   

  

  今天,我要告诉你一个常见的错误,一个会给你带来无穷无尽问题的词,那就是“用户”。   

  

  链接:https://www.zcfy.cc/article/never-use-the-word-user-in-your-code   

  

  1.“用户”几乎不能很好地描述你的需求。   

  

  2.“用户”将导致一个基本的设计安全缺陷。   

  

  “用户”的概念很模糊,使用更精确的术语几乎总能取得更好的效果。   

  

  这个单词有两个最基本的错误:   

  

  起初,没有一个软件系统真正拥有用户。乍一看,“用户”是一个很好的描述,但如果你稍微想一想,你会发现你的业务逻辑其实比这复杂得多。   

  

  我就用三个例子,从一个极端的情况开始。   

  

  你没有使用者   

  

  机票预订系统没有“User”   

  

  乘客可以使用预订记录代码通过网站查询预订信息。买家可以通过信用卡号的后四位修改网站上的预订信息。旅行社可以查看和修改他们的预订。航空公司值机人员可以根据自己的角色和航空公司查看和修改预订信息,这需要旅客提供身份信息。我们就不一一列举了。与人类相关的一些基本概念有“游客”、“代理商”(网站也可视为代理商)、“买家”。“用户”这个概念根本没用,我在很多请求中根本不用这个词。例如,我们的请求必须包括乘客和代理的文档,而不是用户的文档。   

  

  我曾经给机票预订系统写过访问控制逻辑,下面只是一小部分需求:   

  

  让我们看一个不同的例子。Unix(现在称为POSIX)拥有可以登录并执行代码的用户。这个好看吗?让我们仔细看看。   

  

  Unix 没有 “User”   

  

  通过终端或图形界面登录的纵向邮件或web服务器等系统服务也将以“用户”身份运行。例如,nginx可以作为httpd用户运行。在服务器上,很多人经常共用一个管理员账号进行SSH登录(比如亚马逊的Ubuntu虚拟机默认的SSH账号是‘Ubuntu’)。根身份不同于上面的其他身份。正如我们将在如果我们把所有都当作“User”的话,我们将会有:,看到的,将这些概念称为“用户”会导致许多安全问题。   

  

  在操作上,由于POSIX的用户模型边界存在,我们甚至找不到一种方法来说“Alice和Bob只能通过这个账号登录”。   

  

  上面四个是几乎不同的概念,但是在POSIX上他们都是 “User”。   

  

  杰里米格林最近在Twitter上发布了https://twitter.com/jagthedrummer/status/1037812206602252291关于用户模型在SaaS的应用,这提醒了我第一次写这篇文章。他的基本观点是,SaaS的服务几乎总是:   

  

  组织中的个人为服务付费。一个或多个人一起使用这项服务。如果一开始就把这些人当成用户,就会陷入痛苦的世界。你不能建立一个团队模式,你不能建立一个同时为多人付费的模式,然后你就会开始改造你的系统。既然你已经从SaaS事件中吸取了教训,让我们来看看你的生活。   

  

  但这只是众多例子中的一个:“用户”的概念太模糊了。如果你开始怀疑“用户”这个词,最终你可能会发现你其实只需要两个概念:团队(用于组织关系和进行支付)和成员(实际使用服务的人)。   

  

  SaaS 服务提供商没有 “User”   

  

  ‘用户’这个词不仅仅是业务逻辑的问题,还会导致一系列的安全问题。“用户”这个词非常模糊,它从根本上结合了两个概念:   

  

  一个人。它们在软件中的表现。为了说明这个问题,假设您正怀着不良意图访问一个网站,其服务器上的图片导致您的浏览器内存溢出。远程网站控制您的浏览器,并开始向其服务上传您的文件。它为什么能做到这一点?   

  

  因为浏览器是作为系统用户运行的,所以被认为和你作为人类是一样的,而你其实是不一样的。作为“用户”,你不想上传文件。但是系统的账号也是“用户”,可以上传文件。如果浏览器在你的账号下运行,他的所有动作都会被视为你的意图,也就是说你告诉它这么做,其实不是。   

  

  这就是所谓的困惑依赖问题。如果你用“用户”这个词来描述两个根本不同的东西,那么这个问题更有可能成为你设计的一部分。   

  

  “User” 是一个安全问题   

  

  花更少的时间处理同样的问题是成为一个高效程序员的关键。用“用户”这样模糊的概念来组织你的软件,会耗费大量的时间和精力来解决未来的问题。一上来就开始编码看似很有成效,但事实恰恰相反。   

  

  下次当你开始一个新的软件项目时,请提前花几个小时确定你的术语和概念:虽然你这样做仍然不会完全正确,但你会做得更好。将来你会感谢你为防止浪费所做的一切。   

相关文章