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