어떤 의미에서 이것은 Linux의 사용 사례와 밀접하게 관련된 역사적인 질문입니다. 주제와 관련이 없다면 닫겠습니다.
sudo
기술적으로 필요하지 않은 경우에도 패키지 관리자를 사용하여 설치할 때 항상 기본값을 사용하는 이유 는 무엇 입니까?
즉, vim
다중 사용자 서버에 설치하고 싶고 sudo 액세스를 얻는 것은 관료적인 고통입니다. 애플리케이션 이미지(또는 유사한 이미지) 이전에는 기본 위치에서 컴파일하고 설치하는 것이 유일한 옵션이었습니다.
이에 대한 역사적 이유가 있습니까? 아니면 배후에 있는 기술적인 이유를 놓치고 있는 걸까요?
답변1
sudo
이 답변은 패키지 관리가 필요한 이유에 대해 더 구체적이라는 말로 시작하겠습니다 .
시스템 수준 작업을 완료하려면 시스템 수준 권한을 요구하는 것이 합리적입니다. 역사적으로 Linux는 Unix와 같은 전통을 따랐으며 다중 사용자 설정을 염두에 두고 설계되었습니다. 사용자가 서로 간섭하는 것을 방지하고 시스템 제어를 더 잘 관리하기 위해 시스템 관리자는 루트 또는 시스템 수준 활동에 대한 사용자 액세스를 제어하고 제한할 수 있는 권한을 부여받습니다.
sudo
의 간략한 소개는 다음과 같습니다.sudo 공식 홈페이지(강조):
스도("에스대안너세레하다")를 사용하면 시스템 관리자가 특정 사용자(또는 사용자 그룹)에게 특정(또는 모든) 명령을 실행할 수 있는 권한을 부여할 수 있습니다.뿌리또한 모든 명령과 매개변수를 기록합니다. Sudo는 명령에 따라 실행되며 셸을 대체하지 않습니다. 기능은 다음과 같습니다:
사용자가 각 호스트에서 실행할 수 있는 명령을 제한하는 기능.
Sudo는 모든 명령에 대한 광범위한 로깅을 유지하여 누가 무엇을 했는지에 대한 명확한 감사 추적을 제공합니다.
syslogd
syslog 데몬과 함께 사용 하면sudo
모든 명령을 중앙 호스트(및 로컬 호스트)에 기록할 수 있습니다. CU에서는 모든 관리자가sudo
루트 셸을 사용하여 이 로깅을 활용합니다.Sudo는 타임스탬프 파일을 사용하여 "티켓팅" 시스템을 구현합니다. 사용자가 전화를 걸어
sudo
비밀번호를 입력하면 5분 티켓이 부여됩니다(이 제한 시간은 컴파일 타임에 구성 가능). 각 후속sudo
명령은 5분 동안 티켓을 업데이트합니다. 이렇게 하면 다른 사람이 키보드에 물리적으로 액세스할 수 있도록 루트 셸을 떠나는 문제가 방지됩니다. 사용자가 티켓 파일을 쉽게 삭제할 수 있는 방법도 있는데, 이는 파일을 저장하는 데 유용합니다.logout
.Sudo의 구성 파일(sudoers 파일)은 동일한 sudoers 파일을 여러 컴퓨터에서 사용할 수 있도록 설정됩니다. 이를 통해 호스트별로 사용자 권한을 정의하는 유연성을 유지하면서 중앙 집중식 관리가 가능합니다.
이제 sudo가 필요한 패키지 관리 문제를 해결해 보겠습니다. 그러나 항상 그런 것은 아닙니다.관련 AskUbuntu 게시물은 다음과 같습니다.이 주제를 다룹니다. Braiam 사용자가 지적했듯이 apt-get
패키지를 설치할 때 시스템 디렉터리를 설치하고 쓰기 위해 시스템 수준 액세스가 필요한 경우가 많기 때문에 sudo가 필요합니다.
그러나 그가 지적한 것처럼 이를 사용하면 apt-get
권한이 없는 사용자가 액세스할 수 있는 위치에 소프트웨어 패키지를 다운로드하고 설치할 수 있습니다. 예에는 패키지를 현재 디렉터리에 다운로드한 다음 패키지를 설치하는 데 사용하거나 사용하는 apt-get download
것이 포함됩니다.wget
dpkg
문제는 경영 관점에서 보면 골치 아픈 일이라는 점이다. 사용자는 각 소프트웨어 및 해당 종속성의 복사본으로 인해 불필요한 디스크 공간을 사용하게 되며, 일부 소프트웨어는 때때로 악의적이거나 취약성 또는 기타 문제를 일으키는 방식으로 동작할 수 있으며, 무료 설치를 허용한다고 해서 사람들이 소프트웨어를 신속하게 검토하고 소프트웨어를 업데이트할 수 있다는 의미는 아닙니다. 시스템에서. 패키지 관리자를 사용하면 중앙 집중식 제어와 패키지 소스를 감사하고 신뢰하는 기능이 가능합니다.
또한 Ulrich Schwarz 사용자가 지적했듯이 홈 디렉토리는 다음 플래그를 의미하는 파티션에 마운트될 수 있습니다 noexec
.
...컴파일러에 액세스할 수 있더라도 공유 시스템의 홈 디렉터리에서 바이너리를 실행(잠재적으로 CPU 집약적)하는 것은 어려울 수 있습니다.
나도 링크할게이 U&L 스택 교환 게시물"거의 모든 작업에 왜 sudo를 사용해야 하나요?"라고 묻습니다. 나는 이러한 답변이 이 기사의 요점을 뒷받침하기에 충분하다고 생각합니다. 또한 sudo
, 역사에 대해서도 자세히 알아볼 수 있습니다 .위키피디아.
결론적으로
sudo
1980년대 초반에 개발된 이 프로그램을 사용하면 사용자가 다른 사용자(기본값은 슈퍼유저(루트))의 보안 권한으로 프로그램을 실행할 수 있습니다. 또한 시스템 관리자를 위한 감사 추적 및 역할 기반 액세스 제어 시스템을 생성합니다. *nix 계열 시스템에 소프트웨어를 설치하는 것은 일반적으로 패키지 관리자를 통해 수행되지만 항상 필요한 것은 아닙니다. 패키지 관리는 관리자가 제어하고 감사할 수 있기를 원하는 시스템 수준 작업이므로 이러한 요구 사항을 충족하기 위해 제한되는 경우가 많습니다.