Самба по 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

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

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

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

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

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

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

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

5 ответов

Это может помочь, у 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, Это может быть связано. И я хотел бы услышать, так ли это на вашем сервере.

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

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

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

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

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

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

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

Другие вопросы по тегам