개요[편집 / 원본 편집]

유닉스, 리눅스에서 관리자 권한을 사용하거나 획득할 때 사용하는 명령어들입니다. 시스템 관리, 소프트웨어 설치, 설정 변경 등 관리자 권한을 필요로 하는 작업을 수행할 때 사용됩니다. 이러한 명령어들은 시스템 보안에 직접적인 영향을 미치므로 신중하게 사용해야 합니다.

su[편집 / 원본 편집]

su(Substitute User)는 유닉스리눅스에서 사용되는 명령어로, 다른 사용자의 권한으로 쉘을 실행할 수 있게 해주는 도구입니다. 이 명령어를 통해 로그인된 사용자가 다른 사용자의 권한을 임시로 얻을 수 있습니다.

역사[편집 / 원본 편집]

su 명령어는 1971년 최초의 유닉스 버전에서부터 존재했던 핵심 시스템 도구 중 하나입니다. Dennis Ritchie와 Ken Thompson이 AT&T Bell 연구소에서 개발한 이 도구는, 초기에는 단순히 사용자를 전환하는 기능만을 제공했습니다. 이후 버클리 소프트웨어 배포판(BSD)에서 다양한 보안 기능과 옵션들이 추가되었습니다.

상세 사용법[편집 / 원본 편집]

su 명령어는 다양한 옵션과 함께 사용할 수 있습니다:

  • su - 기본적으로 root 사용자로 전환
  • su username - 특정 사용자로 전환
  • su - 또는 su -l - 로그인 쉘로 전환 (환경 변수 완전 초기화)
  • su -c 'command' - 특정 명령어를 다른 사용자 권한으로 실행

환경 변수 처리[편집 / 원본 편집]

su 명령어는 사용자 전환 시 환경 변수를 다음과 같이 처리합니다:

  • su (옵션 없이): 현재 환경 변수 유지
  • su -: 새로운 사용자의 환경으로 완전히 전환
  • su -p: 현재 환경 변수를 유지하면서 전환

보안 고려사항[편집 / 원본 편집]

su 명령어 사용 시 고려해야 할 주요 보안 사항들:

  • root 비밀번호 노출 위험
  • 권한 남용 가능성
  • 감사(audit) 추적의 어려움
  • 사용자 전환 기록 관리의 중요성

로깅과 감사[편집 / 원본 편집]

su 명령어의 사용은 시스템 로그에 기록됩니다:

  • /var/log/auth.log (데비안 계열)
  • /var/log/secure (레드햇 계열)
  • 로그에는 사용자 전환 시도, 성공/실패 여부가 기록됩니다

sudo[편집 / 원본 편집]

sudo(SuperUser DO)는 관리자 권한이 필요한 명령을 실행할 수 있게 해주는 고급 권한 관리 도구입니다. 1980년대 뉴욕 대학교의 Bob Coggeshall과 Cliff Spencer가 개발했으며, 현재는 Todd Miller가 관리하고 있습니다.

상세 아키텍처[편집 / 원본 편집]

sudo는 다음과 같은 구조로 동작합니다:

  • sudoers 설정 파일: /etc/sudoers에 권한 정책 저장
  • 플러그인 아키텍처: 정책, 입출력, 감사 등을 처리하는 모듈식 구조
  • PAM 통합: 다양한 인증 메커니즘 지원
  • 명령어 별칭: 자주 사용하는 명령어 그룹 정의 가능

고급 설정 옵션[편집 / 원본 편집]

sudoers 파일 구문[편집 / 원본 편집]

# 사용자 지정
user    ALL=(ALL:ALL) ALL

# 그룹 지정
%admin  ALL=(ALL) ALL

# 비밀번호 없이 실행
user    ALL=(ALL) NOPASSWD: ALL

# 특정 명령어만 허용
user    ALL=(ALL) /bin/ls, /bin/cat

환경 변수 제어[편집 / 원본 편집]

sudo는 보안을 위해 기본적으로 대부분의 환경 변수를 초기화합니다. 다음 변수들은 예외적으로 유지됩니다:

  • TERM
  • PATH
  • HOME
  • MAIL
  • SHELL
  • LOGNAME
  • USER
  • USERNAME

보안 기능[편집 / 원본 편집]

sudo는 다양한 보안 기능을 제공합니다:

  • 명령어 제한: 사용자별로 실행 가능한 명령어 제한
  • 시간 제한: 권한 부여의 유효 시간 설정
  • 감사 로깅: 모든 명령어 실행 기록
  • 비밀번호 정책: 다양한 인증 방식 지원

최신 개발 현황[편집 / 원본 편집]

sudo 2.0 개발[편집 / 원본 편집]

2023년부터 시작된 sudo 2.0 개발은 다음과 같은 주요 변화를 포함합니다:

  • 모듈식 아키텍처 강화
  • 실시간 정책 업데이트 지원
  • 클라우드 네이티브 환경 지원 강화
  • 컨테이너 통합 기능 개선

CVE-2023-28487[편집 / 원본 편집]

2023년에 발견된 취약점으로, 특정 조건에서 권한 상승이 가능한 문제가 있었습니다. 이 취약점은 버전 1.9.13p2에서 패치되었습니다.

doas[편집 / 원본 편집]

자세한 내용은 doas 문서를 확인하세요!

doas(do as) 명령어는 OpenBSD에서 개발된 sudo의 대안입니다. 2015년에 처음 도입되었으며, 더 단순하고 안전한 설계를 목표로 합니다.

특징[편집 / 원본 편집]

  • 간단한 설정 파일 구조
  • 작은 코드베이스
  • 높은 보안성
  • BSD 계열 시스템에서 널리 사용

설정 예시[편집 / 원본 편집]

# /etc/doas.conf
permit persist keepenv :wheel
permit nopass root as root

기타 권한 관리 도구[편집 / 원본 편집]

PolicyKit[편집 / 원본 편집]

데스크톱 환경에서 사용되는 권한 관리 시스템으로, 세밀한 권한 제어가 가능합니다. 자세한 내용은 PolicyKit 문서를 확인하세요!

SELinux[편집 / 원본 편집]

NSA에서 개발한 강력한 접근 제어 시스템으로, 시스템 전반의 보안을 강화합니다. 자세한 내용은 SELinux 문서를 확인하세요!

sudo in Rust[편집 / 원본 편집]

2022년 12월에 시작된 Green ticksudo-rs 프로젝트는 sudo를 Rust로 재구현하는 작업을 진행 중입니다. 2024년 현재 다음과 같은 진행 상황을 보이고 있습니다:

주요 개발 현황[편집 / 원본 편집]

  • 기본적인 권한 상승 기능 구현 완료
  • sudoers 파일 파서 구현
  • PAM 인증 통합
  • 기본적인 로깅 시스템 구현

향후 계획[편집 / 원본 편집]

  • 플러그인 시스템 구현
  • 성능 최적화
  • 보안 감사 및 인증
  • 기존 sudo와의 완벽한 호환성 확보

이점[편집 / 원본 편집]

  • 메모리 안전성 보장
  • 현대적인 에러 처리
  • 향상된 동시성 처리
  • 더 나은 유지보수성

설치[편집 / 원본 편집]

데비안, 우분투 기반[편집 / 원본 편집]

root@localhost:~# apt update
root@localhost:~# apt install sudo

RHEL/CentOS/Fedora 기반[편집 / 원본 편집]

root@localhost:~# dnf install sudo

Arch Linux[편집 / 원본 편집]

root@localhost:~# pacman -S sudo

모범 사례[편집 / 원본 편집]

보안 권장사항[편집 / 원본 편집]

  • 최소 권한 원칙 준수
  • 정기적인 감사 로그 검토
  • sudo 버전 최신화 유지
  • 사용자별 권한 세분화

설정 예시[편집 / 원본 편집]

기본적인 보안 설정[편집 / 원본 편집]

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults        logfile="/var/log/sudo.log"
Defaults        log_year
Defaults        passwd_tries=3
Defaults        insults

각주[편집 / 원본 편집]