프로그램이 루트로 컴파일되지 않는 경우 어떻게 /usr/local에 설치할 수 있습니까?

프로그램이 루트로 컴파일되지 않는 경우 어떻게 /usr/local에 설치할 수 있습니까?

내 뇌 속 어딘가에서 make루트로 컴파일(즉, 실행)하지 말라고 경고하는 인터넷 음성 경고를 읽은 기억이 납니다. 아마 이렇겠지이 이야기cprogramming.com.

동시에 루트 사용자가 /usr/local해당 하위 디렉터리를 소유하는 것이 일반적으로 권장됩니다.

이로 인해 소스에서 소프트웨어를 설치하는 것이 번거로워집니다.

# as root
mkdir program
chown user.user program

# as user
wget/curl/mv program.tar.gz program/.
cd program/
./configure --prefix=/usr/local
make

# as root
make install

이것이 소스에서 시스템 전체에 소프트웨어를 설치하는 가장 간단하고 정확한 방법입니까? make루트가 되는 것은 정말 위험하지만, make install그렇지 않나요?

답변1

위험을 줄이는 것이 중요합니다. make파괴적인 작업이 수행되면 이를 실행하는 사용자가 수정(또는 삭제)할 수 있는 데이터만 손실됩니다. 따라서 make해당 사용자의 파일 범위를 제한하기 위해 일반 사용자로 실행하고, 정상적으로 설치 하려면 이를 수행해야 하기 make install때문에 일반 사용자로 실행합니다 .root/usr/local

제공한 예에서는 타르볼을 홈 디렉터리나 쓸 수 있는 다른 디렉터리에 다운로드하여 압축을 풀고 일반 사용자로 구성하고 빌드할 program필요 가 없습니다 .root

$ wget ...
$ tar xf program...tar.gz
$ cd program...
$ ./configure --prefix=/usr/local
$ make

일반적으로 /usr/local기본 접두사이므로 생략할 수 있습니다.

보안을 최대화하려면 소프트웨어 구축을 위한 전용 사용자를 사용하고(무엇이 잘못되더라도 파일을 잃지 않도록) 최소한 빌드 시스템을 읽으십시오. make -n도움이 될 수 있습니다: 실제로 아무것도 하지 않고도 무엇을 할 수 있는지 보여줄 것입니다. 쓰기 권한이 있는 특수 사용자나 그룹을 생성 /usr/local하고 이를 런타임에 사용할 수도 있습니다 make install.

답변2

그것은 신뢰와 편리함으로 귀결됩니다. 물론 make불안감을 느끼는 것도 가능하지만 그럴 수도 있습니다 make install. 단지 표면 공격 영역이 (희망적으로) 더 작아야 하고 , 한 눈에 이상한 것이 드러날 make install가능성이 더 높습니다 . Makefile그러나 $PATH소프트웨어를 설치하는 것은 누가 컴파일하든 위험하므로 전체 질문은 논쟁의 여지가 있습니다.

개인적으로 저는 종종 저 자신과 다른 관리자를 staff해당 그룹에 넣고 해당 그룹에 권한을 부여합니다 /usr/local. 그러면 루트가 전혀 필요 없이 게임을 플레이하고 tar바이너리 configure설치 를 도와줄 수 있습니다.makesudo

아니요, 완벽하지 않습니다. 예, 매우 편리합니다.

관련 정보