sudo 사용자와 루트 사용자의 차이점

sudo 사용자와 루트 사용자의 차이점

/etc/sudoers파일에는 어떤 사용자가 sudo명령을 사용하여 어떤 작업을 수행 할 수 있는지 나열되어 있습니다.

루트 사용자는 이 /etc/sudoers파일을 생성하고 수정합니다.

이 개념은 나로서는 이해하기 어렵다.

sudo 권한이 있는 모든 사용자가 sudoers이 그룹에 속하면 이 명령을 실행하여 모든 사용자가 루트가 될 수 있습니다 sudo su.

그렇다면 실제 루트 사용자는 누구이며, sudoers 그룹에 있는 사용자의 권한을 어떻게 제어합니까?

나에게 설명해주세요.

답변1

요약: "root"는 관리자 계정의 실제 이름입니다. "sudo"는 일반 사용자가 관리 작업을 수행할 수 있도록 하는 명령입니다. "Sudo"는 사용자가 아닙니다.


긴 답변:

"루트"(일명 "수퍼유저")는 시스템 관리자 계정의 이름입니다. 이름의 유래는 다소 오래되었지만 그것은 중요하지 않습니다.

루트 사용자는 사용자 ID가 0이고 명목상 무제한 권한을 갖습니다. 루트는 모든 파일에 액세스하고, 모든 프로그램을 실행하고, 시스템 호출을 수행하고, 모든 설정을 수정할 수 있습니다. (그러나 아래 1을 참조하십시오).

"sudo" 명령이 개발되기 전에는 관리 작업을 수행하려면 로그인 프롬프트²를 받거나 명령 su("su"는 대체 사용자의 약어입니다.)을 사용하여 루트로 로그인해야 했습니다.

이는 약간 번거롭고 사용자에게 부분적인 관리 권한을 부여하는 것도 허용하지 않습니다. 그래서 "sudo" 명령("대체 사용자 do"의 줄임말)이 발명되었습니다.

사용자 ID가 sudoers 파일에 있는 한 "sudo" 명령을 사용하면 수퍼유저 권한으로 명령을 실행하여 필요한 권한을 부여할 수 있습니다.

따라서 예를 들어 sudo vi /etc/hosts루트로 실행 중인 것처럼 호스트 파일을 편집할 수 있습니다. 루트 비밀번호도 필요하지 않고 본인의 로그인 비밀번호만 있으면 됩니다.

물론, 이렇게 하면 sudo su간단히 루트가 될 수 있습니다. 결과는 루트 비밀번호를 알 필요가 없다는 점을 제외하면 루트로 로그인하거나 명령을 실행하는 것과 동일 su하지만 루트 비밀번호는 sudoers 파일에 있어야 합니다.

sudoers 파일은 sudo 명령을 사용할 수 있는 사람과 해당 명령으로 무엇을 할 수 있는지를 결정합니다.

sudoers 파일은 여러 관리자⁴를 제공합니다. 사실상 관리자는 루트와 sudoers 파일에 나열된 모든 사람입니다. sudoers 파일이 없으면 유일한 관리자는 루트입니다.

실제로 다른 사람이 귀하의 컴퓨터를 관리하는 조직에서는 귀하가 sudoers 파일에 있는 한 자신의 컴퓨터의 루트 비밀번호를 모르는 것이 매우 일반적입니다. 이는 중요하지 않습니다.

제가 일했던 한 회사는 거대한 서버 팜을 갖고 있었고 소수의 사람들만이 루트 암호를 알고 있었습니다. 대신, 누가 어떤 서버에서 작업할 수 있는지 기록하는 데이터베이스가 있습니다. 자동화된 프로세스는 귀하가 액세스할 수 있는 서버의 sudoers 파일에 귀하를 추가하고 승인이 만료되면 귀하를 제거합니다.


1 한 가지 더: 최신 Unix 버전에서는 이제 루트 사용자가 할 수 있는 작업도 제한할 수 있습니다.

아래에SELinux(Security Enhanced Linux)에는 실제로 어떤 프로그램이 무엇을 할 수 있는지 결정하는 액세스 제어 목록이 있으며 루트조차도 이러한 제한을 무시할 수 없습니다.

사과 아래시스템 무결성 보호(SIP)(일명 "루트리스") 시스템에서는 특정 파일과 디렉터리가 잠겨 있으므로 해당 화이트리스트에 있는 애플리케이션만 액세스할 수 있습니다.

이러한 시스템은 악의적인 사용자가 루트 액세스 권한을 얻는 상황으로부터 시스템을 보호하기 위해 존재합니다. (또는 어떤 경우에는 사용자가 내장된 장치를 탈옥하는 것을 방지하기 위해.) 명백한 이유로 이러한 제한은 루트 액세스로도 우회하기 어렵습니다.

² "login:" 프롬프트는 Unix 역사의 또 다른 고대 부분으로, 윈도우 시스템 대신 직렬 회선에서 ASCII 터미널을 사용하던 시절로 거슬러 올라갑니다. login터미널 창에 간단히 입력하거나 다른 곳에서 컴퓨터에 대한 ssh(또는 telnet 또는 rsh) 연결을 열면 "Login:" 프롬프트가 나타날 수 있습니다 . 필요한 경우 여기에서 다른 사용자로 로그인할 수 있습니다. (컴퓨터에 직렬 포트가 있는 경우에도 로그인을 허용하도록 구성할 수 있습니다.)

³ 개별 프로그램에 루트 액세스 권한을 부여하는 것도 가능합니다. 이러한 프로그램은 일반 사용자가 실행하는 경우에도 루트 액세스 권한이 있는 사용자가 수행할 수 있는 모든 작업을 수행할 수 있습니다. 이는 일반적으로 특정 작업으로 제한됩니다. 예를 들어,예약 된 일들프로그램에는 루트 권한이 있으므로 cron 테이블을 편집할 수 있습니다. 분명히 "sudo"에는 루트 권한이 있으므로 수행할 수 있는 작업을 수행할 수 있습니다.

⁴ 이전에 간과했던 점을 언급하겠습니다. 나는 "admin"과 "root"를 같은 의미로 사용했지만 다른 유형의 관리자도 있습니다. 이러한 계정은 종종 "역할 계정"이라고 불리며, 이는 이러한 계정이 실제 사람에게 속하지 않고 시스템에서 특정 역할을 수행하기 위해 존재한다는 의미입니다. /etc/passwd시스템의 파일을 살펴보면 그러한 계정이 수십 개 발견될 것입니다.

예를 들어, mysql이 시스템에 설치되어 있는 경우 "mysql" 사용자가 있게 되며 모든 데이터베이스 파일, 구성 파일 등은 해당 사용자가 소유하게 됩니다. 이 사용자(물론 루트 포함)만이 파일에 액세스하고 mysql 서버를 실행하는 데 필요한 권한을 갖습니다. 어떤 의미에서 이 사용자는 관리자 계정이지만 mysql에만 해당됩니다.

데이터베이스 관리 작업을 수행해야 하는 경우 이 su mysql명령을 사용하여 "mysql"로 만들거나 sudosudoers 파일을 사용하여 해당 특정 명령에 대한 mysql 권한을 부여할 수 있습니다.

관련 정보