4

我想做一个简单的程序,每次在用户界面后面登录时运行。在我的 applescript 中,我正在运行一个需要管理员身份验证的 sudo 命令。有没有办法在每次运行时覆盖对身份验证的需求?我不想在登录后每次运行此脚本时都输入我的用户名和密码。有什么帮助吗?(而且非常简单,因为我是新手。)非常感谢!

4

3 回答 3

6

您可以将您的用户名和密码放在 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

祝你好运!

于 2013-01-30T08:39:04.660 回答
1

另一个解决方案是编辑

etc/sudoers

配置文件。

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

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

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

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

如您所知,您正在做的只是添加几行代码。

有关信息,您可以谷歌或从这里开始http://www.sudo.ws/sudoers.man.html

于 2013-01-31T23:06:32.633 回答
0

如果您希望所有管理员帐户都能够在不输入密码的情况下使用 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 目录。

于 2014-11-20T12:59:22.560 回答