Як запустити Homebrew як корінь?


11

Роки тому ви могли втекти з запуском brewяк root, просто подавши brewкорінь, але вони вилучили цю функцію. Тож у Homebrew 1.1.6 я використовував редагування, /usr/local/Homebrew/Library/Homebrew/brew.shщоб видалити кореневу перевірку (та, яка сказала, що це "надзвичайно небезпечно"), щоб я міг запустити brewяк root.

Більш нова версія Homebrew все ще працює з цим, але продовжує повертати brew.shфайл кожен раз після запуску brew, навіть якщо я chmod 500його. Я можу написати сценарій, щоб змінити його, а потім запустити brewавтоматично, але я не впевнений, чи завжди це спрацює і не хочу ризикувати. Хтось знайшов інший метод для запуску Homebrew як root?


3
З цікавості, чому ви хочете запустити brewкорінь? Крім того, sudoнедостатньо для ваших цілей?
Аллан

2
@Allan sudoзапускає його як root, і це дає мені таку саму "надзвичайно небезпечну" помилку. Я хочу запустити як root, тому що в іншому випадку виникають проблеми з установкою певних пакетів, особливо якщо щось було встановлено не через Homebrew (наприклад, через pip). Я багато разів спускався по цьому маршруту. Плюс це не працює належним чином для декількох користувачів без дивних способів вирішення, якщо я не встановлю все як root.
судо

$ su -> $ заварити, що хочеться?
StrawHara

1
Побудувати програмний пакет так rootсамо ризиковано. Навіть будуючи пакет без менеджера пакунків, ви створили б його як непривілейований користувач (ви самі), а потім встановите пакет, як і rootу випадку sudo. Менеджери пакунків, такі як Fink та MacPorts, створюють разом із власними непривілейованими користувачами, а потім встановлюють як root. У домашнього мовлення такого механізму немає.
fd0

1
Хм, я не бачу проблеми на моєму кінці, в якій brew.shфайл повертається після зміни його, а потім виконання brewкоманди. Тож я можу бігати sudo brew whateverі brew whateverв тандемі просто чудово. Мій brew --versionвихід наступним чином: Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) FYI, я змінив мій brew.shфайл закоментуйте всі рядки в check-run-command-as-rootфункції і помістив один returnоператор у верхній частині функції замість.
ВВП2

Відповіді:


2

Після внесення змін до сценарію, спробуйте встановити непорушний прапор на brew.sh.

chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh

Я не тестував. Як правило, я не даю коріння програмам, розробники яких благають мене не робити.


Я також згоден з Джейсоном. Є причина, по якій вони кажуть, що не запускати пиво як корінь. Переважно тому, що вони - чорти, і я буду довіряти їм своїм програмним забезпеченням. Крім того, на відміну від макпортів, який я востаннє перевіряв, все ще вимагає цього, пивоваріння не потребують або хочуть дозволу на root, тому якщо ви щось накрутите, швидше за все, це не буде користати всю вашу систему. Все міститься у вашому обліковому записі користувача, і не потрібно возитися з sudo.
користувач9950573

1
Підтверджено працюю, дякую. Перший час для спроби оновлення потрібен певний час, але пізніше sudo brew installзапустіть як звичайне.
судо

1
Не так багато зіпсувати і зробити систему непридатною з пакетами, які я встановлював би на Mac. У будь-якому випадку я можу відновити свою систему протягом 30 хвилин. Прибирати мого користувача набагато складніше, і багато речей виправити не працюють, якщо не встановлено на всій системі, як я пояснюю в коментарях вище.
судо

1

Типові користувачі не повинні цього робити, але ти не типовий, чи не так?

Два питання:

  1. Ви не можете зупинити корінь. Якщо ви наполягаєте на використанні root, то root може перезаписати brew.shнезалежно від того.

  2. brewЗрештою, ви не можете зупинитися , ви говорите про біг brew.

Тож ми з цим будемо працювати. Давайте налаштуємо псевдонім для копіювання brew.shта запуску brew.

alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'

(Виправте шляхи відповідно до вашої системи).

Тепер все, що вам потрібно зробити:

sudo brew <arguments>

(Він стане root, скопіюйте його brew.sh, а потім запустіть brewяк root з аргументами, після brewцього перезапишіться, brew.shі ви будете готові зробити це заново)

Примітка. Ви також можете ввести sudoпсевдонім, але цей спосіб відчуває себе краще, оскільки вам буде запропоновано вводити пароль щоразу.

Зазвичай ви не можете використовувати setuid( chmod u+s) для кореневого використання на скриптах оболонки для безпеки. Perl має окрему програму, suidperlяка могла б бути встановлена ​​та могла б збільшити привілей користувача, але такі рішення трохи глибші для швидкої відповіді.

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