如何在 Apple 脚本中运行管理员外壳脚本时覆盖身份验证请求



我想制作一个简单的程序,每次在UI后面登录时运行。在我的苹果脚本中,我正在运行一个需要管理员身份验证的 sudo 命令。有没有办法在每次运行时覆盖对身份验证的需求?我不想每次登录后运行此脚本时都必须键入我的用户名和密码。有什么帮助吗?(用非常简单的术语来说,因为我是一个新手。非常感谢!

您可以将用户名和密码放在 applescript 命令中,这样它就不会要求输入这些凭据。但请注意,这些项目以纯文本形式存储在苹果脚本中,因此其他人可以看到它们。它不是很安全,但由您决定它是否安全。注意:命令中不再需要"sudo"。

do shell script "whatever" user name "username" password "password" with administrator privileges

您可以通过一些方法将密码存储在钥匙串中并从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

配置文件。

该文件上的设置可以允许特定用户执行特定命令(使用...是的。。。特定参数)作为超级用户。

如果命令本身不是问题,但问题是在代码中暴露密码,那么这可能是解决方案。

sudores 文件应该以超级用户身份运行命令 visudo 进行编辑。

在你开始篡改 sudoers 之前,我强烈建议你了解 visudo 和 sudoers 语法的基本知识,因为弄乱该文件可能会导致系统出现 serius 问题。

如您所知,您正在做的事情只是添加几行的问题。

有关信息,您可以谷歌或从这里开始 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

在"文本编辑"应用程序中打开文件。您需要编辑文件并保存更改。

visudo -c -f sudoers.txt

检查编辑的文件是否存在语法错误。输出应sudoers.txt: parsed OK

sudo cp -X sudoers.txt /etc/sudoers

将文件复制回/etc 目录。

最新更新