Linux에서 sudo 액세스를 제어하는 ​​방법

게시 됨: 2022-01-29
Ubuntu 스타일 데스크탑의 Linux 터미널 창.
Fatmawati Achmad Zaenuri/Shutterstock

sudo 명령을 사용하면 root 와 같은 다른 사람인 것처럼 Linux에서 명령을 실행할 수 있습니다. sudo 를 사용하면 root's 기능에 액세스할 수 있는 사용자를 세부적으로 제어할 수도 있습니다. 사용자에게 전체 액세스 권한을 부여하거나 작은 명령 하위 집합을 사용하도록 합니다. 우리는 당신에게 방법을 보여줍니다.

sudo 및 루트 권한

우리는 Linux의 모든 것이 파일이라는 말을 많이 들었습니다(과도하게 단순화). 실제로 프로세스, 파일, 디렉토리, 소켓 및 파이프에서 운영 체제의 거의 모든 것이 파일 설명자를 통해 커널과 통신합니다. 따라서 모든 것이 파일은 아니지만 대부분의 운영 체제 개체는 파일인 것처럼 처리됩니다 . 가능한 경우 Linux 및 Unix 계열 운영 체제의 설계는 이 원칙을 따릅니다.

"모든 것이 파일이다"라는 개념은 Linux에서 광범위합니다. 그러면 Linux의 파일 권한이 사용자 권한 및 권한의 핵심 중 하나가 된 방법을 쉽게 알 수 있습니다. 파일 또는 디렉토리(특수한 종류의 파일)를 소유하고 있다면 편집, 이름 변경, 이동 및 삭제를 포함하여 원하는 작업을 수행할 수 있습니다. 다른 사용자나 사용자 그룹이 파일을 읽거나 수정하거나 실행할 수 있도록 파일에 대한 권한을 설정할 수도 있습니다. 모든 사람은 이러한 권한의 적용을 받습니다.

root 로 알려진 수퍼유저를 제외한 모든 사람. root 계정은 특별한 권한이 있는 계정입니다. 운영 체제의 개체에 대한 사용 권한에 구속되지 않습니다. 루트 사용자는 무엇이든 할 수 있으며 거의 ​​언제든지 할 수 있습니다.

광고

물론 root's 비밀번호에 접근할 수 있는 사람이라면 누구나 똑같이 할 수 있습니다. 그들은 악의적으로 또는 우발적으로 혼란을 일으킬 수 있습니다. 사실, root 사용자도 실수를 하여 큰 피해를 입힐 수 있습니다. 누구도 오류가 없습니다. 위험한 물건입니다.

이것이 이제 root전혀 로그인하지 않는 것이 모범 사례로 간주되는 이유입니다. 일반 사용자 계정으로 로그인하고 sudo 를 사용하여 필요한 짧은 기간 동안 권한을 높입니다. 종종 그것은 단지 하나의 명령을 내리기 위한 것입니다.

관련: Linux에서 "모든 것이 파일입니다"는 무엇을 의미합니까?

sudoers 목록

sudo 는 이 기사를 연구하는 데 사용된 Ubuntu 18.04.3, Manjaro 18.1.0 및 Fedora 31 컴퓨터에 이미 설치되어 있습니다. 이것은 놀라운 일이 아닙니다. sudo 는 1980년대 초부터 사용되었으며 거의 ​​모든 배포판에서 수퍼유저 작업의 표준 수단이 되었습니다.

최신 배포판을 설치할 때 설치 중에 생성한 사용자가 sudoers 라는 사용자 목록에 추가됩니다. sudo 명령을 사용할 수 있는 사용자입니다. sudo 권한이 있으므로 이를 사용하여 sudoer 목록에 다른 사용자를 추가할 수 있습니다.

물론, 전체 수퍼유저 상태를 기꺼이 또는 부분적 또는 특정 요구 사항만 있는 사람에게 나눠주는 것은 무모합니다. sudoers 목록을 사용하면 다양한 사용자가 sudo 를 사용할 수 있는 명령을 지정할 수 있습니다. 그렇게 하면 그들에게 왕국의 열쇠를 주지는 않지만 그들은 여전히 ​​그들이 해야 할 일을 성취할 수 있습니다.

다른 사용자로 명령 실행

원래 슈퍼유저로 할 수 있는 일을 "수퍼유저 할 것"이라고 불렀습니다. 이제 범위가 확장되었으며 sudo 를 사용하여 마치 사용자인 것처럼 명령을 실행할 수 있습니다. 새로운 기능을 반영하기 위해 이름이 변경되었습니다. 이제 "대체 사용자 수행"이라고 합니다.

sudo 를 사용하여 다른 사용자로 명령을 실행하려면 -u (사용자) 옵션을 사용해야 합니다. 여기서는 mary 사용자로 whoami 명령을 실행하겠습니다. -u 옵션 없이 sudo 명령을 사용하는 경우 명령을 root 로 실행합니다.

광고

물론 sudo 를 사용하고 있기 때문에 비밀번호를 입력하라는 메시지가 표시됩니다.

 sudo -u 메리 워미 

whoami 의 응답은 명령을 실행하는 사용자 계정이 mary 임을 알려줍니다.

sudo 명령을 사용하여 암호를 모르는 다른 사용자로 로그인할 수 있습니다. 자신의 암호를 입력하라는 메시지가 표시됩니다. -i (로그인) 옵션을 사용해야 합니다.

 sudo -i -u 메리
 암호
 워미
 ls -hl
 출구 

mary 로 로그인하셨습니다. mary 사용자 계정에 대한 ".bashrc", ".bash_aliases" 및 ".profile" 파일은 mary 사용자 계정 소유자가 직접 로그인한 것처럼 정확하게 처리됩니다.

  • 사용자 계정 mary 에 대한 세션임을 반영하도록 명령 프롬프트가 변경됩니다.
  • pwd 명령은 현재 mary's 홈 디렉토리에 있다고 표시합니다.
  • whoami 는 사용자 계정 mary 를 사용하고 있다고 알려줍니다.
  • 디렉토리의 파일은 mary 사용자 계정에 속합니다.
  • exit 명령은 일반 사용자 계정 세션으로 돌아갑니다.

sudoers 파일 편집

sudo 를 사용할 수 있는 사람 목록에 사용자를 추가하려면 sudoers 파일을 편집해야 합니다. visudo 명령을 사용해서만 그렇게 하는 것이 매우 중요합니다. visudo 명령은 여러 사람이 한 번에 sudoers 파일을 편집하려고 하는 것을 방지합니다. 또한 파일 내용을 저장할 때 구문 검사 및 구문 분석을 수행합니다.

광고

편집 내용이 테스트를 통과하지 못하면 파일이 맹목적으로 저장되지 않습니다. 당신은 옵션을 얻을. 변경 사항을 취소하고 중단하거나 뒤로 돌아가서 변경 사항을 다시 편집하거나 잘못된 편집 사항을 강제로 저장할 수 있습니다. 마지막 옵션은 심각하게 나쁜 생각입니다. 그렇게 하려고 하지 마십시오. 모든 사람 이 실수로 sudo 를 사용할 수 없는 상황에 처할 수 있습니다.

visudo 명령을 사용하여 편집 프로세스를 시작하더라도 visudo 는 편집기가 아닙니다. 파일 편집을 수행하기 위해 기존 편집기 중 하나를 호출합니다. Manjaro 및 Ubuntu에서 visudo 명령은 간단한 편집기 nano 를 시작했습니다. Fedora에서 visudo 는 보다 유능하지만 직관적이지 않은 vim 을 출시했습니다.

관련: Vi 또는 Vim 편집기를 종료하는 방법

Fedora에서 nano 를 사용하고 싶다면 쉽게 할 수 있습니다. 먼저 nano 를 설치합니다.

sudo dnf 설치 나노

그리고 다음 명령으로 visudo 를 호출해야 했습니다.

 sudo EDITOR=나노 비수도 

별칭에 적합한 후보인 것 같습니다. nano 편집기는 sudoers 파일이 로드된 상태로 열립니다.

sudoers 파일이 로드된 nano 편집기

sudo 그룹에 사용자 추가

visudo 를 사용하여 sudoers 파일을 엽니다. 이 명령이나 위에서 설명한 명령을 사용하여 원하는 편집기를 지정합니다.

 sudo visudo 

%sudo 항목의 정의가 표시될 때까지 sudoers 파일을 스크롤합니다.

%sudo 행이 강조 표시된 sudoers 파일

광고

백분율 기호는 이것이 사용자 정의가 아니라 그룹 정의임을 나타냅니다. 일부 배포판에서는 %sudo 줄의 시작 부분에 해시 # 이 있습니다. 이것은 라인을 주석으로 만듭니다. 이 경우 해시를 제거하고 파일을 저장하십시오.

%sudo 행은 다음과 같이 나뉩니다.

  • %sudo : 그룹의 이름입니다.
  • ALL= : 이 규칙은 이 네트워크의 모든 호스트에 적용됩니다.
  • (ALL:ALL) : 이 그룹의 구성원은 모든 사용자 및 모든 그룹으로 명령을 실행할 수 있습니다.
  • All : 이 그룹의 구성원은 모든 명령을 실행할 수 있습니다.

다시 말해서 이 그룹의 구성원은 이 컴퓨터나 이 네트워크의 다른 호스트에서 사용자나 그룹으로 모든 명령을 실행할 수 있습니다. 따라서 누군가에게 루트 권한과 sudo 사용 능력을 부여하는 간단한 방법은 sudo 그룹에 추가하는 것입니다.

각각 tommary 라는 사용자 계정을 가진 두 명의 사용자 Tom과 Mary가 있습니다. usermod 명령을 사용하여 사용자 계정 tomsudo 그룹에 추가합니다. -G (그룹) 옵션은 tom 계정을 추가할 그룹을 지정합니다. -a (추가) 옵션은 사용자 계정 tom 이 이미 있는 그룹 목록에 이 그룹을 추가합니다 . 이 옵션이 없으면 사용자 계정 tom 이 새 그룹에 배치되지만 다른 그룹에서는 제거됩니다.

 sudo usermod -a -G sudo 톰 

Mary가 속한 그룹을 확인해 보겠습니다.

 여러 떼 

사용자 계정 marymary 그룹에만 있습니다.

Tom과 함께 확인해 보겠습니다.

 여러 떼 

tom 사용자 계정(따라서 Tom)은 tomsudo 그룹에 있습니다.

Mary가 sudo 권한이 필요한 작업을 수행하도록 합시다.

 sudo 덜 /etc/shadow 

광고

Mary는 제한된 파일 "/etc/shadow"를 볼 수 없습니다. 그녀는 허락 없이 sudo 를 사용하려고 해서 가벼운 비난을 받습니다. Tom의 운임은 다음과 같습니다.

 sudo 덜 /etc/shadow 

Tom은 암호를 입력하자마자 /etc/shadow 파일을 보여줍니다.

sudo 그룹에 추가하는 것만으로 sudo 를 사용할 수 있는 엘리트 등급으로 올라갔습니다. 완전히 무제한입니다.

사용자에게 제한된 sudo 권한 부여

Tom은 완전한 sudo 권한을 받았습니다. 그는 root 또는 sudo 그룹의 다른 사람이 할 수 있는 모든 것을 할 수 있습니다. 그것은 당신이 넘겨주는 것보다 더 많은 힘을 그에게 줄 수 있습니다. 때때로 사용자가 root 권한이 필요한 기능을 수행해야 한다는 요구 사항이 있지만 전체 sudo 액세스 권한이 있어야 하는 정당한 경우는 없습니다. sudoers 파일에 추가하고 사용할 수 있는 명령을 나열하여 균형을 이룰 수 있습니다.

사용자 계정 harry 의 소유자인 Harry 를 만나 보겠습니다. 그는 sudo 그룹에 없으며 sudo 권한이 없습니다.

 여러 떼 

Harry가 소프트웨어를 설치할 수 있는 것은 유용하지만 우리는 그가 완전한 sudo 권한을 갖는 것을 원하지 않습니다. 알겠습니다. 문제 없습니다. visudo 를 실행합시다.

 sudo visudo 

광고

그룹 정의를 지날 때까지 파일을 아래로 스크롤합니다. 해리를 위한 라인을 추가할 것입니다. 이것은 그룹 정의가 아니라 사용자 정의이므로 백분율 기호로 줄을 시작할 필요가 없습니다.

해리에 대한 sudoer 파일 항목

사용자 계정 harry의 항목은 다음과 같습니다.

 해리 ALL=/usr/bin/apt-get

"harry"와 "ALL=" 사이에 탭이 있습니다.

이것은 사용자 계정 harry 가 이 네트워크에 연결된 모든 호스트에서 나열된 명령을 사용할 수 있음을 의미합니다. "/usr/bin/apt-get"이라는 하나의 명령이 나열됩니다. 명령 목록에 명령을 쉼표로 구분하여 추가하여 Harry에게 둘 이상의 명령에 대한 액세스 권한을 부여할 수 있습니다.

sudoers 파일에 행을 추가하고 파일을 저장합니다. 행이 구문적으로 올바른지 다시 확인하려면 -c (확인만) 옵션을 사용하여 visudo 에 파일을 스캔하고 구문을 확인하도록 요청할 수 있습니다.

 sudo visudo -c 

검사가 수행되고 visudo 는 모든 것이 정상이라고 보고합니다. Harry는 이제 apt-get 을 사용하여 소프트웨어를 설치할 수 있어야 하지만 sudo 가 필요한 다른 명령을 사용하려고 하면 거부해야 합니다.

 sudo apt-get 설치 손가락 

적절한 sudo 권한이 Harry에게 부여되었으며 그는 소프트웨어를 설치할 수 있습니다.

광고

Harry가 sudo 가 필요한 다른 명령을 사용하려고 하면 어떻게 됩니까?

 지금 sudo 종료 

해리는 명령을 실행할 수 없습니다. 우리는 그에게 특정하고 제한된 액세스 권한을 성공적으로 부여했습니다. 그는 지명된 명령만 사용할 수 있습니다.

sudoers 사용자 별칭 사용

Mary에게 동일한 권한을 부여하려는 경우 Harry와 정확히 동일한 방식으로 사용자 계정 mary 에 대한 sudoers 파일에 행을 추가할 수 있습니다. 같은 것을 달성하는 또 다른 깔끔한 방법은 User_Alias 를 사용하는 것입니다.

sudoers 파일에서 User_Alias 는 사용자 계정 이름 목록을 포함합니다. 그런 다음 정의에서 User_Alias 의 이름을 사용하여 해당 사용자 계정을 모두 나타낼 수 있습니다. 해당 사용자 계정에 대한 권한을 변경하려면 한 줄만 편집하면 됩니다.

User_Alias 를 만들고 sudoers 파일에서 사용하겠습니다.

 sudo visudo 

 User_Alias ​​스펙 라인이 나올 때까지 파일에서 아래로 스크롤하십시오.

다음을 입력하여 User_Alias 를 추가합니다.

 User_Alias ​​INSTALLERS = 해리, 메리

각 요소는 탭이 아닌 공백으로 구분됩니다. 논리는 다음과 같이 나뉩니다.

  • User_Alias : 이것은 visudo 에게 이것이 User_Alias 가 될 것임을 알려줍니다.
  • INSTALLERS : 이 별칭에 대한 임의의 이름입니다.
  • = harry, mary : 이 별칭에 포함할 사용자 목록입니다.
광고

이제 사용자 계정 harry 에 대해 이전에 추가한 줄을 편집합니다.

 해리 ALL=/usr/bin/apt-get

다음과 같이 변경하십시오.

 모든 설치자=/usr/bin/apt-get

이것은 "INSTALLERS" User_Alias 정의에 포함된 모든 사용자 계정이 apt-get 명령을 실행할 수 있음을 의미합니다. 이제 소프트웨어를 설치할 수 있는 Mary와 함께 이를 테스트할 수 있습니다.

 sudo apt-get colordiff 설치 

Mary는 "INSTALLERS" User_Alias 에 있고 해당 User_Alias 가 해당 권한을 부여받았기 때문에 소프트웨어를 설치할 수 있습니다.

세 가지 빠른 sudo 트릭

명령에 sudo 를 추가하는 것을 잊은 경우 다음을 입력하십시오.

 스도!!

그리고 마지막 명령은 줄의 시작 부분에 sudo 를 추가하여 반복됩니다.

sudo 를 사용하고 비밀번호로 인증하면 15분 동안 추가 sudo 명령에 비밀번호를 사용할 필요가 없습니다. 인증을 즉시 잊어버리려면 다음을 사용하십시오.

 sudo -k
광고

실패한 sudo 명령 시도를 어디에서 볼 수 있는지 궁금하신가요? "/var/log/auth.log" 파일로 이동합니다. 다음을 사용하여 볼 수 있습니다.

 적은 /var/log/auth.log 

TTY pts/1에 로그인한 사용자 계정 mary에 대한 항목은 그녀가 사용자 "루트"로 shutdown 명령을 실행하려고 할 때 볼 수 있습니다.

큰 힘으로…

… 그 중 일부를 다른 사람에게 위임할 수 있는 능력이 생깁니다. 이제 다른 사용자에게 선택적으로 권한을 부여하는 방법을 알게 되었습니다.