2015-10-21 2 views
1

Я новичок в perforce и unix. При выполнении 'p4 sync' получает ошибку "can can clobber writable files" для некоторых моих файлов. Я тогда сделал «chmod -R 555 ./*», считая, что он удалит права на запись для файлов, которые давали мне вышеупомянутую ошибку. Я не знал, что у нас разные разрешения для каталогов и файлов. Итак, теперь я установил rx-разрешения для всех каталогов и файлов, и теперь, когда я пытаюсь выполнить «p4 sync», я получаю следующую ошибку для всех файлов:Как отменить неправильные ручные рекурсивные изменения в разрешениях файлов и каталогов?

открыть для записи:/home/path_to_file/tmp.18455.196170: Разрешение отклонено

Что нужно сделать, чтобы вернуть исходные разрешения, предоставляемые perforce?

+0

Если вы можете, войдите в root и сбросьте разрешения. – Downvoter

+0

@cad: Я полагаю, что «.. но как?» является точкой этого вопроса – quetzalcoatl

+1

Harley - я редактировал заголовок, чтобы сделать его немного более сосредоточенным на том, что вы на самом деле просите в конце текста. Если это не так, пожалуйста, заново отредактируйте и поместите лучший заголовок – quetzalcoatl

ответ

1

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

find . -type d -print0 | xargs -0 chmod 755 
find . -type f -print0 | xargs -0 chmod 444 

Это касается разрешения 755 к справочникам и 444 к файлам.

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

Также обратите внимание, что использование восьмеричной маски с chmod не обязательно то, что вы хотите, поскольку это означает «назначить эти разрешения»; когда вы хотите «удалить» или «добавить», обычно лучше использовать символический режим; например, чтобы удалить все три бита на запись файлов только, необходимо указать a-w (удалить w в a Л.Л. поля):

find . -type f -print0 | xargs -0 chmod a-w 

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

find . -ls 
+0

Ну, я ищу более конкретное решение. Есть ли способ с помощью некоторой команды perforce, которая заставит синхронизацию, а также правильно сбросит разрешения файлов и каталогов. – Harley

+1

@Harley rm -r ваш-perforce-клиент-корневой каталог; p4 sync -f –

+0

Да ... это, в конечном счете, то, что я сделал. Я просто хотел что-то более аутентичное. Потому что эта ошибка «can not clobber writable files» - это то, что я получаю время от времени. Спасибо, bdw. :) – Harley

0

ошибка указывает на то, что файлы в рабочей области могут быть перезаписаны, но не были проверены на «Perforce» (открыт для редактирования).

Если вы хотите, чтобы перезаписываемые файлы были перезаписаны файлами, синхронизированными с Perforce, установите параметр «noclobber» в clobber в спецификации клиента.

Более подробная информации об этой опции и команде «Р4 клиента» доступна здесь:

http://www.perforce.com/perforce/r15.1/manuals/cmdref/p4_client.html#p4_client.usage

Надеется, что это помогает, Джен.

 Смежные вопросы

  • Нет связанных вопросов^_^