Как собрать приложение без прав sudo?

15

Что мне нужно настроить на сервере Ubuntu 9.10, чтобы пользователь мог создавать приложения по своему выбору (т.е. ./configure, make && make install) без необходимости использования привилегий sudo / admin.

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

RC1140
источник

Ответы:

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переменную среды path, отредактировать файл .profile пользователей и добавить следующую строку:

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

Обратите внимание, что программы, установленные таким образом, будут приватными для конкретного пользователя, но это способ сделать это

LassePoulsen
источник
Другие пользователи смогут использовать программы, установленные следующим образом, если они будут указывать полный путь и соответствующие разрешения будут установлены; и кажется, что umask по умолчанию позволяет это на моем настольном компьютере.
Алистер Бакстон
Кодовая база, которую я компилировал, имела, Makefileно не настраивал, я просто вошел в нее и изменил prefix = /some/pathстроку на свой домашний каталог (без косой черты), а затем запустился make installбез sudo - все работает сейчас, так что спасибо.
Big Rich
8

Пользователи могут создавать приложения без прав sudo. Единственный раз, когда вам нужны права sudo, это когда вы хотите установить что-то в системные каталоги.

./configureи makeработать всегда без прав sudo. make installобычно требуются права sudo, потому что он будет устанавливать приложение /usr/localили /usr(иногда /opt).

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

txwikinger
источник
Я все еще думаю, что ваш ответ не полностью подтвержден. Почему ./configureи makeработать всегда без sudo? Как я должен оправдать это тому, кто продолжает казнить, sudo make installнапример?
Никос Александрис
0

В дополнение к тому, что сказал txwikinger , вы можете также проверить fakeroot, что дает возможность создавать пакеты .deb dpkgбез повышенных привилегий. Конечно, для их установки обычно требуется доступ sudo.

mindcorrosive
источник