
보안상의 이유로 루트 계정의 소스 코드에서 설치하는 것이 어떻게 좋은 생각이 아닌지에 대한 질문이 생겼습니다.
이에 대한 나의 입장은 누군가가 루트 계정에 있는지 여부는 코드의 압축을 풀고 설치 단계를 수행하는 것부터 시작하여 실제로 중요하지 않다는 것입니다.
#./configure
#make
#make install
반대로:
$./configure
$make
$sudo make install
내 논리는 다음과 같습니다. 보안 위험을 초래할 경우 코드 자체 때문이지 설치 방법 때문이 아니기 때문에 실제로 중요하지 않습니다. end 명령은 루트를 사용하여 최종 바이너리와 그에 따라 설치되는 모든 파일을 설치하기 때문입니다. 그것으로.
루트가 아닌 사용자 세션에 있는지 여부에 관계없이 소스 코드에 맬웨어가 소스에 인코딩되어 있으면 무슨 일이 있어도 이제 시스템에 있습니다. 그러므로 어떤 일이 있어도 항상 위험이 따릅니다.
이는 자신의 코드와는 아무런 관련이 없으며, 앱이 포함되어 있지 않은 리포지토리와 더 관련이 있습니다. 따라서 Git 허브나 이를 작성한 사람의 웹사이트로 이동하여 소스 코드를 사용하여 설치하세요. . 나무를 설치하는 것만큼 간단한 일도 있습니다.
그러면 사용자는 루트 계정이나 "일반" 사용자 계정에 로그인한 경우보다 소스 코드를 어떻게 얻었는지에 대해 더 걱정하게 됩니다.
나는 루트를 사용하지 말아야 하는 이유에 대한 모든 주장을 이미 들었습니다. 터미널에 쓰는 내용에 주의를 기울이지 않으면 시스템에 돌이킬 수 없는 손상을 초래할 수 있기 때문입니다. sudo를 사용하면 그만큼 많은 피해를 입힐 수 있으므로 그 자체는 중복된 주장이자 신념 체계입니다. 그러므로 이 주장에 포함되는 요점의 일부가 되는 것도 아닙니다.
이것은 다소 예 또는 아니오 질문입니다. 예, 맞습니다. 루트 계정을 사용하여 소스 코드 앱을 컴파일하고 시스템에 설치하는지 여부는 장기적으로 중요하지 않습니다.
또는
아니요. 제가 틀렸습니다. 동일한 작업을 수행하려면 루트 권한을 사용해야 하기 때문에 중요합니다.
답변1
실행 중인 프로그램을 루트로 과도하게 사용하면 잠재적인 공격자에게 "필요한" 지점보다 더 많은 지점을 공격할 수 있게 됩니다. 시스템을 손상시키려는 시도는 루트 권한이 없으면 대부분 작동하지 않습니다(또는 더 어렵습니다). 모든 명령을 루트로 사용하는 접근 방식은 단순히 루트로 모든 작업(디렉토리 나열, 이미지 열기, 음악 재생 등)을 수행하는 것으로 이어질 수 있으며 이는 잠재적으로 문제가 될 수 있는 지점이 많다는 것을 의미합니다.
의도하지 않은 경우에도 실행하는 프로그램의 버그는 루트로 실행될 때 훨씬 더 많은 피해를 입힐 수 있습니다(그리고 SW에서 모든 버그를 제거하는 것은 사실상 불가능합니다). 또는 사용자가 잘못된 옵션을 입력한 경우(가능성이 훨씬 높음)
또한 귀하 ./configure
와 가 make
모든 사람을 위해 프로그램을 설치하고 싶지 않을 수도 있습니다(예: 귀하에게만 필요한 라이브러리일 수 있음).
답변2
설치 중인 프로그램이 다음과 같은 것으로 의심되는 경우악의 있는, 루트나 일반 사용자로 실행하지 마십시오. 여기에는 컴파일된 프로그램 실행과 제공된 빌드 스크립트 실행이 모두 포함됩니다. 공격자가 귀하처럼 코드를 실행하면 그들은 귀하의 계정을 소유하게 됩니다(그리고 늦어도 귀하가 해당 계정에서 루트를 얻는 순간 그들은 귀하의 컴퓨터를 소유하게 됩니다). 당신이 실행했기 때문에 공격자의 코드가 실행되었는지 make
아니면 를 실행했기 때문에 실행되었는지는 중요하지 않습니다 make install
.
일반 사용자로 빌드하고 루트로 설치하는 이유는 다음과 같은 위험을 줄이는 것입니다.우연한문제. 그럼에도 불구하고 필요한 경우(예: 드라이버 또는 시스템 서비스 설치)가 아닌 이상 일반적으로 자체 구축 프로그램을 루트로 설치해서는 안 됩니다. 자신의 사용자로 별도의 디렉토리에 설치한 후 다음과 같은 프로그램을 사용하십시오.집어 챙겨 넣다/usr/local/bin
표준 디렉토리( 등) 에서 프로그램을 사용할 수 있도록 합니다 . 이렇게 하면 설치 단계에서 기존 소프트웨어를 덮어쓰거나(이름 충돌이 있을 수 있음) 의도하지 않은 디렉터리에 쓸 위험이 줄어들고 모든 파일이 한 곳에 있으므로 프로그램을 쉽게 제거할 수 있습니다.
답변3
사용자 joe로서,
./configure
make
sudo make install
당신은 보통 그렇지 않습니다필요코드를 구성하거나 컴파일하려면 루트가 되어야 하며 설치만 해야 합니다. 그렇지 않으면필요루트가 되려면 루트가 되지 마십시오.
configure
및 둘 다 make
코드를 실행하고 있습니다. 다른 공격 벡터를 도입할 필요가 없을 때 이를 루트로 실행하면 (예를 들어 누군가 메이크파일을 손상시킬 수 있지만 소스 코드는 손상시킬 수 없습니다).
답변4
최종 프로그램(및 설치)은 아마도 건물보다 더 신중하게 수행될 것입니다.어느루트로 실행할 때 구축 과정에서 실수를 하거나 온전성 검사를 마치면 시스템에 문제가 발생할 수 있습니다. 위험을 최대한 줄이는 것이 좋습니다.