Почему я не могу прочитать или записать файл, владелец которого является пользователем root и имеет разрешение 707 в Terminal.app на Snow Leopard?
Это то, что происходит, но почему?
liuxiang@MacBookPro: ~/casecode/sh $ ls -l sa
-rwx---rwx 1 root admin 55 10 21 00:07 sa
liuxiang@MacBookPro: ~/casecode/sh $ cat sa
cat: sa: Permission denied
liuxiang@MacBookPro: ~/casecode/sh $ date >> sa
-bash: sa: Permission denied
liuxiang@MacBookPro: ~/casecode/sh $ ./sa
-bash: ./sa: Permission denied
2 ответа
Как и в большинстве других UNIX-подобных операционных систем, Macintosh позволяет вам контролировать доступ к файлу с разрешениями POSIX. Однако, начиная с Mac OS/X 10.4 (Tiger), файл и операционная система Macintosh позволяют (опционально) настраивать список контроля доступа. Списки контроля доступа дают администратору гораздо больше контроля, чем обычные разрешения POSIX (ACL чаще всего используются в рабочих средах).
Как примечание, Windows поддерживает ACL начиная с Windows NT; и некоторые версии Linux делают то же самое. Также на Ars Technica есть отличная статья о списках контроля доступа в Macintosh.
В любом случае, в соответствии с Mac OS X Server v10.6 - Руководство по управлению пользователями (см. Стр. 28), если для файла установлено одно или несколько правил ACL и одно из этих правил ACL применимо к вам, тогда правила ACL имеют приоритет поверх обычных разрешений POSIX.
В вашем случае ваш файл принадлежит пользователю "root" ("superuser") и принадлежит к группе "admin" (в эту группу входят только пользователи, помеченные как "Administrators" на панели "Учетные записи" в Системных настройках). Разрешения POSIX для вашего файла установлены так, чтобы root мог читать, записывать и выполнять файл; запрещает любой доступ для группы "администратор" и позволяет другим пользователям читать, записывать и выполнять ее. Как вы продемонстрировали, вам следует разрешить делать с этим файлом все, что вы хотите! Не волнуйтесь, хотя; вы не сходите с ума (что всегда обнадеживает, узнав ^_^)... похоже, что правило ACL мешает и переопределяет разрешения файла POSIX.
Вот почему Марк спросил:
Что показывает ls -e?
... ls -e
показывает правила списка контроля доступа для этого файла. Очевидно, если у вас есть Macintosh Server, есть хорошая панель, которая позволяет вам управлять всеми правилами. (В обычном диалоговом окне "Получить информацию" в Finder также есть ограниченный файл... найдите файл в Finder и нажмите "Command + i", чтобы "получить информацию" для него... разверните панель "Общий доступ и разрешения" внизу). окна покажет вам некоторые правила ACL... вам придется разблокировать эту панель, чтобы изменить права доступа).
Если способ Finder не работает, вам придется попробовать ls -e
, Надеемся, что распечатанные правила ACL не будут слишком сложными. Однако в документе "Обзор безопасности" в Центре разработки Macintosh есть удобная ссылка ACL. Не стесняйтесь ответить на этот пост, если вам нужна дополнительная помощь.
В вашем случае, даже если вы знаете правила ACL, вы не сможете ничего с этим поделать... только владелец (или суперпользователь, который в вашем случае также является владельцем) может изменить его; и только люди, которые входят в группу "администратор" (к которой вы говорите, что вы не принадлежите) могут действовать от имени суперпользователя. Однако, если вы хотите попробовать, вы (или кто-то, кто является администратором) можете перейти в каталог, содержащий файл, и выполнить одну или несколько из следующих команд:
sudo chmod +a "liuxiang allow read" sa
# чтобы включить чтение
sudo chmod +a "liuxiang allow write" sa
# чтобы включить запись
sudo chmod +a "liuxiang allow execute" sa
# чтобы включить его
... (или что-то подобное), чтобы исправить это (вам будет предложено ввести пароль человека, который запускает команду).
Надеюсь, это поможет!
Посмотрите здесь: Команда для разблокировки "заблокированных" файлов на OS X
Может быть, это помогает.