리눅스 시스템은 그 어떤 다른 것보다도 훨씬 안전합니다. 리눅스에서 보안을 구현하는 한 가지 방법은 사용자 관리 정책과 사용자 권한이며, 일반 사용자는 시스템 작업을 수행할 수 없습니다.
일반 사용자가 시스템 전반에 변경을 수행해야 할 경우 ‘su’ 또는 ‘sudo’ 명령을 사용해야 합니다.

참고 – 이 문서는 우분투 기반 배포판에 더 적용되지만 인기 있는 대부분의 리눅스 배포판에도 적용됩니다.
‘su’ 대 ‘sudo’
‘su‘는 다른 사용자와 당신의 루트 암호를 공유하게 만듭니다. 반면 ‘sudo‘는 루트 암호 없이 시스템 명령을 실행할 수 있도록 합니다. ‘sudo‘는 시스템 책임을 루트 암호 없이 위임할 수 있습니다.
‘sudo’는 무엇인가?
‘sudo‘는 권한이 부여된 사용자를 대신하여 루트 명령을 실행하는 루트 이진 setuid 이며, 사용자는 시스템 명령을 실행하기 위해 ‘sudo’ 뒤에 자신의 암호를 입력해야 합니다.
‘sudo’를 실행할 수 있는 사용자는 누구인가?
‘/usr/sbin/visudo‘ 명령을 실행하여 ‘sudo’를 실행할 수 있는 사용자 목록을 추가/제거할 수 있습니다.
$ sudo /usr/sbin/visudo
A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:
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의 매개변수
A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.
구성된 ‘sudo’ 줄의 구문은 다음과 같습니다:
User_name Machine_name=(Effective_user) command
위 구문은 네 부분으로 나뉠 수 있습니다:
- 사용자_이름: 이것은 ‘sudo’ 사용자의 이름입니다.
- 호스트_이름: 이것은 ‘sudo’ 명령이 유효한 호스트 이름입니다. 많은 호스트 기곌 들을 보유 할 때 유용합니다.
- (실행_사용자): 명령을 실행할 수 있는 ‘실행 사용자’입니다. 이 열을 통해 사용자가 시스템 명령을 실행할 수 있도록 허용합니다.
- 명령: 사용자가 실행할 수 있는 명령 또는 일련의 명령입니다.
제안된 독서: 리눅스에서 ‘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. ‘cat’이라는 sudo 사용자가 ‘dog’ 명령만 실행해야 하는 경우.
위 상황을 구현하기 위해 ‘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 유틸리티입니다.
A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.
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”를 활성화하지만 대부분의 현대 배포판은 보안 조치로 활성화시켜야 합니다.
사용자(bob)를 sudo에 추가하려면 아래 명령을 루트로 실행하십시오.
adduser bob sudo
지금까지입니다. 다음에 또 다른 흥미로운 기사로 돌아오겠습니다. 그때까지 Tecmint와 연결된 채로 기다려 주세요. 댓글 섹션에서 소중한 의견을 남겨 주시는 것을 잊지 마세요.
Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/