Вот установка:
c:\share
папка со следующими разрешениями (чтение, чтение / запись на данном этапе не важны, я не думаю): c:\share\add_user3
папка со следующими разрешениями: c:\share
)c:\share
)share
для c:\share
с разрешениями на чтение / запись для локальных администраторов сервераПоведение клиента Windows (как XP, так и Windows 7):
c:\share\test.txt
c:\share\add_user3\test.txt
Поведение клиента Mac:
c:\share\test.txt
c:\share\add_user3\test.txt
ИЛИ Пользователь редактирует существующий файл c:\share\add_user3\test.txt
который был создан на клиенте WindowsЭто похоже на то, что клиенты Mac используют разрешения NTFS на уровне общей папки ( c:\share
) и применяя его непосредственно к c:\share\add_user3\test.txt
. Разрешения от c:\share\add_user3
не соблюдаются / не передаются по наследству.
Все пользователи клиента Mac являются локальными администраторами на сервере (и, следовательно, имеют полный контроль). Это необходимо с операционной точки зрения, так как все клиенты (даже пользователи Mac) должны иметь доступ к серверу с правами администратора (в основном с правами администратора IIS).
В первую очередь я работаю с Windows, поэтому кажется, что Mac «неправильные», но, возможно, это просто другое поведение (т.е. здесь нет «стандарта», который нарушается). Есть идеи, почему это происходит? И, учитывая, что мы хотим, чтобы разрешения вели себя как клиенты Windows, есть ли идеи о том, как обеспечить это на стороне Mac?
MACHINE\Administrators
Это вызвано чем-то Apple называет "безопасное сохранение"". Когда Mac сохраняет файл в общей папке SMB, он фактически записывает файл в скрытую папку с именем .TemporaryItems в корне общего ресурса удаляет оригинал (если он существует), затем перемещает файл в фактическую папку. Поскольку сохраненный файл новый, у него появился новый владелец с разрешениями, унаследованными от .TemporaryItems.
Решение, которое я использую, простое: удалить разрешения на запись для .TemporaryItems. Кажется, это отключает безопасное сохранение.
Я читал это создание com.apple.desktopservices с атрибутом "DSDontWriteNetworkStores" остановит клиентов от создания .TemporaryItems, но по моему опыту, это не работает в OS X 10.8 и новее.