Linux 권한 관리 (4) sudo 권한

sudo 권한 을 배우 기 전에 사용자 가 sudo 권한 을 처음 사용 할 때 CentOS 의 시스템 알림 을 알 아 보 세 요.
우 리 는 당신 이 이미 시스템 관리자 에 게 서 일상적인 주의사항 을 알 게 되 었 다 고 믿 습 니 다.
총괄 해 보면 이 세 가지 밖 에 없다.
\# 1) 타인 의 사생활 을 존중 한다.
\# 2) 입력 하기 전에 (결과 와 위험) 을 먼저 고려 해 야 합 니 다.
\# 3) 권력 이 클 수록 책임 이 커진다.
sudo 권한 의 역할 은 일반 사용자 가 임시로 루트 사용자 의 신분 과 권한 으로 시스템 명령 을 실행 할 수 있 도록 하 는 것 입 니 다.
sudo 권한 의 조작 대상 은 시스템 명령 입 니 다.
1. sudo 권한 설정
1. sudo 권한 명령 편집
visudo

visudo 명령 이 실제로 수 정 된 것 은?/etc/sudoers 파일
2. /etc/sudoers 프로필
[root/etc]# cat /etc/sudoers

...        ...

## Allow root to run any commands anywhere
##   root           
root    ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software, service management apps and more.
##   “sys”           、  、         。
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
##   “wheel”            
%wheel  ALL=(ALL)       ALL

## Allows people in group wheel to run all commands without a password
##   “wheel”            ,           
# %wheel        ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group to mount and unmount the cdrom as root
##   “users”         、       
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
##   “users”          /sbin/shutdown -h now   
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
##    /etc/sudoers.d                      
##   ,    #        
#includedir /etc/sudoers.d

사용자 에 게 sudo 권한 설정
[   ]    [      IP]=([       ])   [NOPASSWD: ][     ]
[ IP][ ][ ] 모두 사용 가능ALL 제한 하지 않 음 을 나타 낸다.
덧붙이다[NOPASSWD: ] 옵션 을 사용 하면 사용자 가 sudo 권한 을 사용 할 때 비밀 번 호 를 입력 하지 않 아 도 됩 니 다.[ ] 절대 경 로 를 사용 하려 면 여러 명령 사이 에 쉼표 를 사용 할 수 있 습 니 다 (,) 분리.
  • 예:
  • ## Allow root to run any commands anywhere
    ##   root           
    root    ALL=(ALL)       ALL

    사용자 그룹 에 sudo 권한 설정
    %[  ]    [      IP]=([       ])   [NOPASSWD: ][     ]
    
    [ IP][ ][ ] 모두 사용 가능ALL 제한 하지 않 음 을 나타 낸다.
    덧붙이다[NOPASSWD: ] 옵션 을 사용 하면 사용자 가 sudo 권한 을 사용 할 때 비밀 번 호 를 입력 하지 않 아 도 됩 니 다.
    사용자 그룹 과 사용자 의 유일한 차이 점 은 사용자 그룹 앞 에 있 습 니 다.%
  • 예:
  • ##   “wheel”            ,           
    %wheel        ALL=(ALL)       NOPASSWD: ALL

    3. 주의사항
    1) 사용자 에 게 sudo 권한 을 부여 할 때 는 신중 해 야 하 며, 충분히 사용 하면 되 며, 지나치게 높 은 권한 을 부여 해 서 는 안 된다.
    2) [ ] 구체 적 으로 설정 할 수록 사용자 가 얻 는 권한 이 적다.
    3) 일반 사용자 /usr/bin/passwd, /usr/bin/vi, /usr/bin/su, /usr/bin/bash 에 게 명령 할 수 있 는 권한 을 부여 하 는 것 을 금지한다. 이 권한 을 가 진 사용 자 는 루트 사용자 비밀 번 호 를 수정 한 다음 에 하고 싶 은 대로 할 수 있다.
    4) 권력 이 클 수록 책임 이 커진다.
    2. sudo 명령 소개
    1. sudo [ ]: 루트 로 명령 수행
    사용 자 는 해당 명령 의 sudo 권한 이 있어 야 합 니 다.
    예시
  • 일반 사용 자 는 less 명령 을 사용 하여 루트 사용자 의 과거 기록 명령 을 봅 니 다
  • [vagrant~]$ sudo less /root/.bash_history
    cat report.md | grep -v ID | awk '$4 >= 99 {print $2}'
    cat report.md | grep -v ID | awk '$4 <= 99 {print $2}'
    cat report.md | grep -v ID | awk '$4 == 100 {print $2}'
    sed -n '2p' report.md
    sed -n '2,4p' report.md
    sed '2,4d' report.md
    cat -n report.md
    sed '1a Begin' report.md
    sed '1i Begin' report.md
    sed '1a Begin' report.md
    sed '1a End' report.md
    sed '1c Hello World' report.md
    sed '5c Hello World' report.md
    ...    ...

    2. sudo su: 루트 사용자 로 전환
    사용자/usr/bin/su 명령 의 sudo 권한
    전환 에 성공 하면 사용 자 는 루트 로 모든 명령 을 수행 할 수 있 습 니 다.
    예시
  • 일반 사용 자 는 sudo su 명령 을 사용 하여 루트 사용자 로 전환 한 다음 루트 사용자 의 비밀 번 호 를 수정 합 니 다
  • [vagrant/tmp]$ sudo su
    
    [root/tmp]# passwd
         root     。
         :
         :      8    
             :
    passwd:               。

    3. sudo -s : 루트 사용자 의 셸 로 전환
    더 하지 않 아 도 된다 기본 셸 사용
    사용 자 는 셸 명령 에 해당 하 는 sudo 권한 이 있어 야 합 니 다. 예 를 들 어/usr/bin/bash
    전환 에 성공 하면 사용 자 는 루트 로 모든 명령 을 수행 할 수 있 습 니 다.
    예시
  • 일반 사용자 가 sudo -s /usr/bin/bash 명령 을 사용 하여 루트 의 셸 로 전환 한 다음 루트 사용자 의 비밀 번 호 를 수정 합 니 다
  • [vagrant/tmp]$ sudo -s /usr/bin/bash
    
    [root/tmp]# passwd
         root     。
         :
         :      8    
             :
    passwd:               。
  • 추가 하지 않 아 도 됩 니 다 . 기본 셸
  • 을 사용 합 니 다.
    [vagrant/tmp]$ sudo -s
    
    [root/tmp]# exit

    4. sudo -l: 현재 사용자 가 사용 할 수 있 는 sudo 권한 을 보 여 주 는 명령
    예시
    [vagrant~]$ sudo -l
    ...      ...
       vagrant             :
        (ALL) /usr/bin/bash, /usr/bin/su, /usr/bin/less

    3. sudo 권한 의 응용
    1. 일반 사용자 에 게 서버 를 다시 시작 할 수 있 는 권한 부여
  • 집행 visudo 을 한 다음 에 다음 과 같은 내용 을 추가 합 니 다
  • user1    ALL=(ALL)       /sbin/shutdown -r now
  • user 1 계 정 으로 전환 하여 user 1 사용 가능 한 sudo 권한 을 확인 하 는 명령
  • [user1@10 ~]$ sudo -l
    ...      ...
       user1     10        :
        (ALL) /sbin/shutdown -r now

    2. 일반 사용자 에 게 다른 사용 자 를 추가 할 수 있 는 권한 부여
    기능 분석
    다른 사용 자 를 추가 하려 면 사용자 추가 와 비밀번호 설정 권한, 즉 /usr/sbin/useradd/usr/bin/passwd 두 명령 의 sudo 권한 이 있어 야 합 니 다.
    사용자 가 /usr/bin/passwd sudo 권한 을 완전히 가지 고 있다 면 sudo passwd 명령 이나 sudo passwd root 명령 을 통 해 루트 비밀 번 호 를 수정 할 수 있 습 니 다. 그러면 매우 안전 하지 않 습 니 다.
    따라서 사용자 가 /usr/bin/passwd 에 대한 권한 을 엄 격 히 제한 해 야 한다.
    user ALL=(ALL)    /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
    /usr/bin/passwd [A-Za-z]* passwd 명령 을 표시 한 후 추 가 된 첫 번 째 문 자 는 대소 문자 만 사용 할 수 있 습 니 다.!/usr/bin/passwd "" passwd 명령 후 아무것도 추가 하지 않 으 면 안 된다 는 뜻 이다.!/usr/bin/passwd root passwd 명령 후 루트 를 추가 할 수 없습니다.
    세 문장의 하나 가 빠 지면 안 되 고 순서 가 뒤 바 뀌 어 서 는 안 된다.
    실례
  • 집행 visudo 을 한 다음 에 다음 과 같은 내용 을 추가 합 니 다
  • user1   ALL=(ALL)    /usr/sbin/useradd
    user1   ALL=(ALL)    /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
  • user 1 계 정 으로 전환 하여 user 1 사용 가능 한 sudo 권한 을 확인 하 는 명령
  • [user1@10 ~]$ sudo -l
    ...      ...
       user1     10        :
        (ALL) /usr/sbin/useradd
        (ALL) /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd \"\", !/usr/bin/passwd root
  • 사용자 user 2 를 추가 하고 비밀 번 호 를 설정 합 니 다
  • [user1@10 ~]$ sudo useradd user2
    
    [user1@10 ~]$ sudo passwd user2
         user2     。
         :
         :        
             :
    passwd:               。
    
    [user1@10 ~]$ grep user2 /etc/passwd
    user2:x:1006:1007::/home/user2:/bin/bash
  • 루트 사용자 의 비밀 번 호 를 passwdpasswd root 두 가지 방식 으로 수정 하려 고 시 도 했 으 나 모두 실 패 했 습 니 다
  • [user1@10 ~]$ sudo passwd
       ,   user1     root      10.0.2.15     /bin/passwd。
    
    [user1@10 ~]$ sudo passwd root
       ,   user1     root      10.0.2.15     /bin/passwd root。
  • 사용자 추가 2user, 비밀 번 호 를 설정 하려 고 시도 하 였 으 나 실 패 했 습 니 다./usr/bin/passwd [A-Za-z]* passwd 명령 을 결정 한 후 추 가 된 첫 번 째 문 자 는 대소 문자 일 수 밖 에 없 기 때문이다.
  • [user1@10 ~]$ sudo useradd 2_user
    
    [user1@10 ~]$ sudo passwd 2_user
       ,   user1     root      10.0.2.15     /bin/passwd 2_user。

    좋은 웹페이지 즐겨찾기