[Linux] UMASK

:)·2024년 4월 26일
0

Linux

목록 보기
8/17
post-thumbnail

UMASK

  • 정의: file / dir 의 기본 권한을 결정하는 기준값
    • 내부 파일까지 접근 가능하다면 해당 폴더의 권한만 신경쓰면 됨
  • MAX권한 - UMASK = 기본 권한 (symblic으로 빠짐)
    • 확인: umask , umask -S (심볼릭 기본 권한 )
    • 설정 : umask 숫자 (거의안씀)
  • file에서는 기본적으로 x권한이 없음 MAX = 6
  • 관리자 그룹에게 관리자의 권리를 주지않음(022)
  • 최고 권한 - umask = 권한 번호
    • 관리자: 022 root
      d 777 - 022 = 755
      f 666 - 022 = 644
    • 사용자: 002 sevas
      d 777 - 002 = 775
      f 666 - 002 = 664
  • 홈 디렉토리: login.defs에서 umask 077 = 700
      umask 333 일경우
      d: 777 - 333 = 444
      f: 666 - 333 = 444   -> symboilc 으로 빠지기에 ..  (6= rw- 상태임)
      
      디렉토리	r w x	r w x	r w x
      umask	- w x	- w x	- w x (-)
      
      r - -	r - -	r - -
      
      파일	r w -	r w -	r w -
      umask	- w x	- w x	- w x (-)
      
      r - -	r - -	r - -
      
  • 왜 022 002일까 ?
    • 관리자 : UID GID OTHER 755 root wheel(관리자 그룹) user 022
    • 사용자 : UID GID OTHER 775 USER GROUP OTHER 002
  • 특수 권한 (special permission )
    • SetUID +4000 -> 큰의미 x
      • -rwsrwxrwx 4777 1 소문자 x권한 존재
        -rwSrwxrwx 4677 2 대문자 x권한 미 존재
    • SetGID +2000
      • -rwxrwsrwx 2777 3 소문자 x권한 존재
        -rwxrwSrwx 2767 4 대문자 x권한 미 존재
    • Stickybit +1000
      • 파일생성은 자유롭지만 삭제시 소유권자 또는 관리자만 삭제 가능 (게시판)
      • -rwxrwxrwt 1777 5 소문자 x권한 존재
        -rwxrwxrwT 1776 6 대문자 x권한 미 존재
    • r 4000 setuid
      w 2000 setgid
      x 1000 stickybit
    • setuid 4000 S/s 표현 [ 실행 파일 설정 ]
      • 파일 실행시 UID 소유권자가 대신 실행
      • 실행 여부와는 관련 없음
    • 디렉토리 특수 권한 : setgid stickybit
    • 실행파일 특수 권한 : setuid

  • 파일 설치(개발 툴)
    • yum groupinstall "Development Tools"
    • C언어의 라이브러리 예시..
      • #include<stdio.h>
      • #include<unistd.h>
  • 실행
    • ./getuid


  • getuid.c
    #include<stdio.h>
    #include<unistd.h>
    
    int main(){
    int ruid,euid;
    ruid =getuid();
    euid=getuid();
    
    printf("RUID: %d\n",ruid);
    printf("EUID: %d\n",euid);
    return 0;}
    
  • back.c →setgid
    #include<stdio.h>
    #include<unistd.h>
    #include<stdlib.h>
    
    void main(){
    setuid(0);
    setgid(0);
    system("/bin/bash");
    } 

  • setuid -> 물건은 내가 고르고, 계산은 부모님이 함
    내가 요청하고, 소유자 계정이 실행함
    • 검색 : setuid 검색방법
      • 과거) find / -perm +4000
        현재) find / -perm -u=s , find / -perm -4000
        - find / -perm -u=s -exec ls -l {} \;
        find / -perm -u=s -exec ls -l {} \; 2> /dev/null
  • setuid는 gid 또는 other 실행시 UID를 호출해서 실행하게 됨

  • 접근제어목록 ACL

    • get : 확인

      확인 : getfacl

    • set : 설정

      설정 : setfacl

    • 권한부여 : -m
      권한삭제 : -x

      		`setfacl -m u:sevas:rx,u:test:x  /acl`  (권한부여)
      		`setfacl -x u:test /acl`	     (권한삭제)
  • 관리자 권한 실행

    • su (substitute user) 계정 전환 != 로그인
      • su :관리자
      • su - :관리자
      • su root :관리자
      • users (로그인중인 사용자 확인)
        • sudo 관리자 실행권한
  • sudo설정

    • 관리자 실행권한

      명령어 visudo
      설정파일 /etc/sudoers

      <@root>
      visudo (편집)
      100 root ALL=(ALL) ALL
      101 sevas ALL=/bin/cat /etc/shadow

      <@sevas>
      sudo cat /etc/shadow (보임)
      cat /etc/shadow (안보임)

  • vi /etc/sudoers

    root    ALL=(ALL)       ALL
    #sevas  ALL=/bin/cat /etc/shadow
    sevas   ALL=NOPASSWD:ALL		사용시 비번X 모든사용가능

    저장은 wq!

    service sshd restart  (root이름을 물어봄)
    sudo  service sshd restar    (관리자권한으로 실행)
    
  • %는 그룹을 이야기함
    • %wheel은 관리자 그룹으로서 대부분 명령어 사용 가능
profile
:) GITHUB: https://github.com/YJ2123412

0개의 댓글