因此,它已经有据可查的GUI应用程序(如gedit中或文本编辑)应不使用sudo运行。Ubuntu等人获得了gksu和gksudo(等等),所以问题:WE(Mac用户)得到了什么?鉴于Darwin内核是基于某些* BSD代码构建的,因此我认为同样的问题同样适用,但是我们如何解决呢?
因此,它已经有据可查的GUI应用程序(如gedit中或文本编辑)应不使用sudo运行。Ubuntu等人获得了gksu和gksudo(等等),所以问题:WE(Mac用户)得到了什么?鉴于Darwin内核是基于某些* BSD代码构建的,因此我认为同样的问题同样适用,但是我们如何解决呢?
Answers:
要/etc/hosts
使用Sublime Text 编辑:
sudo /Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text /etc/hosts
如果您必须定期执行此操作,则可以将此代码段添加到〜/ .bash_profile中
# sudoapp: Runs .app with root privileges
# Usage: sudoapp /Applications/Name.app /etc/hosts
# --------------------------------------------------------------------
sudoapp () {
sudo "$1/Contents/MacOS/$(defaults read "$1/Contents/Info.plist" CFBundleExecutable)" $2
}
以root特权运行的应用程序将用/private/var/root
作主文件夹,因此将在进程中创建的root拥有的所有配置文件和临时文件将保留在应有的位置- root
主目录中。
这与以root用户身份登录并运行应用程序相同,但是没有用户切换的麻烦。
此方法适用于10.6-10.11
更新:如果在10.11和更高版本中以root身份运行,Apple自己的TextEdit拒绝启动,因此我将示例更改为使用Sublime Text
sudo
。
chown
每次执行此操作时,我都不想要很多配置文件。
虽然可以以root用户身份启动图形应用程序,但不建议这样做。在大多数情况下,它可能会起作用,但请避免依赖此行为。
不建议以root用户身份运行应用程序,因为它会大大增加导致Mac问题的风险。root的使用应仅限于具有适当控制的最小代码段。
应用程序越来越趋向于分散的设计,以避免对不需要它的代码暴露过多的能力。
有边际案例,但这种情况越来越少。沙盒和XPC的引入是Apple减少对OS X上运行的进程提供过多权限的需求的一部分。
如果你需要处理文件作为root用户,使用命令行工具,例如vim
,emacs
或nano
。这些工具不依赖WindowServer,可以愉快地在另一个用户会话中以root身份启动:
sudo nano <path to edit>
如果您喜欢图形编辑器,请使用与Mac OS X一起使用的编辑器 。BBEdit是出色的编辑器,可以正确处理根目录拥有的文件的编辑。
当您使用BBEdit编辑根目录拥有的文件时,将使用第二个过程来弥合您与文件所有者之间的权限差距。此过程通过了Apple认可的途径,从而确保了可预测的体验-希望跨多个主要版本的Mac OSX。
在另一个用户会话中启动图形应用程序存在一些细微的技术问题。
潜在的技术问题源于一个用户想要在另一用户的会话中启动图形过程。Mac OS X的WindowServer从未以此为目标进行设计。即便是root用户,用户会话也很难突破–出于所需的安全性考虑。
苹果在Mac OS X的最后几个主要版本中大大改进了WindowServer设计。现在,可以通过屏幕共享让多个用户在一台Mac上登录不同的图形会话。这项看似简单的改进依赖于苹果工程师的大量幕后工作。
但是,Apple不太可能提供一种简单的方法来跨单个应用程序中的不同用户交叉启动应用程序。这将如何使他们的客户受益?
如果要进一步探索此主题,请launchctl
在其他活动的用户会话中查找涉及并运行应用程序的问题。
root
。这显然很糟糕,但是很少发生。为了争辩,让我们假装我想从终端打开Disk Utility的实例,但是要在图形会话中。我是否应该打开它并等待它征求我的许可?
diskutil
代替该应用程序:dssw.co.uk/reference/diskutil.html在Mac OS X上,您无需直接以root用户身份运行任何图形应用程序。如果需要其他权利,则该图形应用程序应为您组织这些权利,并让您根据适当的权利进行身份验证:dssw.co.uk/reference/authorization-rights
有充分的理由不以根用户身份编辑文件。为什么不将它们复制到一个临时文件中,然后编辑并复制回来。
visudo
尽管这需要一些知识vi
,但是您可以使用,但是可以对/etc/fstab
或类似内容进行简单更改。
您可以尝试设置EDITOR环境变量并运行,visudo
尽管我从未使用图形编辑器进行过尝试。
Sergei的答案在OS X 10.8.5上不适合我
$ sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
我收到权限错误消息
由于先sudo
输入二进制文件,然后双击Finder中的文件,因此我想到了以下不太简单的命令
$ sudo -b /Applications/TextEdit.app/Contents/MacOS/TextEdit && sleep .5 && open -a /Applications/TextEdit.app /etc/hosts
如果需要,您可以像Sergei一样使用它。