$ su -
$ apt-get update
$ apt-get install sudo
apt(advanced Packaging Tool) :
그래픽 인터페이스 없이 명령어로 사용됩니다. 설치할 패키지 명을 입력하면, '/etc/apt/sources.list'에 저장된 소스 목록에서 해당 패키지 + 종속성 목록과 함께 찾아 자동으로 설치하기 때문에 종속성 문제를 걱정하지 않아도 됩니다. 무료 오픈 소스이면서 자유도가 높은것이 특징이다.
aptitude :
사용자 인터페이스를 추가해 사용자가 대화형으로 패키지를 검색해 설치, 제거할 수 있는 패키지 관리 도구이다. apt보다 기능이 더 많고, 편리하며 사용하지 않는 패키지를 자동적으로 제거해주거나 설치, 업데이트 과정에서 충돌이 있을 경우엔 다른 대안도 함께 제시해준다.
$ dpkg -l | grep 'sudo'
$ visudo
visudo : 일반 편집기로 /etc/sudoers 파일을 편집할 경우 실수로 잘못된 구분이 있을 경우 sudo로 권한 상승이 불가능합니다. visudo는 저장시 구문 검사를 수행하므로 잘못된 구문으로 인한 문제를 해결할 수 있습니다.
# sudo 실행 횟수를 지정(Default, 3)
Defaults passwd_tries=3
# 에러 메시지 출력
Defaults authfail_message="권한 획득 실패 시 출력 메시지"
Defaults badpass_message="비밀번호 오류 시 출력 메시지"
# sudo 명령어 실행 시 입력된 명령어를 log로 저장
Defaults log_input
# sudo 명령어 실행 시 출력 결과를 log로 저장
Defaults log_output
# sudo log 저장 디렉토리를 지정하는 설정
Defaults iolog_dir="/var/log/sudo/"
# sudo 명령어 실행 시 tty를 강제하는 설정
Defaults requiretty
# sudo가 제공하는 보안 기능 중 하나
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Secure Path : 트로이목마 해킹 공격에 대한 일차적인 방어 기능을 제공합니다. 현재 계정의 PATH에 악의적인 경로가 포함된 경우, 이를 무시함으로써 sudo를 통한 전체 시스템이 해킹되는 경우를 방지할 수 있습니다.
계정에 sudo 권한을 준다는 것은 해당 계정을 sudo 그룹에 넣어준다는 것 입니다.
groupadd user42
$ sudo usermod -aG sudo,user42 [user_name]
usermod :
a : G옵션과 같이 사용하는 옵션으로 기존의 2차 그룹 이외에 추가로 2차 그룹을 지정할 때 사용합니다.
G : 추가로 다른 그룹에 속하게 할 때 사용합니다.
g : 그룹이 primary group이 되도록 변경합니다.
그룹 확인
$ groups [user_name]
$ sudo useradd -m [user_name]
$ passwd [user_name]
$ userdel -r [user_name]
최소 권한 규칙에 의거하여 root로 로그인하는 것은 차단하고 root 권한이 필요할 경우에만 sudo 명령어를 사용하여 제한적으로 실행하는 것이 시스템의 안정성과 보안 측면에서 좋은 습관입니다.
또한 su root를 할 경우 무슨 작업을 했는지 확인하는 것이 불가능합니다. sudo를 쓰게 되면 command단위의 logging이 가능하므로 정확한 기록을 확인할 수 있게 됩니다.
참고 :