1

Я хочу создать ZIP-архив определенной папки, он в основном содержит фотографии, скопированные из разных источников, собранные за несколько лет. К сожалению, разрешения перепутаны. С ls я вижу такие вещи, как

----------@

а также

-r--r--r--@

Последний отображается в Finder как имеющий дублированные записи пользователя и группы. Когда я пытаюсь сжать папку, происходит ошибка с файлами, имеющими эти разрешения.

Я ищу команду терминала, которая сбрасывает все файлы в папке в

-r--r--r--

или для каталогов

drwxr-xr-x

Благодарю.

3 ответа3

3

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

sudo chown -R hhrutz:staff /path/to/folder

Это устанавливает для владельца значение hhrutz, а для группы - персонал для всего содержимого папки. Обратите внимание, что для этого требуются права администратора, и вам придется ввести пароль администратора для подтверждения.

chmod -R u=rwX,go=rX /path/to/folder

Это устанавливает права доступа к файлу для «-rw-r - r--», а для каталогов - «drwxr-xr-x» (опция "X" означает добавление разрешений на выполнение при необходимости).

Хорошо, теперь все разрешения posix очищены, но OS X имеет два типа разрешений для файлов: posix (часть "-rw-r - r - @ 1 hhrutz 757317411") и списки контроля доступа ("0:": user: hhrutz allow ... "), а часть ACL все еще в беспорядке. Чтобы убрать это, используйте:

chmod -R -N /path/to/folder

Это просто удалит все ACL из файлов и папок.

0

Довольно глупое решение - сделать cp -r для дублирования папки, это удалит всех неправильных пользователей. Затем вам нужно найти файлы, у которых нет разрешения, и вызвать для них команду chmod a+r .


Редактировать: Хорошо, поэтому следующее показывает всех пользователей:

$ ls -le interplay_l8.jpg 
-rw-r--r--@ 1 hhrutz  757317411  283266  7 Feb  2011 interplay_l8.jpg
 0: user:hhrutz allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 1: group:everyone allow read,readattr,readextattr,readsecurity
 2: user:hhrutz allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 3: group:everyone allow read,readattr,readextattr,readsecurity

Это было после того, как я сделал chmod u+rw . Использование флага n показывает количество пользователей:

$ ls -len interplay_l8.jpg 
-rw-r--r--@ 1 1622704362  757317411  283266  7 Feb  2011 interplay_l8.jpg
 0: 60B880EA-8F35-47F9-B64B-5384CBA15697 allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 1: ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C allow read,readattr,readextattr,readsecurity
 2: 60B880EA-8F35-47F9-B64B-5384CBA15697 allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 3: ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C allow read,readattr,readextattr,readsecurity

Таким образом, есть несколько записей для одного и того же пользователя ...

0

Предполагая, что у вас все еще есть права на изменение прав доступа к файлу, вы можете использовать флаг -R с chmod для рекурсивного изменения прав доступа к файлу. Например, чтобы изменить все разрешения в папке \Users\Test\Desktop\PATH для чтения, записи и выполнения для всех, мы можем использовать:

chmod -R 777 /Users/Test/Desktop/PATH

"777" означает чтение, запись и выполнение для всех пользователей. Чтобы изменить разрешения на что-то другое, прочитайте информацию о восьмеричной / цифровой системе обозначений разрешений файловой системы (если вы с ней не знакомы) по адресу https://en.wikipedia.org/wiki/File_system_permissions#Numeric_notation.

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