Что означает «@» в разрешениях файла unix?

49

У меня есть файл со следующими разрешениями на моем MacBook Pro:

-rwxr-xr-x@ 1 root wheel 101K Feb 29 17:09 apachectl

Что означает @стенд? Я не могу выполнить файл, и это единственное, что выделяется для меня. Как я могу избавиться от этого?

Как фон, я скопировал это из резервной копии Time Machine.

VinnyD
источник

Ответы:

35

Если файл или каталог имеет расширенные атрибуты, вы увидите @ в поле прав доступа. Для расширенной информации о безопасности (ACL), вы увидите +.

От man lsна OS X:

-@      Display extended attribute keys and sizes in long (-l) output.

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

Быстрый пример из некоторого примера кода компрометации PHP, который я держу для справки:

$ ls -@l php-compromise.php 
-rw-r--r--@ 1 user  group  502620 Jul  5  2011 php-compromise.php
    com.apple.FinderInfo        32 
    com.apple.TextEncoding      15 

источник
22

Спасибо @Jeff за исправление. Я запомнил.

  • @Отображается с помощью расширенного атрибута устанавливается
  • +Отображается для ACL.
  • Если у вас есть атрибут и ACL, то вы видите @.

Запустите команду, ls -le filenameчтобы увидеть, установлены ли какие-либо ACL.

Поскольку ваша проблема, похоже, связана с доступом к файлу, я уверен, что у вас есть набор ACL в дополнение к расширенному атрибуту.

Чтобы избавиться от ACL, запустите echo | sudo chmod -E filenameфайл или echo | sudo chmod -R -E directory nameкаталог.

Смотрите страницу руководства chmod .

Zoredache
источник
Спасибо за ответ. как я могу избавиться от этого?
VinnyD
Обновлено с ответом, который я считаю, должен работать.
Zoredache
Разрешения ACL @Zoredache поставляются со знаком плюс. @ - это «расширенные атрибуты».
Да, я вижу это, когда я проверяю дважды. Я должен был вспомнить назад. И что происходит, когда файл имеет оба?
Zoredache
Неважно, я загрузил Mac. Если у вас есть @расширенный атрибут и +набор acl, похоже, что ls покажет a @. Поскольку у него проблемы с доступом к файлу, мне кажется, что проблема скорее в том, что у него есть проблема с ACL.
Zoredache
8

С атрибутом карантина яблока chmod недостаточно для его удаления.

Вам необходимо удалить атрибут явно:

sudo xattr -d com.apple.quarantine my_file
буйство
источник
ОП также спросил: «Что означает @?»
Kamafeather
3

@Означает расширенные атрибуты, в дополнение к стандартным права доступа к файлам UNIX.

Проверьте расширенные атрибуты:

ls -l@

Сброс всех расширенных атрибутов для одного файла:

sudo xattr -c <filepath>

Сбросить все расширенные атрибуты рекурсивно:

sudo xattr -rc <directory>
sudo chmod -R -N <directory>

Проверено на macOS High Sierra (10.13) и macOS Mojave (10.14.6).

NullIsNot0
источник
0

Я обнаружил, что -Eили -Nна самом деле невидимы даже при использовании sudo. Единственный способ, которым я мог это исправить - войти в систему как пользователь root.

Реза Тогреи
источник
Это не ответ. Вероятно, должен быть комментарий к ответу, на который вы ссылаетесь.
Kamafeather