Jak zbudować aplikację bez uprawnień sudo?


15

Co muszę skonfigurować na serwerze Ubuntu 9.10, aby użytkownik mógł budować aplikacje do wyboru (np ./configure, make && make install) bez potrzeby korzystania z uprawnień sudo / admin.

Po prostu czuję, że trochę ryzykowne jest zapewnienie użytkownikowi dostępu do części systemu, których mogą nie potrzebować do zbudowania aplikacji.

Odpowiedzi:


40

Jeśli twoi użytkownicy używają

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

Lub dla projektów cmake

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

Spowoduje to zainstalowanie programu z tym prefiksem (zamiast domyślnego / usr / local /), a użytkownicy powinni móc uruchomić program w następujący sposób:

/home/user/opt/bin/program

Jeśli chcesz, aby mogły uruchamiać programy po prostu używając nazwy (bez pełnej ścieżki), musisz dodać /home/user/opt/bindo zmiennej środowiskowej ścieżki, edytować .profile użytkowników i dodać następujący wiersz:

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

Pamiętaj, że programy zainstalowane w ten sposób będą prywatne dla konkretnego użytkownika, ale jest to sposób na zrobienie tego


Inni użytkownicy będą mogli korzystać z zainstalowanych programów w ten sposób, jeśli podadzą pełną ścieżkę, a uprawnienia zostaną odpowiednio ustawione; i wygląda na to, że domyślny umask pozwala na to na mojej instalacji na komputerze.
Alistair Buxton

Baza kodu, którą skompilowałem, nie miała Makefilekonfiguracji, po prostu weszłam do niej i zmieniłam prefix = /some/pathwiersz na własny katalog domowy (bez końcowego ukośnika), a następnie uruchomiłam make installbez sudo - wszystko działa teraz, więc dziękuję.
Big Rich

8

Użytkownicy mogą budować aplikacje bez uprawnień sudo. Jedyne, kiedy potrzebujesz uprawnień sudo, to kiedy chcesz zainstalować coś w katalogach systemowych.

./configurei makepracuj zawsze bez uprawnień sudo. make installzwykle potrzebuje praw sudo, ponieważ zainstaluje aplikację na ( /usr/locallub /usrczasami /opt).

Jeśli jednak zmienisz prefiks ścieżki instalacyjnej (tj. ./configure --prefix=~/usr/local) W taki sposób, że instalacja zostanie przeprowadzona w drzewie katalogu domowego użytkownika, nie będą potrzebne żadne prawa sudo make install.


Nadal uważam, że twoja odpowiedź nie jest całkowicie poparta. Dlaczego ./configurei makepraca zawsze bez sudo? Jak powinienem to uzasadnić komuś, kto sudo make installna przykład wykonuje egzekucję ?
Nikos Alexandris

0

Dodając do tego, co powiedział txwikinger , możesz również chcieć sprawdzić fakeroot, co daje możliwość budowania pakietów .deb dpkgbez konieczności zwiększania uprawnień. Oczywiście ich instalacja będzie wymagać dostępu sudo.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.