У меня есть файловый сервер, на котором работает OpenIndiana, и у меня несколько клиентов всех вкусов. Windows, OSX и Linux (в основном Ubuntu). Я разделяю некоторые файловые системы ZFS через AFP, CIFS, NFS. Я понимаю стандартные разрешения стиля 777 для локальной файловой системы, и я понимаю ACL в ограниченной степени.
Я не понимаю, что происходит, когда вводится уровень совместного использования, как тогда работают разрешения? Меня в первую очередь интересует CIFS между системами на основе Unix, поскольку это то, что я использую в основном, но общее понимание тоже будет отличным.
Чтобы работать над примером, у меня есть несколько машин с приложениями ubuntu, которым при загрузке требуется доступ к определенным структурам папок на общем ресурсе. Как лучше всего управлять их доступом?
Разрешения складываются друг над другом.
Например: предоставить Джо доступ к общему ресурсу, но не к базовой структуре диска => доступ запрещен. Предоставить Джо доступ к диску, но не к самому общему ресурсу => доступ запрещен. Предоставить Джо доступ к обоим => доступ предоставлен.
Это легче всего увидеть в конфигурации CIFS / SMB.
Другие продукты - NFS или CIFS в гостевом режиме - также могут маскировать всех входящих пользователей под одной конкретной учетной записью в локальную файловую систему.
Даже для установок, использующих гостевой режим, локальная файловая система все равно должна предоставлять права учетной записи, связанной с гостевым доступом.
Разрешения файловой системы применяются к пользователям локальной системы.
Все протоколы совместного использования сети должны полагаться на уровень трансляции для преобразования учетных данных доступа к сети в учетные записи локальных пользователей.
Для более крупных сетей полезно, если это может быть централизовано, с помощью LDAP, NIS и т.п.
ДОБАВЛЕНО: вы специально спрашивали о CIFS между машинами * nix - ну, если обе не поддерживают материал winbindd, любые разрешения и владение ограничены тем, что установлено в точке монтирования.
То есть при совместном использовании / mnt / foo на хосте A через CIFS с использованием пользователя Joe будут актуальны только разрешения, установленные при монтировании с помощью user = Joe на хосте B.
Любые разрешения в исходном местоположении заменяются глобальными, установленными на монтировании.