我正在运行 macOS Sierra 并安装了 XCode
$ defaults read /var/db/receipts/com.apple.pkg.Xcode.plist
{
InstallDate = "2016-09-13 19:36:06 +0000";
InstallPrefixPath = "/";
InstallProcessName = storedownloadd;
PackageFileName = "Xcode.pkg";
PackageIdentifier = "com.apple.pkg.Xcode";
PackageVersion = "8.0.0.0.1.1472435881";
}
我正在尝试使用 latexmk 将 .tex 文件编译为 pdf,但遇到了问题setgid
。
$ latexmk -pdf ~/testFile.tex
Latexmk: This is Latexmk, John Collins, 22 April 2016, version: 4.45.
Insecure dependency in open while running setgid at /Library/TeX/texbin/latexmk line 2722.
我安装了 MacTex。我甚至尝试过重新下载latexmk
,但问题仍未解决。
我最近从 El Capitan 升级时,不得不从头开始重新安装所有内容,但之前它运行正常。我不知道问题可能是什么。任何帮助都将不胜感激。
答案1
setgid
不是一个命令——而是一个状态;与‘setuid’和‘sticky’一起的特殊文件权限。
'setuid' 可能更为人所知:如果可执行文件设置了 'setuid' 位,它将始终自动拥有拥有它的用户的权限,而不是运行它的用户的权限。(例如,这就是su
和sudo
能够执行仅限 root 的操作的方式。)
'setgid' 的工作方式相同,只不过它适用于团体该文件的所有者。然而,在这两种情况下,程序都需要格外小心,只做它应该做的事情设计以避免被用户欺骗。
错误消息 - 来自perl
解释器,因为latexmk
实际上是一个 Perl 脚本 - 意味着 Perl 已经注意到它正在使用 setuid/setgid 权限运行,因此拒绝执行某些操作,以防范粗心编写的脚本。
答案2
正如 @grawity 所述,问题在于脚本所需的某些文件已设置 setgid 状态latexmk
。为了查找所有已设置该位的文件,我使用了以下命令
find / -perm -02000 -ls > search_out
在 OSX 上。有很多结果,但我找到了一个与 Tex 相关的。