Як з’ясувати, що спричиняє зміну власності / usr / local з мого імені користувача на root


13

Я використовую homebrewяк менеджер пакунків для певної програми для веб-розробок. Щоб бути brewв курсі, я бігаю update brewкожні пару днів, а також бігаю brew doctor. Зазвичай це добре і brewговорить про те, що я готовий варити.

Однак раз у раз я отримую таку помилку:

Попередження: / usr / local / тощо не можна записати.

Це може статися, якщо ви "sudo make install" програмне забезпечення, яким не керує Homebrew. Якщо формула намагається записати файл у цей каталог, встановлення не вдасться під час кроку посилання.

Ймовірно, ви повинні chown/ usr / local / тощо

Попередження: / usr / local каталог не піддається запису. Навіть якщо цей каталог був доступним для запису під час встановлення Homebrew, інше програмне забезпечення може змінювати дозволи на цей каталог. Деякі версії компонента "InstantOn" на Airfoil, як відомо, роблять це.

Ви, ймовірно, повинні змінити право власності та дозволи / usr / local назад на свій обліковий запис користувача.

Досить просто відновити дозволи на моє ім’я користувача. Згодом brewздається, що це добре.

Але через що це відбувається?

Чи існує журнал, який показує, що викликає зміни дозволів?


3
Немає журналу, але зауважте, що наявність / usr / local, що належить rood, є стандартом Unix, і тому будь-яка вбудована система там очікує цього. Рішення - не змішувати каталог з обома менеджерами пакунків (Homebrew) та стандартною компіляцією Unix - Використовуйте інший каталог для одного з них
user151019

3
Додавання програмного забезпечення до того самого місця, яке використовує керування пакетами, є поганою ідеєю, а отже, змінюється право власності та дозволи /usr/local. Але якщо ви наполягаєте, то можете, make installне використовуючи sudoдля пакунків, які ви встановлюєте самі.
fd0

1
Оновлення OS X зазвичай скидає / usr / локальне право власності та дозволи.
mspasov

1
@ Інші ах, я читав цитату з Homebrew, а не питання
користувач151019

1
Що ще ви встановили (вручну або через будь-який інший менеджер пакунків) на своєму Mac, який був налаштований для встановлення за замовчуванням /usr/local?
дан

Відповіді:


13

У мене був такий самий випуск, і, виявляється, саме оновлення Sophos було винне. Я зрозумів це, запустивши:sudo fs_usage | grep "usr/local"

Минув деякий час, але врешті-решт я побачив, як Софос корисно назвав демона "Установка", що псується з дозволами / usr / local.

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

EDIT: Я вважаю, що Софос вирішив це питання, дивіться посилання в коментарях до цієї відповіді. Мені здається, це виправлено принаймні!


4
Тут є дискусія: community.sophos.com/products/free-antivirus-tools-for-desktops/… Це слід виправити в листопаді 2015 року
JoeZuntz

@JoeZuntz Приємна знахідка! Дивно, що вони насправді підштовхують виправлення.
Інші

@others дякую за цю інформацію. Я зміг виправити все після оновлення до 10.11.1 і знову почав працювати домашньою програмою, але частіше за все, кожного разу, коли я йшов робити оновлення варіння, дозволи знову змінювалися. Мене помиляло, яке програмне забезпечення постійно змінювало хімічні речовини на / usr / local.
Тім X

@TimX Так, це начебто смокче ... На щастя, схоже, що Софос виправляє це наприкінці наступного тижня, 20 листопада.
Інші

4

Виявляється, винуватцем є Filewave. Filewave - це програмне забезпечення для управління системою, яке використовується нашою школою для просування оновлень програмного забезпечення. Дякуємо за вклад.


2

У мене просто груба ідея, як отримати злодія на дозвіл. Це не рішення вашої проблеми, а більше якесь вирішення.

Що з написанням сторожового собаки в Automator або з Hazel (дії з папками) для перегляду цієї конкретної папки, але замість того, щоб додавати функцію, як зображення масштабу, ви просто використовуєте оболонку, яка виконує кілька команд оболонки:

  • Якщо папку будь-яким чином змінено, просто зробіть знімок дозволів та ідентифікатор поточного доступу, що має доступ fuser <foldername>.
  • потім ви шукаєте в таблиці процесів id процесу ( ps auxwwwwww | grep <process id>) і нарешті
  • написати електронний лист із цією зібраною інформацією.

На жаль, я не є Автоматизатором, але я дізнався, що в Google є багато рішень для подібної проблеми.


0

Якщо ви використовуєте машину часу, ви зможете знайти приблизний час, коли дозволи змінюються, досліджуючи Backups.backupdbтермінал. Використовуйте ls -ldу папках із позначкою часу, наприклад

ls -ld /Volumes/Backup/Backups.backupdb/Mac/2015-12-25-120000/Macintosh\ HD/usr/local 

Яка буде інформація про власника та групу.

Після того, як у вас відбудеться дата зміни, ви зможете визначити, що ще могло змінитись у вашій системі. Простий прийом полягає у використанні файлу Finder ›Знайти та додати Last modified dateкритерій. Інші хороші інструменти є findі mdfindв Терміналі.


-1

Це побічний ефект від оновлення системи; OS X, ймовірно, робить деякий всесезонний дозвіл "ремонтувати" під час процесу оновлення, оскільки / usr / local вкладено в папку, що належить root.


AFAICT, оновлення до El Capitan - це те, що спричинило проблему для мене
Джузеппе

-3

Ви використовували Disk Utilityselect, Macintosh HDа потім запустіть, Verify Disk Permissionа потім, Repair Disk Permissionякщо потрібно, замість того, щоб робити це вручну?

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

Крім того, new update -vдля отримання більш детального виводу, а також старі журнали наведені тут ~/Library/Logs/Homebrew, згідно з тим, де знаходиться журнал домашнього перекладу?


2
Disk Utilityне підтверджує та не відновлює дозволи, /usr/localоскільки цей каталог не існує в новій установці Yosemite.
дан

Я повністю перевірив цю гіпотезу на Yosemite, створивши нову /usr/localприналежність мені і запустивши DU. Існує не /usr/localв DUжурналі. І /usr/localдосі належить мені.
дан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.