我们已经注意到一些应用程序无法正确使用现有networking帐户的用户的一些奇怪现象[但请参阅“用户比较”部分,因为他们使用testingnetworking帐户)。
例如,当我作为一个现有的networking帐户用户运行Adobe Bridge CS3时,它popup对话框,说:
操作无法完成。
文件或目录已经存在,具有相同的名称。
其次是一个说:
操作无法完成。
它不会把任何有用的东西放在系统日志里(比如'文件或目录已经存在同名')。 我将日志结果与作为本地pipe理员和testingnetworking用户的日志结果进行比较,并进行了一些有趣的复制:
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
这最好形容为莫名其妙。
当作为现有的networking帐户用户运行时,会popup一个对话框,
由于程序错误,无法同步颜色设置。
无法创build目录:/Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/——wild-/Library Earth
[大概是在'图书馆'和'地球'之间应该有更多的文字包裹在对话的一边。]
下一次我尝试运行它,我得到这个:
Google地球无法写入当前caching或myplaces文件位置。 值将被设置如下:
我的地点path:“/Network/Servers/ces.wwsd.net/Volumes/DataHD/CESstudents/CES_Grade_03/— Cache Path:”/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
我正在testing两个用户帐户。 一个是学生,在这里被称为野生或Wild332,另一个被称为“cesteststudent”。 第一个是由一年前的脚本创build的,第二个是在今天上午的Workgroup Manager中手动创build的。
为两个用户运行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)
这两个看起来相当。 不过好奇的是,当我运行testing用户上面列出的应用程序时,我不会遇到任何问题。 同样,我以本地用户身份运行应用程序时也没有问题,无论是否具有pipe理员权限。
我以现有用户的身份运行'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
好吧,我很困惑。 用户似乎对其文件具有读取/写入权限。 应用程序以用户身份运行(不是吗?)。 应用程序似乎很不高兴,因为它们没有对用户文件的读/写访问权限。 [他们还没有告诉我他们试图访问哪个文件。]
有谁知道什么是错的,或者我应该探究哪个方向?
谢谢。
这将是痛苦和乏味的,但我要追求的下一步是在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是你的朋友。