У меня есть сервер с общим ресурсом 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 или во время монтирования не отменяет разрешения на стороне сервера с локальным разрешением.