Що означає "@" у дозволах на файл Unix?


49

У мене на MacBook Pro є файл із такими дозволами:

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

Що означає @підставка? Я не можу виконати файл, і це єдине, що мені виділяється. Як я можу його позбутися?

Як і деякий фон, я скопіював це з резервної копії Time Machine.

Відповіді:


35

Якщо файл або каталог має розширені атрибути, у полі дозволів ви побачите @. Для розширеної інформації про безпеку (ACL) ви побачите +.

З man lsОС 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 man .


дякую за відповідь. як я можу його позбутися?
VinnyD

Оновлено відповіддю, що, на мою думку, має працювати.
Зоредаче

@Zoredache Дозволи ACL мають знак плюс. @ - "розширені атрибути".

Так, я бачу це, коли я перевіряю. Я, мабуть, пам’ятаю назад. А що станеться, коли файл має обоє?
Зоредаче

Не маю на увазі, я отримав завантаження Mac. Якщо у вас @розширений +набір атрибутів і acl, виявиться, що ls покаже a @. Оскільки у нього є проблеми з доступом до файлів, мені здається, що ця ймовірність, що у нього проблема з ACL.
Зоредаче

8

Завдяки атрибуту яблучного карантину, chmod недостатньо для його видалення.

Потрібно видалити атрибут явно:

sudo xattr -d com.apple.quarantine my_file

ОП також запитала: "Що означає @?"
Камафезер

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).


0

Я виявив, що -Eабо -Nнасправді непомітний навіть під час використання sudo. Єдиний спосіб я міг це виправити - увійти як root


Це не відповідь. Напевно, має бути коментар до відповіді, на яку ви звертаєтесь.
Камафезер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.