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

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

sudo 및 루트 권한

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

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

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

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

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

sudoers 목록

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

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

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

  Netflix 예고편 자동 재생을 비활성화하는 방법

다른 사용자로 명령 실행

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

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

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

sudo -u mary whoami

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

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

sudo -i -u mary
pwd
whoami
ls -hl
exit

귀하는 Mary로 로그인되어 있습니다. mary 사용자 계정에 대한 “.bashrc”, “.bash_aliases” 및 “.profile” 파일은 mary 사용자 계정 소유자가 직접 로그인한 것처럼 정확하게 처리됩니다.

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

sudoers 파일 편집

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

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

visudo 명령을 사용하여 편집 프로세스를 시작하더라도 visudo는 편집기가 아닙니다. 파일 편집을 수행하기 위해 기존 편집기 중 하나를 호출합니다. Manjaro 및 Ubuntu에서 visudo 명령이 실행되었습니다. 간단한 편집기 나노. Fedora에서 visudo는 더 많은 기능을 제공합니다.그러나 덜 직관적-정력.

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

sudo dnf 설치 나노

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

sudo EDITOR=nano visudo

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

sudo 그룹에 사용자 추가

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

sudo visudo

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

  최고의 무료 Dropbox 대안(3대 이상의 장치용)

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

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

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

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

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

sudo usermod -a -G sudo tom

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

groups

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

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

groups

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

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

sudo less /etc/shadow

Mary는 제한된 파일 “/etc/shadow”를 볼 수 없습니다. 그녀는 허락 없이 sudo를 사용하려고 해서 가벼운 비난을 받습니다. Tom이 운임을 알아봅시다.

sudo less /etc/shadow

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

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

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

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

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

groups

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

sudo visudo

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

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

harry    ALL=/usr/bin/apt-get

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

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

  iPhone, iPad 및 Mac에서 잊어버린 Apple Notes 암호를 재설정하는 방법

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

sudo visudo -c

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

sudo apt-get install finger

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

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

sudo shutdown now

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

sudoers 사용자 별칭 사용

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

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

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

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.


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

User_Alias INSTALLERS = harry, mary

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

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

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

harry    ALL=/usr/bin/apt-get

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

INSTALLERS    ALL=/usr/bin/apt-get

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

sudo apt-get install colordiff

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

세 가지 빠른 sudo 트릭

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

sudo !!

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

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

sudo -k

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

less /var/log/auth.log

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

큰 힘으로…

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