如何在Apple Script中运行admin shell脚本时覆盖要求身份验证?

时间:2013-01-30 07:37:53

标签: terminal applescript administrator

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

3 个答案:

答案 0 :(得分:6)

您可以将您的用户名和密码放在applescript命令中,这样它就不会要求提供这些凭据。但请注意,这些项目以明文形式存储在AppleScript中,因此其他人可以查看它们。这不是很安全,但由您来决定它是否安全。注意:命令中不再需要“sudo”。

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

有些方法可以将密码存储在钥匙串中并从AppleScript中检索,从而使其安全。如果您想这样做,那么您可以按如下方式创建密码项。

打开Keychain Access应用程序并选择左栏中的钥匙串。然后单击文件>新密码项...,为其命名,将您的帐户短名称记入帐户,然后输入密码。在密码列表中突出显示它并获取有关它的信息。在“属性”按钮下,输入其类型作为通用键。之所以选择它是因为它们并不多,搜索速度也快得多。您提供的任何名称都必须放在“您的密码名称”下面的代码中。

现在从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
祝你好运!

答案 1 :(得分:1)

另一种解决方案是编辑

etc/sudoers

配置文件。

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

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

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

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

如你所知,你所做的只是增加几行。

有关您可以Google或从此处http://www.sudo.ws/sudoers.man.html

开始的信息

答案 2 :(得分:0)

如果您希望所有管理员帐户都能够在不输入密码的情况下使用sudo命令,请执行以下操作。

从/ / etc / sudoers文件中更改下面显示的行

%admin  ALL=(ALL) ALL

%admin  ALL=(ALL) NOPASSWD: ALL

可以使用Terminal和TextEdit应用程序完成此编辑。打开终端应用程序并键入以下命令:

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目录。