2

Привет,

У меня есть общий ресурс CIFS, установленный на моей машине с Linux (Fedora 11). Этот общий ресурс содержит рабочую копию Subversion, с которой я работаю локально на удаленном компьютере. Удаленная машина представляет собой Linux-систему с Samba.

Теперь я хочу работать с репозиторием на моей машине, поэтому мне не нужно входить на удаленную машину, чтобы выполнять проверки и обновления. Тем не менее, svn кажется, сталкивается с проблемами разрешений при попытке выполнить файловые операции на общем ресурсе.

например (на моей машине)

$ svn update
svn: Can't open file '.svn/tempfile.tmp': Permission denied

Однако, когда я пытаюсь отредактировать тот же файл в командной строке (например, с помощью vi), он работает нормально, и у меня, кажется, есть полные права на чтение / запись для этого файла.

Я также попытался сделать новую проверку на моей машине на общем ресурсе:

$ svn co svn://10.212.52.226/project/trunk project
svn: Can't create directory 'project/.svn': Permission denied

Но я могу сделать это вручную:

$ mkdir project/.svn

... и это работает.

Я монтирую общий ресурс так:

mount.cifs //10.212.52.240/myname /mnt/mdev -o "uid=myname,gid=myname,password=mypass

Так что я владелец всех файлов на смонтированном общем ресурсе.

В настоящее время я могу продолжать использовать Subversion в удаленной системе, которая продолжает работать нормально. Но я бы хотел, чтобы это работало. Я ценю любые ваши идеи.

Спасибо

редактировать

Спасибо JohnnyLambada за предложение использовать strace . Вот соответствующий бит вывода strace для попытки извлечения Subversion:

open("test/.svn/entries", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
lstat64("test", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
mkdir("test/.svn", 0777)                = -1 EACCES (Permission denied)
write(2, "svn: Can't create directory 'test"..., 59svn: Can't create directory 'test/.svn': Permission denied

Это все еще сбивает с толку, так как я могу создавать каталоги (с теми же режимами) в командной строке.

Однако я заметил, что использование touch для создания временного файла вызывает ошибку:

$ touch foo
touch: setting times of `foo': Permission denied

Хотя он не смог сбросить метку времени, он создал файл.

2 ответа2

1

У меня была похожая проблема с общим ресурсом CIFS из моего D-Link DNS 323. Я пытался играть с различными опциями mount.cifs (manpage), пока не наткнулся на nounix который работал для меня.

nounix: отключите расширения CIFS Unix для этого монтирования. Это может быть полезно для отключения нескольких настроек одновременно. Это включает в себя ACL POSIX, блокировки POSIX, пути POSIX, поддержку символических ссылок и получение uids/gids/mode с сервера. Это также может быть полезно для обхода ошибки на сервере, который поддерживает расширения Unix.

Итак, в моем случае мой /etc/fstab теперь выглядит так:

//192.168.100.101/Volume_1  /nas    cifs    rw,nounix,user=,password=,uid=1000,gid=1000    0   0

Моя проблема не была такой же, как ваша - я делал новую проверку svn-репозитория в новый каталог:

$ svn co https://example.com/project/trunk /nas/project
svn: Can't change perms of file '/nas/project/.svn/entries': Permission denied
1

Трудно понять, что именно не так. Я попытался бы запустить команду под strace, чтобы увидеть, какой системный вызов идет не так и какова ошибка. Как это:

strace svn update >/tmp/strace.out 2>&1

Вы получите большой файл "/tmp/strace.out". Взгляните туда на текст "В доступе отказано". Прямо над ним вы должны искать любой системный вызов, вызвавший ошибку. Отредактируйте свой вопрос с несколькими строками вывода перед ошибкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .