웹사이트 검색

su와 sudo의 차이점과 Linux에서 sudo를 구성하는 방법


Linux 시스템은 그 어떤 시스템보다 보안이 뛰어납니다. Linux에서 보안을 구현하는 방법 중 하나는 사용자 관리 정책 및 사용자 권한이며 일반 사용자는 시스템 작업을 수행할 수 있는 권한이 없습니다.

일반 사용자가 시스템 전반에 걸친 변경을 수행해야 하는 경우 'su' 또는 'sudo' 명령을 사용해야 합니다.

참고 – 이 문서는 Ubuntu 기반 배포판에 더 적합하지만 대부분의 인기 있는 Linux에도 적용됩니다. 배포판.

'수' 대 '스도'

'su'는 루트 비밀번호를 다른 사용자와 공유하도록 강제하는 반면 'sudo'는 실행을 가능하게 합니다. root 비밀번호가 없는 시스템 명령. 'sudo'를 사용하면 자신의 비밀번호를 사용하여 시스템 명령을 실행할 수 있습니다. 즉, 루트 비밀번호 없이 시스템 책임을 위임할 수 있습니다.

'스도'란 무엇입니까?

'sudo'는 승인된 사용자를 대신하여 루트 명령을 실행하는 루트 바이너리 setuid이며 사용자는 실행을 위해 자신의 비밀번호를 입력해야 합니다. 시스템 명령 뒤에 'sudo'가 옵니다.

누가 'sudo'를 실행할 수 있나요?

'/usr/sbin/visudo'를 실행하여 'sudo'를 실행할 수 있는 사용자 목록을 추가/제거할 수 있습니다.

sudo /usr/sbin/visudo

'/usr/sbin/visudo' 파일의 스크린샷은 다음과 같습니다:

sudo 목록은 기본적으로 아래 문자열과 같습니다.

root ALL=(ALL) ALL

참고: /usr/sbin/visudo를 편집하려면 루트여야 합니다. 파일.

sudo 액세스 권한 부여

많은 상황에서 시스템 관리자, 특히 이 분야에 익숙하지 않은 사람은 "root ALL=(ALL) ALL" 문자열을 템플릿으로 찾아 다른 사용자에게 무제한 액세스 권한을 부여합니다. 잠재적으로 매우 해로울 수 있습니다.

나열된 모든 사용자를 완전히 믿지 않는 한 '/usr/sbin/visudo' 파일을 아래 패턴과 같은 것으로 편집하는 것은 실제로 매우 위험할 수 있습니다.

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL

sudo의 매개변수

적절하게 구성된 'sudo'는 매우 유연하며 실행해야 하는 명령의 수를 정확하게 구성할 수 있습니다.

구성된 'sudo' 줄의 구문은 다음과 같습니다.

User_name Machine_name=(Effective_user) command

위의 구문은 네 부분으로 나눌 수 있습니다.

  1. User_name: 'sudo' 사용자의 이름입니다.
  2. Machine_name: 'sudo' 명령이 유효한 호스트 이름입니다. 호스트 머신이 많을 때 유용합니다.
  3. (Effective_user): 명령 실행이 허용된 '유효 사용자'입니다. 이 열을 사용하면 사용자가 시스템 명령을 실행할 수 있습니다.
  4. 명령: 사용자가 실행할 수 있는 명령 또는 명령 집합입니다.

권장 읽기: Linux에서 'sudo' 설정을 위한 10가지 유용한 Sudoers 구성

일부 상황 및 해당 'sudo' 줄:

Q1. 데이터베이스 관리자인 사용자 mark가 있습니다. 호스트가 아닌 데이터베이스 서버(beta.database_server.com)에 대한 모든 액세스 권한을 그에게 제공해야 합니다.

위의 상황에서 'sudo' 줄은 다음과 같이 작성할 수 있습니다.

mark beta.database_server.com=(ALL) ALL

Q2. 이외의 사용자로 시스템 명령을 실행해야 하는 'tom' 사용자가 있습니다. 위에서 설명한 것과 동일한 데이터베이스 서버의 루트입니다.

위의 상황에서 'sudo' 줄은 다음과 같이 작성할 수 있습니다.

mark beta.database_server.com=(tom) ALL

Q3. ' 명령을 실행해야 하는 sudo 사용자 'cat'이 있습니다. 개'만 가능합니다.

위의 상황을 구현하기 위해 'sudo'를 다음과 같이 작성할 수 있습니다.

mark beta.database_server.com=(cat) dog

Q4. 사용자에게 여러 명령을 부여해야 하는 경우에는 어떻게 되나요?

사용자가 실행해야 하는 명령 수가 10 미만인 경우 아래와 같이 모든 명령을 공백을 두고 나란히 배치할 수 있습니다.

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

이 명령 목록이 범위에 따라 다르므로 각 명령을 수동으로 입력하는 것이 문자 그대로 불가능할 경우 별칭을 사용해야 합니다. 별칭! 예, 긴 명령이나 명령 목록을 작고 쉬운 키워드로 참조할 수 있는 Linux 유틸리티입니다.

'sudo' 구성 파일의 항목 대신 사용할 수 있는 몇 가지 alias 예.

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

사용자 대신 아래와 같이 '%' 접미사만 붙여 해당 그룹에 속하는 시스템 그룹을 지정할 수 있습니다.

%apacheadmin WEBSERVERS=(www) APACHE

Q5. 비밀번호를 입력하지 않고 'sudo' 명령을 실행하는 것은 어떻습니까?

'NOPASSWD' 플래그를 사용하면 비밀번호를 입력하지 않고도 'sudo' 명령을 실행할 수 있습니다.

adam ALL=(ALL) NOPASSWD: PROCS

여기서 사용자 'adam'은 비밀번호를 입력하지 않고도 'PROCS' 아래의 별칭 모든 명령을 실행할 수 있습니다.

권장 읽기: 잘못된 비밀번호를 입력하면 Sudo가 모욕하도록 허용

'sudo'는 'su'에 비해 많은 유연성을 갖춘 강력하고 안전한 환경을 제공합니다. 게다가 “sudo” 구성도 쉽습니다. 일부 Linux 배포판에는 기본적으로 'sudo'가 활성화되어 있지만 오늘날 대부분의 배포판에서는 보안 조치로 이를 활성화해야 합니다.

sudo에 사용자(bob)를 추가하려면 루트로 아래 명령을 실행하세요.

adduser bob sudo

지금은 여기까지입니다. 저는 또 다른 흥미로운 기사로 다시 찾아오겠습니다. 그때까지 계속 지켜봐주시고 Tecmint에 연결해 주세요. 의견 섹션에 귀중한 피드백을 제공하는 것을 잊지 마십시오.