开发人员是否应该在他们的PC上拥有管理员权限,或者是否为他们提供足够的用户访问权限?
一些意见:
我们是由5名开发人员组成的团队并构建Web应用程序
答案 0 :(得分:213)
答案是'是'。开发人员需要使用系统配置来测试项目,安装软件(如果没有别的,测试他们正在开发的任何东西的安装过程),戳一下注册表并运行没有管理员权限就无法正常工作的软件(只是列出几个项目)。开发工作中还有许多其他任务需要管理权限才能完成。
请注意,开发人员不一定拥有对生产系统的root访问权限,本地PC上的管理员权限不会严重影响生产系统的安全性。对于需要它来完成工作的员工来说,限制对本地PC的管理员访问几乎没有合法的操作原因。
但是,提供管理访问权限的最重要原因是设置受损或二级开发环境会向开发人员发送消息:
'我们非常重视您的工作,以至于我们 准备好了 损害你的工作能力 没有充分的理由。事实上,我们是 很乐意这样做来掩盖我们自己 屁股,迎合一时兴起 小官僚或 因为我们根本无法打扰。 那只是最好的情况。最不好的 案例是我们真的是 控制狂的类型,将其视为 我们的perogative告诉你如何 做你的工作以及你做什么或不做什么 需要这样做。凑合什么 你得到了,并感激不尽 你根本找到了一份工作。'
一般来说,为开发人员提供二流(更不用说根本上有缺陷的)工作环境是导致员工生气的自然结果的一个因素 - 无法留住有能力的人员,员工流动率高,士气低落,交付质量差。不顾一切地这样做 - 特别是如果有一种泛滥到官僚主义的突发奇想 - 这是不负责任的。
请记住,您的员工流失不仅会导致更换员工的成本。员工流动的最严重成本是,大多数人员流失的工作将是无法获得更好工作的枯木。随着时间的推移,这会降低受影响部门的能力。如果您的行业足够接近,您也会发现自己获得声誉。
需要注意的一点是,管理权限在unix-oid或大型机系统上的开发问题远不如在Windows上进行。在这些平台上,用户可以在自己的域中执行更多操作,而无需系统范围的权限。您可能仍然希望开发人员拥有root或sudo访问权限,但不会让这种情况更少发生。这种灵活性是计算机科学学校中unix派生操作系统持续流行的一个重要但鲜为人知的原因。
答案 1 :(得分:82)
开发人员应该对他们正在使用的机器进行全面和完全控制。大多数调试工具都需要管理员权限才能挂钩他们正在构建的应用程序的运行时。
此外,开发人员经常下载并尝试新事物。添加额外的步骤,例如需要网络管理员来为他们安装一些东西只会让开发人员感到沮丧,并且很快会让网络操作员感到生气。
那就是说,他们应该是THEIR框的管理员,而不是网络。
答案 2 :(得分:45)
是和否。
是的,它节省了大量时间来打扰系统支持。
不,您的用户没有它,所以不要指望它。
我们使用管理员权限开发并且没有测试。这是正确的。
答案 3 :(得分:18)
本地管理员是,出于上述所有原因。网络管理员没有,因为他们将不可避免地被吸引到网络管理任务,因为“他们可以”。开发者应该发展。网络管理是一项完全不同的工作。
答案 4 :(得分:13)
开发人员通常需要做一般人不会做的事情,因此通常应该有管理员帐户。让他们跳过尴尬的篮球会浪费他们的时间并使他们士气低落。在高安全性情况下可能存在例外情况,但如果您不相信拥有管理员帐户的人,您肯定无法信任他们的代码。
他们还应拥有与其用户具有相同权限的可用帐户(如果用户池具有不同的权限状态,则应有多个帐户)。否则,他们可能只是开发一些很酷的东西,部署它,然后发现它对用户不起作用。
使用管理员帐户搞砸计算机的方法也太多了(是的,我已经完成了)。 IT部门需要一个策略,如果他们无法快速修复,他们将重新映像开发人员的计算机。在我签约的一个地方,我必须签署该政策的副本才能获得我的管理员帐户。
这是一个非常适合Windows的答案。在Linux和其他Unix-y系统中,开发人员可以更频繁地使用用户帐户,通常不需要另一个帐户进行测试(如果他们有一个他们可以使用的帐户,他们确实知道他们何时使用sudo,但是他们可能需要具有相同组权限的那个),并且可以非常容易地对操作系统造成难以置信的损害,因此需要相同的IT策略。
答案 5 :(得分:10)
是的,半条命1(以及所有相关模组:反击,失败日等)需要管理员权限(至少在第一次运行,我认为)才能在Windows NT,2000中正常工作, XP等等。
而且,什么样的开发者在午餐时间不玩反恐精英? (肯定是一个糟糕的人)
答案 6 :(得分:8)
经历了在机器上没有管理员权限的情况下开发的痛苦,我的答案只能是肯定的,这是必不可少的。
答案 7 :(得分:7)
绝对!我怎样才能安装下载管理器以便在晚上下载电影?
有时开发人员确实需要在系统中安装或更改某些内容以测试一些想法。如果您每次需要更改某些内容时都必须致电管理员,那将是不可能的。
我个人也观察到,有些管理员倾向于尽可能地拧紧所有可能的东西,以便让每天都有一些小东西依赖于他们......因此,确保他们的工作安全?惹恼其他用户?没有答案。但这里没有看到常识。
上次我的电脑出现问题时,我积极参与恢复系统,在管理员的团队中提出了一些建议,或者我认为......管理员变得非常生气并指责我试图教他或重新定义规则。我想这只是他的自负,因为在我们的房间和其他同事之间没有看到他很酷。
答案 8 :(得分:7)
答案是,开发人员应该有2台机器!!
一个具有管理员权限和足够功率,内存,屏幕大小和可移植性以及ADMIN权限的开发项目,加载了企业防病毒软件,但在需要时可由开发人员配置自动复位策略。
< / LI>一个拥有企业负载,策略,非管理员用户权限等的企业...开发人员可以使用这个用于单元测试发布模式应用程序,因为一些开发人员有一个讨厌的习惯,即使用所有单元测试管理员权限。
答案 9 :(得分:5)
作为系统管理员,我是所有开发人员在其工作站上拥有本地管理员权限的人。在可能的情况下,使用标准的“用户”级帐户执行大多数操作然后使用其他“管理员”帐户进行更改,安装应用程序等并不是一个坏主意。通常,您可以使用sudo或runas来完成您想要的操作而无需记录出。提醒我们最终用户在发布到生产时必须跳过的安全问题也是有帮助的。
另一方面,建议使用[干净]系统或VM,以便您可以正确测试,而不会因为系统调整而进入“它在我的系统上看起来/工作正常”的情况。
答案 10 :(得分:5)
如果你反驳这个问题,我认为回答起来会更容易;我们应该删除开发人员的管理员权限有什么好处?
但实际上,我认为答案取决于您的环境,您的环境。小型创业公司将对ISO认证的政府机构有不同的答案。
答案 11 :(得分:5)
是的,但他们需要了解用户在更有限的环境中运行软件时将面临的限制。开发人员应该可以轻松访问资源和权限有限的“典型”环境。在过去,我已经将构建部署到这些“典型”系统之一(通常是我自己工作站上的VM)作为构建过程的一部分,因此我总能快速了解软件如何工作 - 用户的机器。
程序员还有责任了解为非管理员用户编写软件的快速规则。他们应该确切地知道他们总是被允许(或禁止)访问哪些系统资源。他们应该知道用于获取这些资源的API。
“它适用于我的机器”绝不是一个借口!
答案 12 :(得分:3)
首先,Power User基本上是一名管理员 - 因此“限制”用户加入Power User并不能提高系统的安全性 - 您可能也是管理员。
其次,当然开发人员需要对其开发人员计算机(以及服务器和第二个框等)进行管理访问,但当然没有人应该在正常开发或测试期间以管理员身份进行交互式登录。为此和大多数应用程序使用普通用户帐户。
您真的不想以管理员身份运行[插入任何浏览器,插件,IM,电子邮件客户端等]。
您通常也不会以root用户身份登录Linux机器,即使您在需要时可能具有超级用户权限。
为开发人员提供一个单独的个人管理员帐户到他/她的机器(最好是域帐户),该帐户也是该人员需要管理访问权限的其他开发/测试服务器和盒子的有效管理员。
利用“运行方式”并在Vista + UAC中提示或请求提示,并仅在需要时输入任务和进程的管理凭据。具有智能卡或类似功能的PKI可以大大减少经常输入凭证的压力。
然后审核访问权限。这种方式具有可追溯性,并且可以轻松找到谁在您必须立即访问的特定开发/测试服务器上使用终端服务会话...
当然,肯定的开发工作永远不需要本地管理员权限 - 比如大多数Web开发,其中部署是针对单独的服务器或虚拟机进行测试的,而cassini或其他任何用于本地调试的工作实际上作为普通用户运行良好。
答案 13 :(得分:3)
我主要在* nix世界工作,标准模型允许开发人员在普通的非特权用户帐户中工作,并且能够(通过sudo
或su
)升级到必要时管理员权限。
我不确定相同的Windows安排是什么,但根据我的经验,这是理想的设置:
一方面,根据需要提供管理员权限,可以在需要时为开发人员提供全面的电源。
另一方面,Windows软件长期以来一直假设所有用户都拥有管理员权限,以至于许多程序不会为非管理员用户运行。许多Windows的安全问题直接源于这一隐含的要求,即为了能够可靠地使用计算机,所有用户必须是管理员。 必须更改,确保您的软件为非管理员用户运行的最有效方法是让开发人员以非管理员用户身份运行它。
答案 14 :(得分:3)
[道歉英语不是我的母语,尽我所能:)] 那么,
个人经验(我是c ++ / SQL开发人员):
我以前的工作曾经是我的Windows机器管理员。我还拥有数据库的dbo(非dba)权限,包括生产环境数据库。在2年半的时间里,8人拥有这些疯狂的高权利......我们从来没有遇到任何麻烦。实际上我们通过手动更新db解决了很多问题。我们可以为热修复和开发人员做很多事情。
现在我改变了工作。我管理(哭了很多)是我的Windows机器的管理员。但是开发服务器是我们使用ssh连接的红帽服务器。试图安装Qt是一种折磨,配额限制,空间限制,执行和写权限。我们终于放弃了,并要求管理员为我们做。 2周后仍未安装任何东西。我在报纸阅读和alt + tab击中时非常快。
我要求管理员权限,因为只有我的软件使用这台机器。
- &GT;回答:“如果有进程,你不要做你想做的任何事情。它必须在prod中运行一次”。
- &GT;试图向非技术经理解释:“我在生产或UAT环境中没有任何管理员权限。但是我的开发机器不同。如果我要建造椅子而不是软件,你能告诉我我不能放我想在工作室里找到什么工具,因为我的工作室需要看起来像椅子的使用位置? 我给了一个可执行的包。我用来构建它们的库和工具对最终用户或安装包的人来说是不可见的。“
我今天还在等。我找到了一个解决方案,打开一个开发环境,去你最喜欢的在线评委,挑战自己。当有人看你的屏幕时,他会看着你编程。 ;)
答案 15 :(得分:2)
您可以通过两种方式回答这个问题。是和否,或者取决于。 - 我可以更模糊......
这取决于他们是否需要完成他们的工作。如果它然后授予他们对他们的计算机的行政权力。如果没有那就不要。并非所有软件开发都要求工程师拥有管理员权限。
是,否取决于您的观点。一些工程师将他们的计算机视为他们的域,他们是他们域的规则。其他人则不想承担责任。
我曾在一家没有管理员权限的公司工作,每当我需要做一些需要管理员权限的事情时,我必须致电服务台,他们授予我临时管理员权限,直到我重新启动。这有时是一种痛苦,但这就是我的生活方式。我也曾在我对我的电脑拥有完全管理员权限的地方工作过。这很棒,除了我安装了一些软件操作系统并且不得不将我的电脑带到服务台并让他们重新映像硬盘驱动器的时候....
我个人觉得工程师应该对他们的计算机拥有管理权限,但是要明白如果他们搞砸了,那么可以重新加载新的基线图像,他们将丢失自原始基线以来所做的任何事情。我不相信公司中的每个人都应该拥有自己计算机的管理员权限。会计,行政助理和其他部门实际上并不需要拥有这些权利,因此不应授予他们权利。
答案 16 :(得分:2)
ht tp://msdn.microsoft.com/en-us/library/aa302367.aspx
根据我的经验,我们总是需要在我们(编码员)和他们(安全)之间达成妥协。我承认(虽然我讨厌),上面的微软文章中有一些优点。由于我多年来一直是程序员,我经历了痛苦,我需要安装一个不同的调试器,只是为了让我生气,我不能。它迫使我创造性地思考如何完成工作。经过多年与我们的安全团队(以及几次讨论)的斗争,我理解他们必须保护所有领域的工作,包括我的桌面。他们向我展示了即使在最简单的Quicktime应用程序上出现的每日漏洞。每次我想安装一个快速实用程序或调整我的本地IIS时,我都能看到他们的担忧,这会导致严重的安全问题。在我看到另一位开发人员获得罐装之前,我并没有完全理解这一点。他试图调试并最终关闭赛门铁克只是为了让数百人得到(然后给予)一些病毒。这是一团糟。在与一位关于发生的事情的“安全人员”谈话时,我可以看到他只想说,“告诉你......”。
我了解到我们的管理员(好吧,至少是我的)只想保护我们的公司。好消息是我们确实找到了妥协方案,我可以完成我的工作,而且我们的安全网络也很好![/ p>
信条
答案 17 :(得分:1)
是的,如果您希望渗透测试者或一些熟练的恶意用户立足于威胁您的域名。
即危害低级帐户>查找管理员-> Mimikatz->提升权限->域管理员。
所以不,普通用户不应是管理员。
Microsoft还说过UAC不是安全边界,所以不要这样使用它。现实世界中可以使用各种绕过UAC的方法。
如果他们需要admin作为其工作角色的一部分,那么请给出单独的域本地admin用户帐户,这些帐户仅用于安装软件(仅在其自己的计算机上具有admin权限),而不用于一般用途或Internet访问。这应该具有更严格的密码策略(例如,最小长度为15个字符)。为此应使用Runas功能。
任何以普通用户帐户为admin的环境都是安全灾难的根源。
答案 18 :(得分:0)
在小公司中,这可能只是一个务实的问题。开发人员也可能是技术最熟练的人,所以他们管理自己的机器是有道理的。
就个人而言,我是“管理员帐户”的粉丝,可以在必要时使用 - 即“Run As ..”(我注意到这种方法在以后与UAC非常相似)。
如果您正在开发桌面软件,那么开发人员在其最终用户将会遇到的限制范围内工作(即有限或受限制的权利)并不是一个坏主意。如果您使用有限权限构建软件,那么在给定相同权限集的情况下,您可能会遇到目标用户面临的相同问题。
话虽如此,如果你有一个好的测试实验室和/或一个体面的QA团队,这可能是一个没有实际意义的点 - 特别是如果你有一半体面的ALM练习。
最后 - 我在没有UAC的情况下开发,主要是因为我相信自己和我的技能。在团队环境中,我会进行投票。在较大的组织中,您可能没有这种自由。企业管理员通常拥有最终决定权:)
答案 19 :(得分:0)
在我的公司,开发人员,工程师和我的老板(公司所有者)拥有本地管理员权限。我的老板也有网络管理员权限,以防万一我被那辆任性公共汽车(或退出)击中。其他人都被锁定了。
作为系统管理员,这种设置不时给我带来一点悲伤,特别是在安装了未经批准的软件时。但是,从开发人员背景来看,我理解高级用户需要更多地控制他们的环境,因此,我愿意忍受可能出现的偶然怪癖或问题。我确实对他们的工作站进行例行备份 - 以防万一。
顺便说一句,我和老板在摆弄东西时遇到的问题比其他任何人都要多。有点像旧问题,“大象坐在哪里?他想要的任何地方!” 但在一个小公司里,他基本上是“备份”系统管理员,没有多少选择。
答案 20 :(得分:-1)
这取决于开发人员的技能以及他/她是否是顾问。
我认为一个经验丰富且值得信赖的开发者有权利用她/他的PC做任何他/她想做的事情是合理的,只要它不会损害她/他的工作效率。
答案 21 :(得分:-2)
Windows XP上的任何人都不应使用管理员帐户进行日常使用,如果您必须是管理员,则至少应启用UAC。尤其是使用Internet Explorer浏览Web的Web开发人员和其他开发人员。
您可以做的是让开发人员使用他们的常规用户帐户,但是为他们提供第二个帐户,该帐户是他们PC上的管理员,以便他们可以根据需要使用它(运行方式)。我知道他们说网络开发,但对于Windows开发,您的软件应该使用常规用户帐户进行测试,而不是管理员。