【问题标题】:Mac automator - TouchID for sudo issues with system disk accessMac automator - 用于系统磁盘访问的 sudo 问题的 TouchID
【发布时间】:2022-10-16 18:08:18
【问题描述】:

目标是允许 TouchID 用于 sudo 命令而不是密码。这可以通过将行auth sufficient pam_tid.so 添加到文件/etc/pam.d/sudo 中来实现。

问题是,MacOS 在每次更新后都会重置此文件的任何更改,因此我决定使用 AppleScript 使用 Automator.app 自动执行此任务,然后在登录时运行创建的应用程序。

需要 Apple 脚本以允许管理员访问 /etc/pam.d/sudo 文件(例如,如果您要手动编辑它,则必须使用 sudo vim 而不是 vim)。

所以我的代码看起来像这样:

property SudoPath : "/etc/pam.d/sudo"
property TIDLine : "auth       sufficient     pam_tid.so"
property CustomPrompt : "Allow TouchID to authenticate you for sudo access"

if (do shell script ("grep -q pam_tid.so " & SudoPath & " && echo 'true' || echo 'false'")) is equal to "false" then
    do shell script ("sudo sed -i '' '1i\\'$''\\n'" & TIDLine & "'" & SudoPath) with prompt CustomPrompt with administrator privileges
end if

它检查该行是否已经存在,如果不存在,则应将该行插入文件中。它应该在包含pam_smartcard.so 的行上方,但事实证明这太难了,所以我选择在第一行插入它。

我的脚本因错误sed: 1: "1i\nauth sufficie ...": extra characters after \ at the end of i command 而崩溃,我认为这与代码中的\n 字符有关,但是如果我删除第二个反斜杠,它会在编译期间变为不可见的行尾。而且我真的不知道哪些角色需要转义以及如何转义。

MacOS Monterey 似乎还有一些进一步的问题,因为即使 sed 命令是正确的,脚本也会以错误 /bin/sh: /etc/pam.d/sudo: Operation not permitted 结尾,而 Big Sur 中没有出现该错误。

谢谢你的帮助。

更新:

因此,a 通过使用 gnu-sed(通过 Homebrew 安装)解决了 endline 问题,并尝试允许 automator 和 gsed 命令在首选项中进行全盘访问。现在我得到

语法错误:/usr/local/bin/gsed:无法打开临时文件 /etc/pam.d/sedNyxhvU:不允许操作

property GnuSedPath : "/usr/local/bin/gsed"
property SudoPath : "/etc/pam.d/sudo"
property TIDLine : "auth       sufficient     pam_tid.so"
property CustomPrompt : "Allow TouchID to authenticate you for sudo access"

if (do shell script ("grep -q pam_tid.so " & SudoPath & " && echo 'true' || echo 'false'")) is equal to "false" then
    do shell script ("sudo " & GnuSedPath & " -i '2i " & TIDLine & "' " & SudoPath) with prompt CustomPrompt with administrator privileges
end if

【问题讨论】:

    标签: sed applescript zsh macos-monterey


    【解决方案1】:

    类似的问题。我一直在使用patch 作为将行添加到/etc/pam.d/sudo 的工具。升级到 macOS 12.4 后,由于 /etc/pam.d/sudo 不可写,我遇到了与 Operation not permitted 相同的错误。

    我在终端(iTerm)中运行补丁命令。该问题已通过允许对 iTerm 的“全盘访问”得到解决。

    也许您的问题可以通过允许 Automator“全盘访问”(在系统偏好设置 -> 安全和隐私 ->(选项卡)完整性下)来解决?

    【讨论】:

    • 好主意,但遗憾的是它没有帮助。我试图允许 automator 和 sed shell 命令的完整磁盘访问,但它还是崩溃了,因为没有权限编辑 pam.d/ 中的一些临时文件
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 2011-01-09
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2010-10-20
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多