我想做一个简单的程序,每次在用户界面后面登录时运行。在我的 applescript 中,我正在运行一个需要管理员身份验证的 sudo 命令。有没有办法在每次运行时覆盖对身份验证的需求?我不想在登录后每次运行此脚本时都输入我的用户名和密码。有什么帮助吗?(而且非常简单,因为我是新手。)非常感谢!
3 回答
您可以将您的用户名和密码放在 applescript 命令中,这样它就不会要求提供这些凭据。但是请注意,这些项目以纯文本形式存储在 AppleScript 中,因此其他人可以看到它们。它不是很安全,但由您决定它是否安全。注意:您不再需要命令中的“sudo”。
do shell script "whatever" user name "username" password "password" with administrator privileges
有一些方法可以让您将密码存储在钥匙串中并从 applescript 中检索它,从而确保其安全。如果您想这样做,则按如下方式创建密码项。
打开钥匙串访问应用程序并选择左栏中的钥匙串。然后单击文件>新密码项...,为其命名,将您的帐户短名称输入帐户,然后输入密码。在密码列表中突出显示它并获取有关它的信息。在 Attributes 按钮下输入它的种类作为通用键。之所以选择它,是因为它们的数量不多,而且搜索速度要快得多。无论您给它起什么名字,都必须在下面的“您的密码名称”中的代码中输入。
现在从applescript你可以像这样使用它......
set myPass to getPW()
do shell script "whatever" user name "username" password myPass with administrator privileges
on getPW()
do shell script "security 2>&1 >/dev/null find-generic-password -gl \"Your Password Name\" | awk '{print $2}'"
return (text 2 thru -2 of result)
end getPW
祝你好运!
另一个解决方案是编辑
etc/sudoers
配置文件。
该文件的设置可以允许特定用户以超级用户身份执行特定命令(使用...是...特定参数)。
如果命令本身不是问题,但问题是在代码中暴露了密码,那么这可能是解决方案。
应以超级用户身份运行命令visudo编辑sudores文件。
在您开始篡改 sudoers 之前,我强烈建议您了解 visudo 和 sudoers 语法的基本知识,因为弄乱该文件可能会导致系统出现严重问题。
如您所知,您正在做的只是添加几行代码。
有关信息,您可以谷歌或从这里开始http://www.sudo.ws/sudoers.man.html
如果您希望所有管理员帐户都能够在不输入密码的情况下使用 sudo 命令,请执行以下操作。
将 /private/etc/sudoers 文件中如下所示的行从
%admin ALL=(ALL) ALL
至
%admin ALL=(ALL) NOPASSWD: ALL
这种编辑可以通过使用终端和文本编辑应用程序来完成。打开终端应用程序并键入以下命令:
cd ~/desktop
sudo cp -n /etc/sudoers /etc/sudoers.orignal
sudo cp /etc/sudoers sudoers.txt
sudo chmod ug+w sudoers.txt
open sudoers.txt
visudo -c -f sudoers.txt
sudo cp -X sudoers.txt /etc/sudoers
完成后,可以将桌面上的 sudoers.txt 文件放入垃圾箱。
要撤消更改,请使用以下命令:
sudo cp /etc/sudoers.original /etc/sudoers
这是使用 OS X 10.10.1 测试的
如果您想对单个用户执行相同操作,请参阅: http ://hints.macworld.com/article.php?story=20021202054815892
下面简要说明每个命令的作用:
cd ~/desktop
这可确保您在桌面文件夹中工作。
sudo cp -n /etc/sudoers /etc/sudoers.original
这会备份您的 sudoers 文件。备份可用于撤消您的更改。-n 选项确保不会覆盖现有的 sudoers.original 文件。
sudo cp /etc/sudoers sudoers.txt
将 sudoers 文件复制到您的桌面。添加了 .txt 扩展名,因此 OS X 将知道这是一个文本文件。
sudo chmod ug+w sudoers.txt
更改文件的权限以允许写入访问。
open sudoers.txt
在 TextEdit 应用程序中打开文件。您需要编辑文件并保存更改。
visudo -c -f sudoers.txt
检查编辑的文件是否有语法错误。输出应该是sudoers.txt: parsed OK
.
sudo cp -X sudoers.txt /etc/sudoers
将文件复制回 /etc 目录。