Відповіді:
Якщо файл або каталог має розширені атрибути, у полі дозволів ви побачите @. Для розширеної інформації про безпеку (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
Дякую @Jeff за виправлення. Я сумував за спогадами.
@
показ з розширеним атрибутом+
відображається для ACL.@
.Запустіть команду, ls -le filename
щоб перевірити, чи є в ній встановлені ACL.
Оскільки ваша проблема, як видається, пов'язана з доступом до файлу, я думаю, що у вас є набір ACL на додаток до розширеного атрибуту.
Щоб позбутися ACL, запустіть echo | sudo chmod -E filename
файл або echo | sudo chmod -R -E directory name
каталог.
Дивіться сторінку chmod man .
@
розширений +
набір атрибутів і acl, виявиться, що ls покаже a @
. Оскільки у нього є проблеми з доступом до файлів, мені здається, що ця ймовірність, що у нього проблема з ACL.
@
Чи означає розширені атрибути, на додаток до стандартних права доступу до файлів 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).
Я виявив, що -E
або -N
насправді непомітний навіть під час використання sudo
. Єдиний спосіб я міг це виправити - увійти як root