Назад | Перейти на главную страницу

Samba по CIFS, проблемы с копированием дерева каталогов

У меня есть сервер с общим ресурсом samba, который смонтирован CIFS на моей клиентской машине под /media/photos.

/media/photos собственность root:samba, и мой пользователь также является членом группы samba. В smb.conf на сервере у меня есть:

force create mode = 0664
force directory mode = 2775
force security mode = 0664
force directory security mode = 2775

Так /media/photos каталог имеет права drwxrwxr-x. Каждый файл, который я создаю в этом каталоге, имеет права rw-rw-r--

Я могу создать каталог. Я могу создать файл. Я могу зайти в созданный каталог и создать там файл.

Я не могу скопировать дерево каталогов. Когда я выдаю:

cp -r /home/frank/photos/Tymek/ /media/photos

Каталог «Тимек» создается, но файлов внутри нет. Я получаю сообщения вроде

cp: cannot create regular file `/media/photos/Tymek/usg_10.bmp': Permission denied

Даже если я смогу зайти в каталог Tymek и без проблем создать файл.

Работает такая команда:

cp -r /home/frank/photos/Tymek/ /media/photos/

(добавлена ​​косая черта в конце)

Но Nautilus, похоже, использует первый метод, у него проблемы с копированием целых каталогов, и он мне нужен.

Это может помочь, OS X 10.5 имела аналогичные проблемы с нашей Samba, пока не был применен волшебный набор разрешений smb.conf, который остановил такие же проблемы с отсутствием разрешений. Попробуйте заменить / изменить свои значения следующими:

    create mask = 0664
    force create mode = 0664
    security mask = 0000
    force security mode = 0664

    directory mask = 0775
    force directory mode = 0775
    directory security mask = 0000
    force directory security mode = 0775

Я не могу гарантировать, что это исправит вас, но потребовалось много настроек, чтобы решить ту же проблему для этих клиентов Mac.

Похоже, что у меня тоже была проблема. Пожалуйста, убедитесь, что при копировании папки, которая содержит только файлы и никакие другие подпапки, и папка не существует в месте назначения, вы сначала получаете «разрешение отклонено», но вы можете скопировать ее без проблем сразу после этого. Например.

$ mkdir testdir
$ touch testdir/somefile
$ rm -r /media/photos/testdir
$ cp -r testdir /media/photos
cp: cannot create regular file `/media/photos/testdir/somefile': Permission denied
$ cp -r testdir /media/photos
$ # same command works

Это обсуждалось на Ubuntuforums: smbmount: невозможно создать обычный файл. Я написал там как "xrat". Я все еще считаю, что это ошибка (просто еще не успел сообщить). Добавление noperm к параметрам крепления помогает. Но это грязный обходной путь.

Обновить 2009-11-17: Отчет об ошибке был найден. Престижность первооткрывателю Варанаси.

Если вы хотите копнуть глубже, вот еще одно предложение: посмотрите, смонтированы ли файловые системы на вашем сервере Samba с помощью noatime или relatime. Это может быть связано. И я хотел бы услышать, так ли это на вашем сервере.

Есть ли особые требования для этого в Наутилусе? Если нет, почему бы вместо этого не использовать RSync? Я считаю это более надежным, чем cp для такого рода работы.

Существует разница между пользователями с правами доступа к файлам и пользователями самбы в более старых версиях самбы. Какую версию Samba вы используете? Как вы создали учетную запись пользователя samba? В какие группы самбы вы добавили своего пользователя самбы на сервере CIFS?

Наконец, когда вы выполняете cp -r и создается каталог Tymek, с какими разрешениями он создается?

Когда вы монтируете CIFS mount, он монтируется с разрешениями учетной записи, которую вы использовали для монтирования.

Это означает, что разрешения исходят от сервера, а не от локальных.

Учетная запись, с которой вы монтируете, должна быть добавлена ​​на стороне сервера в группу samba.

Установка uid = и gid = в fstab или во время монтирования не отменяет разрешения на стороне сервера с локальным разрешением.