sudo는 왜 존재하는가? 권한 있는 시스템 액세스를 사용자 권한으로 처리하지 않는 이유는 무엇입니까?

sudo는 왜 존재하는가? 권한 있는 시스템 액세스를 사용자 권한으로 처리하지 않는 이유는 무엇입니까?

참고: 저는 "sudo가 무엇을 하는지"를 묻는 것이 아닙니다. 저는 답을 알고 있습니다.

sudo 개념이 없는 IT 시스템이 많습니다. 대신 각 시스템 사용자는 "관리자"(로그인하자마자 모든 시스템 권한이 활성화된다는 의미)이거나 일부 "일반 사용자"입니다. "권한이 낮은 사용자" .

가상의 예를 들어보세요. Gmail에서 갑자기 일반적인 Gmail 비밀번호 외에 이메일을 보내거나 받을 때마다 "sudo" 비밀번호를 추가로 입력해야 한다고 발표한 경우, 저는 "이미 비밀번호를 제공했으니 무슨 목적으로 사용하셨는지"라고 물을 것입니다. 이 계정과 관련된 모든 권한에 액세스하시겠습니까?"

나는 sudo에게 같은 질문을 했다. 시스템에 액세스하기 위해 이미 사용자 이름과 비밀번호를 제공한 경우 추가 sudo 비밀번호를 입력하지 않고도 시스템이 내 사용자 계정을 관리자 권한이 있는 것으로 인식하지 못하는 이유는 무엇입니까?

답변1

여기에는 보안 세계에서 흔히 사용되는 많은 개념이 있습니다.

첫째, 우리는 항상 사용자가 "최소한의 필수 권한"으로 실행하기를 원합니다. 특히 기업 환경에서(이에 대해서는 나중에 설명하겠습니다) 아이디어는 사람들이 자신의 컴퓨터를 사용하는 데 필요한 권한만 더 이상 갖지 않기를 원한다는 것입니다. "정상 업무"(BAU)에서는 /etc의 파일을 변경할 필요가 없습니다. 이는 예외입니다.

이는 다음 섹션인 "권한 확대"로 이어집니다. BAU 외부의 무언가가 식별되면 사용자가 자신이 더 특권적인 일을 하고 있다는 것을 알기를 바랍니다. 따라서 sudo명령을 사용하십시오그리고현재 수행 중인 작업이 무엇인지 확인하기 위해 비밀번호를 다시 입력하세요. 비밀번호를 다시 입력하는 것은 사용자가 의식적으로 이 작업을 승인했다는 의미이므로 중요합니다. 반드시 비밀번호일 필요는 없습니다. 일부 버전에서는 세션을 기록하고 나중에 재생할 수 있도록 기록하는 2단계 인증이 필요할 수 있습니다.

이제 "엔터프라이즈"에 대해 이야기하고 Windows XP Home Edition에서 배운 교훈을 살펴보겠습니다. 이렇게 하면 설치(또는 OEM 최초 실행) 중에 생성한 사용자가 자동으로 관리자 권한을 갖게 됩니다. 항상 관리자 권한으로 실행합니다. 이는 실수로 인해 중요한 파일이 삭제될 수 있음을 의미합니다. 또는 공격자가 작업을 자동화할 수 있도록 하는 버그(예: 이메일 또는 이미지 렌더링의 버그)에는 관리자 권한이 있습니다. 이것이 이전 Windows 버전에서 바이러스와 맬웨어가 번성하는 이유 중 하나입니다.

따라서 "BAU"와 "특권" 활동의 분리는 기업을 넘어 가정 및 단일 사용자 환경으로 확장됩니다. Vista부터 시작하면 Windows에도 "권한 있는 작업을 수행하려고 합니다. 비밀번호를 다시 입력하십시오."라는 개념이 있다는 점은 주목할 가치가 있습니다.

요약: sudo보안 컨텍스트를 일상적으로 수행할 것으로 예상되는 활동("이메일 읽기", "문서 생성", "웹 탐색")에서 권한이 있는 것으로 간주되는 활동("새 사용자 생성")으로 전환하는 방법입니다. , '시스템 구성 변경', '다른 사용자가 소유한 파일 삭제'...).

대부분의 개인 사용자는 "비밀번호 재입력"만으로 충분합니다. 비즈니스의 경우많은더 복잡합니다.https://www.sweharris.org/post/2018-08-26-minimal-sudo/질문의 몇 가지 예를 들어보세요.

다음을 추가하도록 편집되었습니다.

또한 Unix에도 "관리자"라는 개념이 있다는 점을 지적하고 싶습니다. 이것이 "루트" 계정입니다. 기업 환경에서는 Tom, Dick 또는 Harry가 루트 계정을 사용하여 변경했는지 알 수 없기 때문에 사람들이 이것을 사용하는 것을 좋아하지 않습니다. sudo감사 가능한 상황에서 사람들이 권한을 승격할 수 있도록 하는 방법입니다.최소 권한방법. Tom은 모든 파일을 실행 sudo cat하고 읽을 수 있지만 시스템을 재부팅할 수는 없습니다. Dick과 Harry는 sudo reboot시스템을 재부팅할 수 있지만 보호된 파일을 읽을 수는 없습니다.

이러한 방식으로 sudo다음 조건을 충족하는 데 필요한 최소 권한이 달성됩니다.역할할당됩니다. 이는 중요한 보안 요구 사항입니다.

답변2

모든 것을 루트로 실행하는 것은 매우 나쁜 생각입니다. 루트로 실행하라고 하면 rm -rf /전체 운영 체제가 삭제되고 루트가 없으면 실패할 것이기 때문입니다. sudo를 사용하는 목적은 필요한 경우에만 권한을 상승시킬 수 있도록 하는 것입니다. 이는 악성 스크립트가 실행될 때 루트 권한을 얻거나 누군가가 프로그램에 액세스(루트 권한)할 수 있도록 허용하는 실행 중인 프로그램의 버그를 방지하기 위한 것입니다.

답변3

리눅스에는 "권한"로 알려지려면리눅스 기능. 이 기능의 기본 아이디어는 수퍼유저 권한을 더 작은 부분으로 나누는 것입니다. 이를 통해 프로세스는 필요한 최소한의 슈퍼유저 권한 하위 집합만 가질 수 있습니다.

Linux 4.3에는 실행 후에도 프로세스가 계속 작동할 수 있도록 하는 환경 기능이 포함되어 있습니다.프로그램 실행. 이는 루트가 아닌 사용자가 기본적으로 효과적인 기능을 가질 수 있도록 하는 메커니즘을 구축하는 데 사용될 수 있습니다.

약간 다르게 작동하는 별도의 상속 가능한 함수 세트도 있습니다. 상속 가능한 기능은 해당 기능이 파일의 기능에 포함된 경우에만 적용되므로 특정 실행 파일만 향상된 기능으로 실행될 수 있습니다.

다른 답변에서 지적했듯이 권한이 있는 사용자를 사용하여 시스템 관리 이외의 작업을 수행하는 것은 안전하지 않습니다. 권한이 없는 프로세스(및 사용자)가 시스템에 끼칠 수 있는 피해는 제한되어 있습니다. 시스템 보안을 유지하려면 필요하지 않을 때마다 권한을 제거하는 것을 기억하는 것보다 필요할 때만 사용자 작업을 통해 권한을 높이는 것이 더 쉽습니다.

또한 sudo사용자는 실제로 구성을 통해 어느 정도 관리 역할과 연결됩니다. 수퍼유저 권한이 필요한 관리 작업을 수행하기 위한 인터페이스를 제공합니다. sudo는 비밀번호를 묻는 메시지를 표시하지 않도록 구성할 수 있습니다. 가능한 보안 문제는 다음을 참조하세요.정보 보안 SE: 비밀번호 없는 sudo 모드에서 NOPASSWD는 얼마나 안전합니까?

더 읽어보시려면 추천합니다함수 매뉴얼 페이지좋은 개요를 얻으려면 [RFC] 기능: 환경 기능이는 환경적 능력에 대한 이론적 근거와 초기 상속 능력의 문제를 설명합니다.

관련 정보