Błędy uprawnień podczas próby pobrania repozytorium subversion na udziale CIFS

2

Pozdrowienia,

Mam udział CIFS zamontowany na moim komputerze z systemem Linux (Fedora 11). Ten udział zawiera kopię roboczą Subversion, z którą pracuję lokalnie na zdalnym komputerze. Zdalna maszyna to Linux z systemem Samba.

Chcę teraz pracować z repozytorium na moim komputerze, więc nie muszę się logować na komputerze zdalnym, aby robić kontrole i aktualizacje. svnWydaje się jednak, że występują problemy z uprawnieniami podczas próby wykonania operacji na plikach w udziale.

np. (na moim komputerze)

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

Jednak gdy próbuję edytować ten sam plik w wierszu poleceń (np. Za pomocą vi), działa dobrze i wydaje mi się, że mam pełne uprawnienia do odczytu / zapisu do tego pliku.

Próbowałem także zrobić nową kasę na moim komputerze w udziale:

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

Ale mogę to zrobić ręcznie:

$ mkdir project/.svn

... i działa.

Montuję udział w ten sposób:

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

Jestem więc właścicielem wszystkich plików w zamontowanym udziale.

Na razie mogę nadal używać subversion na zdalnym systemie, który nadal działa dobrze. Ale chciałbym, żeby to działało. Doceniam wszelkie twoje pomysły.

Dzięki

Edytować

Dzięki JohnnyLambada za sugestię użycia strace. Oto odpowiedni bit danych stracewyjściowych do próby pobrania 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

Nadal jest mylące, ponieważ mogę tworzyć katalogi (z tymi samymi trybami) w wierszu poleceń.

Zauważyłem jednak, że użycie touchdo utworzenia pliku tymczasowego powoduje błąd:

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

Chociaż nie był w stanie zresetować znacznika czasu, utworzył plik.

Friedo
źródło

Odpowiedzi:

1

Miałem podobny problem z udziałem CIFS z mojego D-Link DNS 323. Próbowałem grać z różnymi mount.cifsopcjami (strona podręcznika ), aż trafiłem na nounixktóry, który działał dla mnie.

nounix: wyłącz rozszerzenia CIFS Unix dla tego montażu. Może to być przydatne do wyłączenia wielu ustawień jednocześnie. Obejmuje to aclos POSIX, blokady POSIX, ścieżki POSIX, obsługę dowiązań symbolicznych i pobieranie UID / GID / Mode z serwera. Może to być również przydatne do obejścia błędu na serwerze obsługującym rozszerzenia Unix.

Więc w moim przypadku mój /etc/fstabteraz wygląda następująco:

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

Mój problem nie był taki sam jak twój - robiłem świeżą kasę repozytorium svn do nowego katalogu:

$ svn co https://example.com/project/trunk /nas/project
svn: Can't change perms of file '/nas/project/.svn/entries': Permission denied
Dzień
źródło
1

Trudno wiedzieć, co dokładnie idzie nie tak. Spróbowałbym uruchomić polecenie strace, aby zobaczyć, które wywołanie systemowe nie działa i jaki jest błąd. Lubię to:

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

Otrzymasz duży plik „/tmp/strace.out”. Spójrz tam na tekst „Odmowa zezwolenia”. Tuż nad nim powinieneś poszukać wywołania systemowego, które spowodowało błąd. Edytuj swoje pytanie za pomocą kilku wierszy danych wyjściowych przed błędem.

JohnnyLambada
źródło
Dzieki za sugestie; Zaktualizowałem oryginalny post o wynik strace
friedo
Więc mówisz, że możesz utworzyć test / .svn? Dziwne. Spróbuj uruchomić również test mkdir / .svn, aby sprawdzić, czy wykonuje dokładnie to samo wywołanie systemowe.
JohnnyLambada