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

0
817
우분투 스타일 데스크탑의 Linux 터미널 창.
Fatmawati Achmad Zaenuri / 셔터 스톡

그만큼 sudo command를 사용하면 Linux에서 다른 사람처럼 명령을 실행할 수 있습니다. root. sudo 또한 누가 액세스 할 수 있는지 제어 할 수 있습니다 root's 세분성과 기능. 사용자에게 전체 액세스 권한을 부여하거나 작은 명령 하위 집합을 사용하도록합니다. 우리는 당신에게 방법을 보여줍니다.

sudo 및 루트 권한

우리는 모두 리눅스의 모든 것이 파일이라는 것을 들었습니다. 실제로 운영 체제의 프로세스, 파일, 디렉토리, 소켓 및 파이프에서 거의 모든 것은 파일 디스크립터를 통해 커널과 통신합니다. 그래도 모든 것이 그렇지 않다 파일, 대부분의 운영 체제 객체가 처리됩니다 마치 그들은했다. 가능하면 Linux 및 Unix와 유사한 운영 체제 디자인이이 원칙을 따릅니다.

리눅스에서는“모든 것이 파일이다”라는 개념이 널리 퍼져 있습니다. 그렇다면 Linux에서 파일 권한이 사용자 권한 및 권한의 주된 방법 중 하나가 된 방법을 쉽게 알 수 있습니다. 파일이나 디렉토리 (특별한 종류의 파일)를 소유하고 있다면 파일 편집, 이름 바꾸기, 이동 및 삭제를 포함하여 원하는대로 작업 할 수 있습니다. 다른 사용자 나 사용자 그룹이 파일을 읽거나 수정 또는 실행할 수 있도록 파일에 대한 권한을 설정할 수도 있습니다. 모든 사람은 이러한 권한에 의해 관리됩니다.

수퍼 유저를 제외하고는 root. 그만큼 root account는 특별히 권한이있는 계정입니다. 운영 체제의 모든 오브젝트에 대한 권한에 의해 제한되지 않습니다. 루트 사용자는 언제든지 무엇이든 할 수 있습니다.

물론 누구나 root's 암호도 똑같이 할 수 있습니다. 악의적이거나 우연히 혼란에 빠질 수 있습니다. 실제로, root 사용자도 실수를해서 혼란을 일으킬 수 있습니다. 아무도 완벽한 사람이 아닙니다. 위험한 것입니다.

이것이 현재 모범 사례로 간주되는 이유입니다. 아니 로 로그인 root 조금도. 일반 사용자 계정으로 로그인하여 사용하십시오 sudo 짧은 기간 동안 당신의 특권을 높이기 위해 당신이 필요로합니다. 종종 그것은 단지 하나의 명령을 발행하는 것입니다.

관련 : Linux에서 “모든 것이 파일”이란 무엇입니까?

sudoers 목록

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

최신 배포판을 설치하면 설치하는 동안 생성 한 사용자가 사용자 목록에 추가됩니다. Sudoers. 이들은 사용할 수있는 사용자입니다 sudo 명령. 당신이 있기 때문에 sudo 권한을 사용하여 다른 사용자를 sudoers 목록에 추가 할 수 있습니다.

물론, 전체 수퍼 유저 상태를 윌리 닐리 또는 일부 또는 특정 요구가있는 사람에게 전달하는 것은 무모합니다. sudoers 목록을 사용하면 다양한 사용자가 사용할 수있는 명령을 지정할 수 있습니다 sudo 와. 그렇게하면 왕국에 열쇠를주지 않아도되지만 그들은 여전히해야 할 일을 성취 할 수 있습니다.

다른 사용자로 명령 실행

원래 수퍼 유저로 작업을 수행 할 수 있기 때문에 “슈퍼 유저 수행”이라고했습니다. 범위가 넓어졌습니다. sudo 마치 사용자 인 것처럼 명령을 실행합니다. 새로운 기능을 반영하도록 이름이 바뀌 었습니다. 이제는 “대체 사용자 수행”이라고합니다.

쓰다 sudo 다른 사용자로 명령을 실행하려면 -u (사용자) 옵션. 여기에서는 whoami 명령을 사용자로 실행합니다 mary. 당신이 사용하는 경우 sudo 없이 명령 -u 옵션으로 다음과 같이 명령을 실행합니다 root.

물론 사용하고 있기 때문에 sudo 비밀번호를 묻는 메시지가 나타납니다.

sudo -u mary whoami

터미널 창에서 sudo -u whoami

의 응답 whoami 명령을 실행하는 사용자 계정이 mary.

당신은 사용할 수 있습니다 sudo 비밀번호를 모르고 다른 사용자로 로그인하는 명령입니다. 자신의 암호를 입력하라는 메시지가 표시됩니다. 우리는 -i (로그인) 옵션.

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

터미널 창에서 sudo -i -u mary

당신은 로그인 mary. mary 사용자 계정의“.bashrc”,“.bash_aliases”및“.profile”파일은 mary 사용자 계정의 소유자가 자신을 로그인 한 것처럼 정확하게 처리됩니다.

  • 이것이 사용자 계정에 대한 세션임을 반영하도록 명령 프롬프트가 변경됩니다. mary.
  • 그만큼 pwd명령은 당신이 지금있는 것을 재현 mary's 홈 디렉토리.
  • whoami 사용자 계정을 사용 중임을 알려줍니다 mary.
  • 디렉토리의 파일은 mary 사용자 계정.
  • 그만큼 exit 명령은 일반 사용자 계정 세션으로 돌아갑니다.

sudoers 파일 편집

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

수정 사항이 테스트를 통과하지 못하면 파일이 맹목적으로 저장되지 않습니다. 옵션이 제공됩니다. 변경 사항을 취소하고 취소하고, 다시 돌아가서 변경 사항을 다시 편집하거나, 부정확 한 편집 내용을 강제로 저장하십시오. 마지막 옵션은 심각하게 나쁜 생각입니다. 그렇게 유혹하지 마십시오. 당신은 상황에 자신을 찾을 수 있습니다 여러분 실수로 사용 중지 sudo.

를 사용하여 편집 프로세스를 시작하더라도 visudo 명령, visudo 편집자가 아닙니다. 파일 편집을 수행하기 위해 기존 편집기 중 하나를 호출합니다. 만자로와 우분투에서 visudo 명령은 간단한 편집기를 시작 nano. 페도라에서 visudo 더 유능하지만 덜 직관적 인 시작vim.

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

사용하려는 경우 nano Fedora에서는 쉽게 할 수 있습니다. 먼저 설치 nano:

sudo dnf 설치 나노

터미널 창에 sudo dnf install nano

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

sudo EDITOR=nano visudo

터미널 창에서 sudo EDITOR = nano visudo

이것은 별칭에 대한 좋은 후보처럼 보입니다. 그만큼 nano sudoers 파일이로드 된 상태로 편집기가 열립니다.

sudoers 파일이로드 된 나노 편집기

sudo 그룹에 사용자 추가

사용하다 visudo sudoers 파일을 열려면 이 명령 또는 위에서 설명한 명령을 사용하여 선택한 편집기를 지정하십시오.

sudo visudo

터미널 창에서 sudo visudo

의 정의가 보일 때까지 sudoers 파일을 스크롤하십시오. %sudo 기입.

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

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

그만큼 %sudo 줄은 다음과 같이 분류됩니다.

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

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

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

sudo usermod -a -G sudo tom

터미널 창에서 sudo usermod -a -G sudo tom

Mary가 속한 그룹을 확인하십시오.

groups

터미널 창의 그룹

사용자 계정 mary ~에만 mary 그룹.

Tom과 함께 확인해 봅시다 :

groups

터미널 창의 그룹

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

Mary가 필요로하는 일을하도록하자 sudo 특권.

sudo less /etc/shadow

터미널 창에서 / etc / shadow를 줄이십시오.

Mary는 제한된 파일“/ etc / shadow”를 볼 수 없습니다. 그녀는 사용하려고 시도하여 온화한 말을합니다. sudo 허락없이. 톰이 어떻게 요금을 지불합니까?

sudo less /etc/shadow

터미널 창에서 / etc / shadow를 줄이십시오.

Tom이 암호를 입력하자마자 / etc / shadow 파일이 표시됩니다.

터미널 창에있는 e / etc / shadow 파일

그냥 그를 추가하여 sudo 그룹, 그는 사용할 수있는 사람들의 엘리트 계급으로 올라갔습니다 sudo. 완전히 제한되지 않습니다.

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

톰은 가득 찼다 sudo 진상. 그는 무엇이든 할 수 있습니다 root또는 sudo 그룹 — 할 수 있습니다. 그렇게하면 기꺼이 넘겨 줄 수있는 힘보다 더 많은 힘을 얻게됩니다. 때로는 사용자가 필요한 기능을 수행해야하는 경우가 있습니다. root 특권, 그러나 그들이 충분히 가질 수있는 정당한 경우는 없습니다 sudo 접속하다. sudoers 파일에 추가하고 사용할 수있는 명령을 나열하여 균형을 이룰 수 있습니다.

사용자 계정의 소유자 인 Harry를 만나 봅시다 harry. 그는에 없습니다 sudo 그룹, 그는 없다 sudo 특권.

groups

터미널 창의 그룹

Harry는 소프트웨어를 설치할 수 있지만 유용하지는 않습니다. sudo 진상. 알았어, 문제 없어 해보자 visudo:

sudo visudo

터미널 창에서 sudo visudo

그룹 정의를 지날 때까지 파일을 아래로 스크롤하십시오. 해리를 위해 줄을 추가하겠습니다. 이 때문에 사용자 그룹 정의가 아니라 정의를 나타내는 경우 백분율 기호로 줄을 시작할 필요가 없습니다.

harry에 대한 sudoer 파일 항목 width = 646

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

harry    ALL=/usr/bin/apt-get

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

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

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

sudo visudo -c

터미널 창에서 sudo visudo -c

점검이 이루어지고 visudo 모든 것이 건강하다고보고합니다. 해리는 이제 사용할 수 있어야합니다 apt-get 소프트웨어를 설치하되 필요한 다른 명령을 사용하려고하면 거부해야합니다 sudo.

sudo apt-get install finger

터미널 창에 sudo apt-get install finger

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

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

sudo shutdown now

터미널 창에서 sudo shutdown now

Harry는 명령을 실행할 수 없습니다. 우리는 그에게 구체적이고 제한된 접근 권한을 부여했습니다. 그는 지명 된 명령을 사용할 수 있습니다.

sudoers 사용자 별명 사용

Mary에게 동일한 권한을 부여하려면 sudoers 파일에 사용자 계정의 행을 추가 할 수 있습니다 mary 해리와 똑같은 방식으로 같은 것을 달성하는 또 다른 깔끔한 방법은 User_Alias.

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

을 만들어 봅시다 User_Alias sudoers 파일에서 사용하십시오.

sudo visudo

터미널 창에서 sudo visudo

User_Alias ​​사양 줄에 올 때까지 파일에서 아래로 스크롤하십시오.

Users_Alias가 추가 된 sudoers 파일 

추가 User_Alias 입력하여 :

User_Alias INSTALLERS = harry, mary

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

  • User_Alias: 이것은 알려줍니다 visudo 이것은 될 것입니다 User_Alias.
  • 설치자:이 별명에 대한 임의의 이름입니다.
  • = 해리, 메리:이 별명에 포함 할 사용자 목록.

이제 사용자 계정에 대해 이전에 추가 한 라인을 편집하겠습니다. harry:

harry    ALL=/usr/bin/apt-get

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

INSTALLERS    ALL=/usr/bin/apt-get

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

sudo apt-get install colordiff

sudo apt-get 터미널 창에 설치 colordiff

Mary는“INSTALLERS”에 있기 때문에 소프트웨어를 설치할 수 있습니다 User_Alias그리고 User_Alias 그 권리를 수상했습니다.

세 가지 빠른 sudo 트릭

추가를 잊었을 때 sudo 명령에 입력

sudo !!

그리고 마지막 명령은 sudo 줄의 시작 부분에 추가되었습니다.

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

sudo -k

어디에서 실패했는지 볼 수 있을까 sudo 명령 시도? “/var/log/auth.log”파일로 이동합니다. 당신은 그것을 볼 수 있습니다 :

less /var/log/auth.log

터미널 창의 /var/log/auth.log 파일

TTY pts / 1에 로그인 한 사용자 계정 mary에 대한 항목을 볼 수 있습니다. shutdown 사용자 “root”로 명령하십시오.

큰 힘으로…

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