Не вдалося виконати чудо


8

Тут я знайшов подібні запитання, але відповіді на ці питання не вирішують моєї проблеми.

Якщо я:

sudo chown <username> main.m

Я отримую помилку в операції, не допускається.

Загальним рішенням попередніх помилок було:

sudo chflags nouchg main.m

щоб очистити прапор блокування. Однак, зробивши це, я все ще не можу порушити файл. Я також спробував:

chflags noschg main.m

в єдиному користувальницькому режимі без жодної удачі - я отримую помилку в операції, не допускається.

Якщо у когось є думки, мені було б цікаво.


Що є основним, що ви намагаєтесь зробити? Можливо, в цьому файлі є замок.
Тамара Війсман

Тож я можу використовувати їх як тестові дані, не розміщуючи код у захищеному помічнику, що вимагає додаткової роботи для налагодження - не неможливо, але досить дратує, що якщо я можу змінити атрибути файлу, то безпечний інструмент помічника не потрібен, це полегшило б справи. Враховуючи, що це лише тістові дані, які були створені, немає більше жодних вагомих причин для блокування.
ericg

1
Для якого типу файлової системи використовується файл? Ви не намагаєтеся використовувати chownфайлову систему NTFS / FAT, чи не так?
Зоредаче

@ericgorr: Більшість із них над головою; Мені невідомо, що таке надійний помічник. Але, як ви кажете, це були лише створені тестові дані; чи правильно ви закрили тестовий файл у своєму коді?
Тамара Війсман

@Довідний інструмент - це спосіб надання додатку підвищених привілеїв, зберігаючи привілеї - тому, якщо програма хоче змінити захищений файл, наприклад, він повідомляє (авторизованому) помічнику змінити файл для нього. Я здогадуюсь, Ericgorr хоче уникнути піднесення своєї заявки або чогось, щоб уникнути суворої налагодження, яка поставляється із цим.
Верно

Відповіді:


8

Файли Mac можна захистити чотирма трьома різними способами, про які я знаю:

  1. Стандартні права власності та дозволи Unix, такі як r / w / x для користувача / групи / інших, які ви бачите ls -lта виправляєте за допомогою chown(1)та chmod(1).
  2. Файли, як uchgі schgякі ви бачите ls -lOта за допомогою яких виправляєте chflags(1).
  3. Старі метадані Finder "Блокування блоку", які ви бачите GetFileInfo filename. Ви також можете бачити наявність метаданих Finder, але не їх значення ls -l@. Ви можете виправити це SetFile(1). Неважливо, це зараз відображено на uchgпрапорі.
  4. Списки контролю доступу (ACL), які ви бачите ls -leта виправляєте аргументами, пов’язаними з ACL chmod(1).

Тож давайте подивимося, що з вашим файлом, комбінуючи всі ці прапори для ls:

ls -lO@e main.m

Здається, ви вже знаєте, як боротися з №1 та №2.

Якщо ви бачите ACL (# 4), ви можете виправити його аргументами, пов’язаними з ACL chmod(1).

Якщо ви все ще наткнулися, оновіть свою відповідь результатом цієї комбінованої lsкоманди, яку я запропонував вище, щоб ми могли побачити, що відбувається.


Здається, проблема стосується ACL. Мені здається цікавим, що судо не обходиться навколо таких замків. Крім того, chmod -R -a # 0 * видалив ACL з більшості файлів в ієрархії, але не зміг їх видалити з деяких - використання sudo з chmod не допомогло.
ericg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.