Як створити додаток без привілеїв sudo?


15

Що мені потрібно налаштувати на сервер Ubuntu 9.10, щоб користувач міг будувати програми, що вибираються там (тобто ./configure, make && make install), не потребуючи привілеїв sudo / admin.

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

Відповіді:


40

Якщо ваші користувачі використовують

./configure --prefix=/home/user/opt/

Або для cmake проектів

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

Це встановить програму в цей префікс (замість типового / usr / local /), і ваші користувачі повинні мати змогу запускати програму так:

/home/user/opt/bin/program

Якщо ви хочете, щоб вони могли запускати програми просто за допомогою імені (без повного шляху), вам потрібно додати /home/user/opt/binдо змінної середовища шляху, відредагуйте .profile користувачів та додайте наступний рядок:

export PATH=/home/user/opt/bin:$PATH

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


Інші користувачі зможуть використовувати програми, встановлені таким чином, якщо вони надають повний шлях і дозволи будуть встановлені належним чином; і виявляється, що umask за замовчуванням дозволяє це встановити на моєму робочому столі.
Алістер Бакстон

Кодова база, яку я компілював, мала, Makefileале не налаштовувала, я просто зайшов у неї і змінив prefix = /some/pathрядок у свій власний домашній каталог (без кінцевої косої риски), а потім пробіг make installбез судо - все працює зараз, тож спасибі.
Великий багатий

8

Користувачі можуть створювати програми без прав sudo. Єдиний раз, коли вам потрібні права sudo, це коли ви хочете щось встановити в системні каталоги.

./configureі makeпрацювати завжди без прав судо. make installзазвичай потрібні права sudo, тому що він встановить додаток до /usr/localабо /usr(іноді /opt).

Однак якщо ви змінюєте префікс шляху установки (тобто ./configure --prefix=~/usr/local) таким чином, що установка буде виконуватися всередині дерева домашнього каталогу користувача, права судо не потрібні make install.


Я все ще думаю, що ваша відповідь не повністю підкріплена. Чому ./configureі makeпрацювати завжди без sudo? Як я можу це виправдати тому, хто виконує виконання, sudo make installнаприклад?
Нікос Олександріс

0

Додавши до того, що сказав txwikinger , ви можете також перевірити fakeroot, що дає можливість для створення .deb пакетів, dpkgне потребуючи підвищених привілеїв. Звичайно, для встановлення цих програм, як правило, потрібен доступ до sudo.

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