gpt4 book ai didi

sed - Mac automator - TouchID 用于系统磁盘访问的 sudo 问题

转载 作者:行者123 更新时间:2023-12-05 05:51:37 25 4
gpt4 key购买 nike

目标是允许 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\in the end of i command 而崩溃,我认为这与 有关\n 代码中的字符,但如果我删除第二个反斜杠,它会在编译期间变为不可见的行尾。而且我真的不知道哪些字符需要转义以及如何转义。

MacOS Monterey 似乎还有一些问题,因为即使 sed 命令正确,脚本也会以错误结束 /bin/sh:/etc/pam.d/sudo: Operation not permitted 没有出现在大苏尔。

感谢您的帮助。

更新:

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

Syntax Error: /usr/local/bin/gsed: couldn't open temporary file/etc/pam.d/sedNyxhvU: Operation not permitted

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

最佳答案

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

我在终端 (iTerm) 中运行补丁命令。通过允许对 iTerm 进行“完整磁盘访问”来解决此问题。

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

关于sed - Mac automator - TouchID 用于系统磁盘访问的 sudo 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70348234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com