( 1 ) 설명
sudo 명령어는 유닉스 및 리눅스 계열에서 다른 사용자의 보안권한과 관련된 프로그램을 구동할 수 있게 해주는 프로그램임.
Substitute User Do 의 줄임말임. (다른 사용자의 권한으로 명령을 이행하라 라는 뜻임)
기본적으로 sudo 는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수도 있고 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없음.
sudo 는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며 주로 우분투 리눅스와 애플의 OS X 에서 볼 수 있음.
가장 간단한 방법은 sudo <command> 이며 <command> 에 적은 쉘커맨드가 root권한으로 수행됨.
sudo -s 는 환경변화 없이 현재 사용자가 관리자 권한을 획득하도록 하고 sudo -i 는 계정 자체가 관리자로 바뀜.
root 계정이 아닌 다른 계정의 권한이 필요한 경우엔 sudo -u username <command> 로 수행하면 username 계정의 권한으로 <command> 를 수행함.
sudo -u #uid <command> 와 같이 uid값을 사용할 수도 있으며 이 유저를 Runas User 라고 함.
( 2 ) 옵션 설명
Sudo 1.8.29 버전을 기준으로 옵션을 확인함.
kali@kali:~$ sudo -V
Sudo version 1.8.29
Sudoers policy plugin version 1.8.29
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.29
kali@kali:~$ sudo -h
sudo - execute a command as another user
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user]
[command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] file ...
옵션:
-A, --askpass 암호 프롬프트에 도우미 프로그램 사용
-b, --background 백그라운드에서 명령어 실행
-B, --bell 메시지가 표시되면 벨이 울림
-C, --close-from=num 모든 파일 기술자(descriptors)를 닫음 >= num
-E, --preserve-env 명령어 실행할 때 사용자 환경 유지
--preserve-env=list 특정 환경 변수 유지
-e, --edit 명령어를 실행하는 대신 파일 편집
-g, --group=group 지정한 그룹명이나 ID 로 명령어를 실행
-H, --set-home 사용자의 홈 디렉토리를 대상으로 HOME 변수 설정
-h, --help 도움말 메시지를 표시하고 종료
-h, --host=host 호스트에서 명령어 실행 (플러그인에서 지원하는 경우)
-i, --login 로그인 사용자를 대상 사용자로 실행함. 명령어도 지정할 수 있음.
-K, --remove-timestamp 타임스탬프 파일을 완전히 제거
-k, --reset-timestamp 타임스탬프 파일 무효화
-l, --list 사용자 권한을 나열하거나 특정 명령어를 확인함. 더 긴 형식으로 두번 사용함.
-n, --non-interactive 비 대화식 모드로 프로프트를 사용되지 않음
-P, --preserve-groups 대상으로 설정하는 대신 그룹 벡터 유지
-p, --prompt=prompt 지정된 비밀번호 프롬프트를 사용함
-r, --role=role 지정된 역할로 SELinux 보안 컨텍스트 작성
-S, --stdin 표준 입력에서 비밀번호 읽기
-s, --shell 대상 사용자로 쉘을 실행함. 명령어도 지정할 수 있음.
-t, --type=type 지정된 유형으로 SELinux 보안 컨텍스트 작성
-T, --command-timeout=timeout 지정된 시간 제한 후 종료 명령어
-U, --other-user=user 목록 모드에서 사용자에 대한 표시 강화
-u, --user=user 지정된 사용자 이름 또는 ID 로 명령어 실행(또는 파일 편집)
-V, --version 버전 정보를 표시하고 종료
-v, --validate 명령어를 실행하지 않고 사용자의 타임스탬프 업데이트
-- 명령어 행 인수 처리 중지
( 3 ) runas, su, sudo 차이
윈도우에서는 runas 명령어가 있으며 리눅스 명령어 su 명령어와 비슷함.
runas 는 권한을 추가하기 보다는 다른 사용자를 가장함.
runas 와 su 는 아래와 같은 공통점이 있음.
권한이 부여된 유저가 그들 고유의 글을 이용하여 높은 권한의 프로세스를 실행하는 것을 허락치 않음.
사용자의 프로파일과 객체의 소유권을 보존하지 않음.
sudo 가 su 에 비해 더 우수한 이유는 su 는 사용자의 고유 신분에 기반해 권한이동을 액세스함.
가장 중요한 것은 sudo 는 비밀번호 공유가 필요 없음.
runas 나 su 를 특권 계정을 엑세스하기 위해 사용하는 것은 관리자 가능 계정의 비밀번호를 유포하는것이 필요하기 때문에 sudo 에는 없는 보안상의 약점을 가지고 있음.
참고로 sudo -s 는 sudo 만으로 su 명령어와 같은 효과가 나는 명령어임.
su 는 root 암호를 알아야만 쓸 수 있지만 sudo -s 는 sudoer 에서 허가된 사용자라면 본인 암호를 넣고 쓸 수 있는 su 와 동일한 명령어임.
간단히 말하면 sudo -s 를 하고 자기 암호를 넣으면 root 로 로그인한 쉘로 전환됨.
참고 사이트 :
https://ko.wikipedia.org/wiki/Sudo
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기