`
ttlz
  • 浏览: 98499 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

为何不应使用管理员身份来运行程序?

阅读更多
引用
  首先,让我们定义一些名词术语,为了简单起见,我们仅仅描述两种类型的用户:Administrator(系统管理员)和User(普通用户)。他们在本质上区别于分别属于“Administrators”和“Users”两种本地组。“Administrators”可以有对计算机或者域完全的和不受限制的访问能力。而普通用户则不能随便或有目的地进行系统级别的操作,比如安装程序,启动/停止系统服务,修改注册表信息等。

  我们的讨论缩减成两种类型的用户并非毫无理由的选择。事实上,这是Windows XP家庭版精确地区分用户的两种类型,默认情况下,XP Home Edition只能创建这两种类型的用户,Administrator(计算机管理员)和User(普通用户)。在这个区分之下,XP家庭版的计算机管理员和普通用户分别是Administrators组成员和Users组成员。除此之外,如“Power Users”或者“Backup Operators”中的组成员和管理员在权限上是可以说是等价的。所以当我说到以非管理员身份运行程序时,我并非意味着使用Power User替代。

  言归正传,如果你是一个允许(或者需要)可以管理你自己计算机的管理员,为什么不始终以管理员的身份登录呢?我们来做个假设,如果你是一个外科医生,你是否愿意总是拿着锋利的解剖刀,拟或宁愿放在一个安全的地方,等到真的需要的时候才用?你觉得这个比喻是否恰当?ok,那我们现在跳过这个比喻,下面我们给出三个不使用管理员身份运行程序的理由。

  以非管理员身份运行的首要原因是为了防止暴露。当你是admin身份时,你运行的每一个程序将可以没有限制地访问计算机。如果一个恶意的或者其他“不受欢迎”的代码利用了这些程序,同样地它也可以没有限制地访问计算机。企业防火墙只能针对Internet的恶意攻击提供局部的保护:你依旧在浏览网站,接收Email,或者运行一个或者多个IM(即时通信)软件或者网络游戏。即使你使用了最新的安全补丁和病毒库,增强了安全设置,并且小心翼翼地处理电子邮件的附件,可还是防不胜防。我们假设你使用喜好的搜索引擎搜索并点击了一个看起来挺正常的链接,然而这个链接指向了一个针对你正在使用的浏览器漏洞的恶意站点,而且站点上有一个可以导致在你机器上执行任意代码的Exploit。当一个Exploit以管理员的特权运行,相对于只是User权限来说,它便对你计算机的危害越大,也越不容易被侦测出来,攻击其他在你网络上的计算机的可能性就越高。如果Exploit在编写的时候恰巧由于编写者的原因而不得不使用管理员权限运行时(大多数Exploit都如此,详见后面第二点理由),如果我们以普通用户身份运行程序,则这个Exploit几乎没有什么威胁,但如果不幸运的你恰好也用了管理员的身份运行程序,那么这个Exploit就有可能带来以下危害:

安装内核级别的rootkits以及/或者键盘记录器(这种方式将很难被发觉)
安装和启动系统服务
安装ActiveX控件,包括IE和shell add-ins(通常附在Spyware和adware中)
访问本属于其他用户的数据
截获所有登录到这台机器的用户和密码
使用木马替换操作系统系统文件或者其他程序文件
访问LSA Secrets,包括其他敏感的账号信息,可能包括域用户账号的信息
禁用或者卸载反病毒软件,以避免被侦测出来
掩盖(删除)在事件日志中留下的痕迹
导致操作系统不能启动
如果你的账号恰好是网络上其他计算机的administrator账号,Exploit将同样会获得这些计算机的管理员权限
其他诸如此类的危害还有很多…

  第二个以非管理员身份运行的原因适用于软件开发人员。开发中的软件以普通用户身份而非管理员身份运行有助于确保软件在最终用户的系统中正常地运行。千万别给我任何像Windows Messenger 4.x这样必须使用管理员身份安装的软件,当然,除非用户至少使用管理员权限运行这个软件一次,否则没有人可以使用这个软件。这还不单单是“任何用户使用前需要管理员运行一次”,Messenger确实需要管理员的特权来运行。Keith Brown即将出的书同样也深入地批评了这种观点,一些人认为开发人员应该以管理员登录的身份来开发程序,并使用普通用户的身份来测试程序,我不认为这是个好的主意,或许我会在今后的文章中逐渐让人接收这种观点。

  第三个不使用管理员身份的理由是为微软的相关人员量身定制的。比如微软技术支持工程师,微软最有价值专家(MVP),特别是那些直接与微软客户沟通的职能角色。我们要做出榜样,人们都以我们为榜样,学习面对、解决Windows相关问题的正确方法。在Unix环境下,除了必要的操作外,Unix的管理员从来不使用Root身份登录。必要的时候就使用“su”命令进行二次登录,操作完后就退出到普通用户的模式。当我们总是习惯于使用root身份时,我们就不算是一个好的典范。对于这样的技术人员来说,你应该习惯于使用“User”的身份来操作计算机,并让你的客户和向你学习的人也了解这点。如果你这样做了,请不要再将自己的账号添加回Administrators组去。

分享到:
评论

相关推荐

    精选_使用ShellExecute函数实现以管理员身份运行程序_源码打包

    总的来说,使用`ShellExecute`函数以管理员身份运行程序是一种常见的方法,但需要配合适当的用户交互和权限管理策略。源码打包时,除了考虑运行时权限,还要注意代码的兼容性、安全性以及用户体验。理解并妥善处理...

    Win7系统如何以管理员身份运行程序.docx

    为什么需要以管理员身份运行程序? 以管理员身份运行程序可以让程序拥有足够的权限来访问系统资源和执行操作。这非常有用,例如,当您需要安装软件或执行某些系统操作时,以管理员身份运行程序可以确保程序拥有足够...

    以管理员身份运行程序

    ### 以管理员身份运行程序——Delphi实现方法 在日常的软件开发过程中,有时我们需要让程序以管理员身份运行,特别是当程序需要访问某些系统资源或执行特定操作时(如安装驱动程序、修改系统配置等)。本文将详细...

    易语言检测程序是否以管理员身份运行

    总的来说,了解如何在易语言中检测程序是否以管理员身份运行,对于编写需要高权限操作的软件是十分关键的。通过GetTokenInformation和易语言内置命令,开发者可以轻松地实现这一功能,并确保程序的正确运行。

    VS2012普通用户以管理员权限运行程序

    1. **右键启动**:在开始菜单或桌面快捷方式上右键点击Visual Studio 2012图标,然后选择“以管理员身份运行”。这将启动一个新的进程,该进程具有管理员权限。 2. **修改快捷方式属性**:如果经常需要以管理员身份...

    为Delphi程序增加UAC功能(管理员身份运行exe)

    对于某些需要高级权限的程序,如修改系统设置或访问受保护的文件,必须以管理员身份运行。在Delphi编程环境中,如果一个应用程序需要这些权限,开发者需要为程序添加UAC支持。本教程将详细介绍如何在Delphi程序中...

    以system身份运行程序(易语言源码)

    在IT行业中,以系统身份运行程序是一个常见的需求,特别是在管理和维护服务器、自动化任务以及权限控制等方面。易语言是一种中国本土开发的编程语言,它以简洁的语法和丰富的库函数为特色,适合初学者和专业人士进行...

    delphi 自动以管理员身份运行程序

    本文将深入探讨如何在Delphi中自动以管理员身份运行程序,包括理解必要的结构体、函数参数及其作用,以及具体的代码示例。 ### 1. 使用`CreateProcessWithLogonW`函数 `CreateProcessWithLogonW`函数是Windows API...

    Runas命令:能让域用户普通User用户以管理员身份运行指定程序.docx

    此外,我们还可以使用 runas 命令来以管理员身份运行某个程序,然后将命令保存为批处理文件,并将其封装为.exe 文件,以便用户可以轻松地以管理员身份执行命令中所指定的程序。 Runas 命令是一种非常实用的命令,...

    C#程序以管理员权限运行

    2. **修改兼容性设置**: 在兼容性标签页中勾选“以管理员身份运行”。 **总结**: 以上三种方法各有优劣,具体选择哪种方式取决于应用程序的需求以及开发者对用户体验的考虑。通过`System.Diagnostics.Process....

    域用户以管理员权限运行程序方法.txt

    域用户以管理员权限运行程序方法,域用户运行Everything ,等适用绝大部分程序!!!!!!!!!!!!!

    在程序中以管理员身份运行文件

    有些程序要求以管理员身份运行,否则程序运行出错,比如devcon_x64.exe。手动的方法是在需要运行的程序上点击右键,然后选择以管理员身份运行。如果在程序中,则可以用这个工具执行。以devcon_x64.exe 为例: ...

    C#默认以管理员身份运行程序实现代码_.docx

    C#默认以管理员身份运行程序实现代码 C#默认以管理员身份运行程序实现代码是指在 C# 中如何编写代码以管理员身份运行程序,以解决权限不够的问题。这个问题经常出现于系统时间修改、文件操作等需要高权限的操作中。...

    C# 让程序自动以管理员身份运行

    ### C# 让程序自动以管理员身份运行 #### 背景与问题描述 在Windows Vista及后续版本的Windows 7等操作系统中,为了增强系统的安全性,引入了**用户账户控制(User Account Control, UAC)**机制。该机制旨在防止...

    Inno Setup以管理员身份运行提取的批处理文件

    正在使用Inno Setup构建安装程序,并希望以管理员身份运行解压缩的文件。有没有办法强制提取的文件(即批处理文件)以管理员身份运行

    让易语言编译的程序需管理员权限运行

    让你 的易程序须管理员权限运行 放置在易语言目录下的 static_lib 目录

    Win7下运行VC6程序时提示管理员身份运行的方法 2011-07-28

    在Windows 7操作系统中,由于安全性提升,许多旧版应用程序,如Microsoft Visual C++ 6.0(简称VC6),在执行时可能会遇到权限问题,提示需要以管理员身份运行。这是因为Win7默认采用UAC(User Account Control,...

Global site tag (gtag.js) - Google Analytics