我们注意到一些奇怪的现象,有些应用程序对于拥有现有网络帐户的用户无法正常工作[但是,请参阅“用户比较”部分,因为它们确实可以使用测试网络帐户]。
应用程序问题
Adobe Bridge CS3
例如,当我以现有网络帐户用户身份运行 Adobe Bridge CS3 时,它会弹出以下对话框:
操作无法完成。
同名的文件或目录已存在。
接下来是一条内容:
操作无法完成。
它不会在系统日志中放入任何有用的信息(例如“已存在同名文件或目录”)。我将日志结果与以本地管理员和测试网络用户身份运行的结果进行了比较,它进行了一些有趣的复制:
Jul 20 08:55:23 Master-2009-07-54 [0x0-0x45045].com.adobe.bridge2[1457]: mv: rename /Applications/Adobe Bridge CS3/Bridge CS3.app/Contents/Resources/de.lproj/Adobe Bridge Opener Preferences.xml to /Applications/Adobe Bridge CS3/Bridge CS3.app/Contents/Resources/de.lproj/Adobe Bridge Opener Preferences_de.xml: Permission denied
Jul 20 08:55:23 Master-2009-07-54 [0x0-0x45045].com.adobe.bridge2[1457]: cp: /Applications/Adobe Bridge CS3/Bridge CS3.app/Contents/Resources/de.lproj/Adobe Bridge Opener Preferences.xml: Permission denied
最好将其描述为难以解释。
Adobe Photoshop 元素 (6)
当以现有网络帐户用户身份运行时,它会弹出一个对话框,提示:
由于程序错误,无法同步颜色设置。
谷歌地球
无法创建目录:/Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/------wild-/Library Earth
[大概在对话框的“图书馆”和“地球”之间应该还有一些文本。]
当我再次尝试运行它时,得到了以下信息:
Google Earth 无法写入当前缓存或 myplaces 文件位置。值将设置如下:
我的位置路径:“/Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/--- 缓存路径:“/Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/------w
[再次,文本超出了对话的结尾]
Google Earth 在系统日志中有这样的说法:
Jul 21 10:25:40 LeopardMaster-2009-07-20 [0x0-0xfa0fa].com.Google.GoogleEarthPlus[6606]: Intrinsic Alchemy v3.2 Beta-0303 (Dynamic/Release)
Jul 21 10:25:40 LeopardMaster-2009-07-20 [0x0-0xfa0fa].com.Google.GoogleEarthPlus[6606]: Built by google on Tue Mar 3 17:33:00 PST 2009
Jul 21 10:25:40 LeopardMaster-2009-07-20 [0x0-0xfa0fa].com.Google.GoogleEarthPlus[6606]: Can't save ticket store (permissions problem?)
Jul 21 10:25:40 LeopardMaster-2009-07-20 [0x0-0xfa0fa].com.Google.GoogleEarthPlus[6606]: INFO: Using igOglVisualContext.
Jul 21 10:25:43 LeopardMaster-2009-07-20 com.apple.launchd[5838] ([0x0-0xfa0fa].com.Google.GoogleEarthPlus[6606]): Exited with exit code: 1
用户比较
我使用两个用户帐户进行测试。一个是学生,在此称为 ------wild- 或 Wild332,另一个称为“cesteststudent”。第一个帐户是近一年前通过脚本创建的,第二个帐户是今天早上在 Workgroup Manager 中手动创建的。
id
对两个用户运行该命令将产生以下结果:
uid=8222(Wild332) gid=620450(CES_Students) groups=620450(CES_Students),620403(CES_Grade_03)
uid=1093(cesteststudent) gid=620450(CES_Students) groups=620450(CES_Students),620403(CES_Grade_03)
这两个应用程序看起来是等价的。但奇怪的是,当我以测试用户身份运行上面列出的应用程序时,我没有遇到任何问题。同样,当我以本地用户身份运行这些应用程序时,无论是否具有管理员权限,我都没有遇到任何问题。
我以现有用户身份运行了“mount”命令,它包含以下两个条目:
trigger on /Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents (autofs, automounted)
afp_0SU2uk0006ow0000oM0000VU-1.2e000012 on /Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents (afpfs, nodev, nosuid, automounted, mounted by Wild332)
当我跑步的时候
touch /Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/------wild-/Library/touched
ls -l /Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/------wild-/Library/touched
-rw-r--r-- 1 Wild332 CES_Students 0 Jul 21 10:36
结果正如预期。为了保险起见,我运行了:
ls -l `which touch`
-r-xr-xr-x 1 root wheel 43056 Feb 6 20:45 /usr/bin/touch
ls -l /Applications/Google\ Earth.app/Contents/MacOS/Google\ Earth
-rwxr-xr-x 1 sysadmin admin 32132912 May 5 02:37 /Applications/Google Earth.app/Contents/MacOS/Google Earth
问题
嗯,我很困惑。用户似乎对其文件具有读/写访问权限。应用程序以用户身份运行(不是吗?)。应用程序似乎很不高兴,因为它们对用户文件没有读/写访问权限。[而且他们没有告诉我他们试图访问哪些文件。]
有人知道哪里出了问题,或者我应该朝哪个方向探究?
谢谢。
答案1
这会很痛苦和乏味,但下一步我会在 dtruss 下运行应用程序(如果您使用的是旧版 OS X,则使用 ktrace)。这样您就可以准确地看到哪些调用失败了。
像这样的事情应该可以解决问题:
sudo dtruss -f 打开 /应用程序/Adobe Bridge CS3/Bridge CS3.app > dtruss.out 2>&1
当然,这只适用于启动过程中发生错误的情况。如果错误是由应用程序打开后的活动触发的,则需要识别正在运行的应用程序的 PID 并运行如下命令:
sudo dtruss -f -p $PIDOFAPP > dtruss.out 2>&1
在分析dtruss.out
文件的时候,grep -v
是你的朋友。