3

Используя ужасные настройки Mac для общего доступа к файлам, мне удалось отыскать разрешения в моей папке Documents. Мои каталоги без документов имеют такие разрешения:

drwx------+ for .
drwxr-xr-x+ for ..
-rw-------@ for .DS_Store

drwxr-xr-x  for most folders
drwxr-xr-x@ for some folders

-rw-r--r--  for some files
-rw-r--r--@ for some files

Мои каталоги документов имеют такие разрешения:

drwx---r-x+ for .
drwx---r-x+ for ..
-rw----r--@ for .DS_Store

drwx---r-x+ for (all?) folders

-rw----r--@ for some files
-rw----r--+ for some files

Похоже, что все, что должно иметь доступ для чтения группы, отсутствует. Я понимаю, что chmod может помочь, и что он имеет рекурсивную опцию -R, но я неохотно начинаю экспериментировать и все портить. В частности, я не хочу устанавливать групповое чтение там, где его не должно быть. Кроме того, я хочу изменить только некоторые биты, оставив другие в покое.

Кто-нибудь может дать совет о том, как это исправить?

Не уверен, что это актуально, но я попытался разрешить другому пользователю на том же компьютере доступ на чтение / запись к документам моего основного пользователя. При совместном использовании настроек я пытался добавить папку "Документы" в список общих папок и настроить всех на чтение (или, по крайней мере, на чтение), но в процессе, я думаю, я удалил группу "сотрудники", что бы это ни было.

2 ответа2

2

В крайнем случае, вы можете добавить групповые разрешения на чтение / запись, введя ваш каталог Documents и выполнив:

chmod -R g+rw *

Если вам нужно исправить право собственности, вы можете сделать:

chown -R user.group *

[Очевидно, вы заменяете user и group фактическим именем пользователя и группы]

Теперь вам просто нужно исправить каталоги.

find . -type d | replace ' ' '\ ' | xargs chmod g+x

Вышеуказанный вызов находит все каталоги, затем экранирует пробелы обратной косой чертой (требуется для передачи в xargs), а затем добавляет разрешения на выполнение группы для каждого. Команда replace является частью mysql. Если у вас его нет, вы можете использовать sed 's/ /\\ /g'

Отказ от ответственности, что мой дистрибутив Linux является Slackware. Я ожидаю, что это будет работать на Mac, но я не могу проверить. Вы можете заменить xargs chmod g+x на echo | more если вы хотите сделать проверку работоспособности.

Обратите внимание, что вы можете сначала направить вывод в файл:

find . -type d | replace ' ' '\ ' > dirs.txt

Затем вы можете просмотреть этот файл и использовать текстовый редактор, чтобы удалить любые каталоги, которые вы не хотите изменять. Тогда вместо рекурсивных вызовов chmod вы можете сделать:

cat dirs.txt | sed 's/$/\/*/' | xargs chmod g+rw
cat dirs.txt | xargs chmod +x

Вызов sed просто заменяет конец каждой строки на '/*', чтобы обозначить все файлы в каталоге.

0

Если я помню, атрибут + после стандартного ls rwxrwxrwx сигнализирует ACL. Я был бы осторожен, потому что доступ для чтения вашей группы может быть частью схемы ACL.

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