Why you shouldn't run as admin...

文章主要探讨不应以管理员身份运行程序的原因。首先介绍了系统管理员和普通用户的区别,接着给出三个理由:防止暴露,避免恶意代码无限制访问计算机;利于软件开发人员确保软件在最终用户系统正常运行;为微软相关人员树立正确操作榜样,如Unix管理员非必要不使用Root身份登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为何不应以管理员身份运行程序

原英文版本:http://blogs.msdn.com/aaron_margosis/archive/2004/06/17/157962.aspx

首先,让我们定义一些名词术语,为了简单起见,我们仅仅描述两种类型的用户: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确实需要管理员的特权来运行(参考:http://support.microsoft.com/kb/325717/en-us)。Keith Brown即将出的书同样也深入地批评了这种观点(参考:http://www.pluralsight.com/keith/book/html/whatis_anonprivilegeduser.html),一些人认为开发人员应该以管理员登录的身份来开发程序,并使用普通用户的身份来测试程序,我不认为这是个好的主意,或许我会在今后的文章中逐渐让人接收这种观点。

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

接下来的文章我们将会讨论如何以非管理员的身份工作而又不至于抓狂。

 

<think>嗯,用户遇到了Android Studio插件下载后无法打开的问题,特别是与migrate.config相关的错误。首先,我需要理解这个错误的具体原因。用户提到“migrate.config shouldn't exist”,这可能意味着在迁移过程中生成了这个文件,但系统不希望它存在,导致冲突或错误。 首先,我应该考虑常见的解决方法,比如清除缓存。因为Android Studio经常因为缓存问题出现各种奇怪的问题,比如Invalidate Caches / Restart这个功能。用户可能已经尝试过重启,但问题依旧,所以需要手动删除缓存目录。记得不同操作系统的缓存路径不同,比如macOS的~/Library/Application Support/Google/AndroidStudio2023.2,或者Windows的%APPDATA%\Google\AndroidStudio2023.2。 接下来,检查配置文件。用户提到了migrate.config,可能是在迁移过程中生成的配置文件残留。需要指导用户定位到Android Studio的配置目录,检查是否有这个文件,并手动删除。同时,检查其他可能被污染的配置文件,比如idea.properties或gradle相关的配置,确保没有异常设置。 然后,考虑插件问题。用户是在下载插件后出现的问题,可能某个插件不兼容或者损坏。进入安全模式禁用所有第三方插件,看看是否能正常启动。如果可以,再逐个启用插件排查问题源。此外,重新安装Android Studio也是一个可行的步骤,特别是当配置文件损坏时,重新安装可以覆盖掉错误的配置。 另外,用户可能没有提到日志信息,但查看日志是诊断问题的关键步骤。应该指导用户找到idea.log文件,分析其中的错误信息,这有助于更精确地定位问题。例如,日志中可能会指出具体是哪个插件或配置项导致了migrate.config的错误。 还有,用户可能已经进行了系统或软件的迁移,比如从旧版本升级到新版本,或者更换了电脑,导致配置文件迁移不完整或出现冲突。这种情况下,生成新的配置文件可能比修复旧文件更有效,比如备份后删除整个配置目录,让Android Studio重新生成默认配置。 最后,需要提醒用户备份重要数据,避免在操作过程中丢失设置或项目信息。如果以上方法都不奏效,建议用户提供日志内容以便进一步分析,或者在社区寻求帮助,比如Stack Overflow或官方问题追踪系统。 总结下来,解决步骤应该是:清除缓存、删除残留配置文件、安全模式启动、检查插件、重新安装、查看日志。同时,结合用户提供的引用内容,可能涉及到Gradle配置的问题,需要检查Gradle相关的设置,确保没有冲突的配置项。例如,用户提到的Github项目gradledoc可能包含一些Gradle配置的最佳实践,可以参考是否有相关的解决方案。</think>### 解决Android Studio插件下载后无法打开的问题(migrate.config错误) #### 1. 清除缓存和配置文件 出现`migrate.config`错误通常与IDE的配置残留或缓存冲突有关。按以下步骤操作: - **强制关闭Android Studio** - **删除缓存目录**: - *Windows*: `%APPDATA%\Google\AndroidStudio2023.2`(根据版本调整路径) - *macOS*: `~/Library/Application Support/Google/AndroidStudio2023.2` - *Linux*: `~/.config/Google/AndroidStudio2023.2` - **手动删除`migrate.config`文件**: 检查以下目录是否存在该文件并删除: ``` ~/.config/Google/ # Linux/macOS C:\Users\<用户名>\AppData\Roaming\Google\ # Windows ``` #### 2. 检查配置文件完整性 若问题与迁移相关(如版本升级或项目导入),需验证配置: - 定位到Android Studio的**配置目录**(例如`~/.AndroidStudio/config`),检查是否存在异常文件(如`idea.properties`或`gradle.xml`)。 - 若存在第三方插件配置,尝试**禁用或更新插件**(通过安全模式启动)。 #### 3. 以安全模式启动 通过禁用所有第三方插件验证问题来源: - *Windows/macOS*: 终端执行 `studio.bat --safe-mode` 或 `./studio.sh --safe-mode` - 若正常启动,则问题由某个插件引起,需逐一排查。 #### 4. 重新安装Android Studio 如果配置损坏严重: 1. 备份项目设置(如SDK路径、快捷键配置)。 2. 完全卸载当前版本。 3. 从[官网](https://developer.android.com/studio)下载最新版本安装。 #### 5. 检查日志定位问题 查看日志文件`idea.log`(路径:`Help → Show Log in Explorer`): - 搜索`migrate.config`相关错误,确认具体触发原因。 - 若涉及插件兼容性,根据日志提示联系插件开发者[^1]。 #### 6. 处理Gradle配置冲突(可选) 若问题与项目构建相关: - 检查项目根目录的`gradle.properties`文件,移除非标准配置。 - 参考Gradle官方文档调整设置。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值