无法在桌面上复制后打开文件


5

我是Mac的新手,所以我可能没有正确的词汇。

  • 我们将Mac 10.5.x配置为与AFP和SMB共享文件。
  • 我们有4个其他Mac作为客户端,各种版本介于10.5和10.6之间。
  • 他们每个人都使用正确的用户+密码访问服务器。
  • 该共享现在配置为忽略权限,但在此之前问题是相同的。
  • 我们可以在每个客户端的服务器上创建/打开/修改/删除/重命名/ etc文件。

问题:
当我们将文件从服务器复制到客户端的桌面时,无法打开复制的文件。错误消息表明权限不允许读取文件。
这适用于所有4个客户端上服务器的每个文件。
使用finder从客户端复制文件。

编辑:
我检查了权限。在服务器的共享上,当我查看来自客户端计算机的权限时,每个文件都是-------rw- cedric cedric(每个人都可以读写),其中用户和组与所连接的人员相同(这里是cedric,但是从另一台计算机查看时这是另一个用户) )。
在桌面上复制文件后,权限和所有者是相同的。所以不可能打开文件,因为权限不正确(我刚在Linux上测试过,当一个文件只为每个人的RW时,所有者无法打开它)。

那么,有没有办法自动复制具有更好权限的文件?或者正确分享文件?

编辑:
每个客户端计算机现在升级到最旧的10.6.x,另外两个升级到10.7.x. 问题完全一样。
我还注意到一台计算机无法将文件从Adobe软件保存到服务器。用户将文件保存在桌面上,然后使用finder将它们移动到服务器上。


你怎么做副本?使用取景器?你是从客户端发起副本吗?
惠更斯

@Huygens:问题更新细节
格雷戈里MOUSSAT 2013年

2
这是OS X 10.5中的一个已知问题,请参阅下面的答案。
gosmond 2013年

1
原始猜测:可以通过为AFP共享设置某种umask来纠正这个问题(我不知道该怎么做)。
Bertrand SCHITS 2013年

1
@BertrandSCHITS - 不太可能。我和成千上万的其他用户在OS X 10.5是最新的时候广泛地遇到了这个问题 - 这是操作系统中的一个严重错误。10.5无法正确遵守POSIX权限,与OS X IIRC中的ACL的推出有关。
gosmond 2013年

Answers:


1

听起来您正在使用非服务器Mac充当服务器。它是否正确?如果是这样,我强烈建议您升级到某个版本的OS X Server。

如果我是正确的,您的问题是由使用标准Mac(或POSIX)权限来处理您的文件共享引起的。这是共享文件时标准Mac的唯一选择。这会导致权限问题,无论您使用的是AFP还是SMB协议(尽管SMB在这方面更糟糕)。

如果可以升级到OS X Server,则需要首先清除要共享的文件夹的权限(从而修复任何现有问题)。然后创建用户和组以模拟您的组织结构。从那里,您将使用Server应用程序创建新的文件共享。不要更改它提供的任何默认权限。而是单击“+”按钮添加新的访问控制条目。这是OS X Server可以授予的一种特殊权限,它解决了标准Mac在此类设置中为您提供的所有权限问题。

Peachpit Press也在他们的OS X Server手册中提供了所有这些内容,但我找不到任何可以直接链接的内容。我希望这有帮助。


问题是他正在使用OS X 10.5机器来服务AFP和SMB股票。所以,它是一个mac服务器。
gosmond 2013年

2
你不能安全地做出这个假设。任何OS X 10.5系统都可以为AFP和SMB共享服务。进入系统首选项>文件共享。创建共享文件夹。检查选项以共享给Windows用户。然后,您创建了AFP和SMB共享。但是使用仅限POSIX的权限。即使他正在使用OS X Server,他也希望确保他使用ACE而不是POSIX权限来配置访问权限。作为Mac系统管理员,我听起来像经典的POSIX限制。
bispymusic 2013年

2
其次,他现在使用10.6和10.7并且问题仍然存在。
bispymusic 2013年

1
我的错。我把你的回答误解为“使用非Mac服务器”而不是实际所说的“使用非服务器Mac”。
gosmond 2013年

6

存在已知问题(Apple创建的错误),其中包含OS X 10.5 Leopard客户端和AFP文件访问的若干修订,包括权限问题,在某些情况下甚至可能完全丢失或覆盖文件。

这些错误没有解决方法,它们属于操作系统本身,可以在运行Leopard 10.5的2个新格式化和安装的Mac以及大多数或所有后续版本(即10.5.1,10.5.2)上重现。等

您最好的解决方案是确保将所有10.5 Mac更新为10.6.8 Snow Leopard。如果做不到这一点,将所有内容更新到10.5.8(Leopard的最后一个版本)可能会解决您的问题。

以下是更详细的参考列表:

http://support.grouplogic.com/?p=1508

https://discussions.apple.com/thread/1423847

http://www.insanelymac.com/forum/topic/67625-preping-for-105-permissions-issues-with-afp-shares/

http://lists.apple.com/archives/macos-x-server/2010/Dec/msg00267.html

http://www.mailinglistarchive.com/html/xsan-users@lists.apple.com/2008-07/msg00409.html


0

最简单的方法是使用终端。要做到这一点,你需要有sudo访问权限,我假设你已经熟悉了,至少在概念上,因为你提到了Linux。

TL; DR: find . \! -perm 666 -type f -exec sudo chmod 666 {} \;是一个单线程,可以解决这个问题,假设你从你想要的确切文件夹中运行它,例如$HOME/Desktop/files_are_in_this_folder。但是,如果只是一个文件,则可以运行sudo chmod 666 /path/to/the/file

请允许我尽我所能解释发生了什么。

find(1)是一个非常强大的发现实用程序,远远超过whereis。它如此强大的原因是需要这么多不同的选择; 作为一个更简单的例子,尝试find $HOME -size +100M; 这将以递归方式查找超过100 MB的所有文件并显示它们的列表。我的输出如下:

    /Users/jayands/.rvm/gems/ruby-1.9.3-p385/gems/libv8-3.11.8.13-x86_64-darwin-10/vendor/v8/out/x64.release/libv8_base.a
    /Users/jayands/.rvm/gems/ruby-1.9.3-p385/gems/libv8-3.11.8.13-x86_64-darwin-10/vendor/v8/out/x64.release/obj.host/tools/gyp/libv8_base.a
    /Users/jayands/.rvm/gems/ruby-1.9.3-p385@rails-4.0/gems/libv8-3.11.8.3-x86_64-darwin-10/vendor/v8/out/x64.release/libv8_base.a
    /Users/jayands/.rvm/gems/ruby-2.0.0-rc2@rails-4.0/gems/libv8-3.11.8.13-x86_64-darwin-10/vendor/v8/out/x64.release/libv8_base.a
    /Users/jayands/.rvm/gems/ruby-2.0.0-rc2@rails-4.0/gems/libv8-3.11.8.13-x86_64-darwin-10/vendor/v8/out/x64.release/obj.host/tools/gyp/libv8_base.a
    /Users/jayands/Documents/2013-02-10.wav
    /Users/jayands/Documents/2013-02-17.wav
    /Users/jayands/Documents/2013-02-24.wav
    /Users/jayands/Documents/2013-03-03.wav
    /Users/jayands/Library/Application Support/Steam/SteamApps/common/regnum/data0.sdb
    /Users/jayands/Library/Application Support/Steam/SteamApps/common/regnum/data1.sdb
    /Users/jayands/Library/Application Support/Steam/SteamApps/common/regnum/data2.sdb
    /Users/jayands/Library/Application Support/Steam/SteamApps/common/regnum/data4.sdb
    /Users/jayands/Library/Caches/com.apple.Safari/Cache.db
    /Users/jayands/Music/iTunes/iTunes Media/Podcasts/Bronyville/93 Bronyville Episode 093 – Friendship Gives You Wings!.mp3

如你所见,它会找到所有东西,甚至是你不想修改的东西。例如,如果它们具有特定的命名约定,则*.wav可以指定find命令以按名称搜索。find . -name '*.wav'

我说了所有这些让你熟悉更容易的部分find; 以下是倾向于绊倒人的部分。find有你可以把它做的指令,以什么发现。-print是如此常见,它是默认的,通常不必指定。-print0但是,它更有趣:它与大多数情况相同-print,但0是NUL字符替换换行符; 它使管道xargs更容易。在一个我们感兴趣的,然而,这是-exec指令,它可以让你对每个文件运行,这给我们带来了最简单的shell命令{}\;。该\;awk如果我没记错的话,就是逃避分号以终止exec命令并且花括号来自。它们被发现的东西取代。

chmod从Unix时代开始,它仍然存在; 事实上,你可以在Linux中运行的许多命令xterm在Mac终端中都有一些模拟。chmod 666会给你每个人的读写权限; 但是,如果你不记得了,试试吧chmod a=rw。这两个命令都意味着:“获取我要告诉你的文件,并为每个人设置读写访问权限。”

此外,由于您正在协作,您可能需要考虑运行私有的gitPerforce(p4)或Mercurial(hg)服务器,因为这些管理系统管理文件的权限。

更多信息

find

  1. man find 从航站楼
  2. 本教程

chmod

  1. man chmod

sudo

  1. man sudo

git来自git主页

如果您需要更多帮助,请询问。

哦,在我忘记之前:sudo询问该机器的管理员密码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.