개요[편집 / 원본 편집]
유닉스, 리눅스에서 관리자 권한을 사용하거나 획득할 때 사용하는 명령어들입니다. 시스템 관리, 소프트웨어 설치, 설정 변경 등 관리자 권한을 필요로 하는 작업을 수행할 때 사용됩니다. 이러한 명령어들은 시스템 보안에 직접적인 영향을 미치므로 신중하게 사용해야 합니다.
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
- 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월에 시작된 sudo-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