KOROMOON

착한 사마리아인이 되고 싶습니다.

2/16/2020

리눅스 sudo 명령어


( 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) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기