rm 명령에 의한 재기적 삭제 (-r 옵션)로 사라지는 것, 남은 것

6650 단어 ShellScriptrm

결론




* r은 읽기, x는 실행, w는 쓰기 권한을 나타냅니다 (-는 권한 없음)
  • 실행 사용자가 rx (읽기/실행) 권한을 가진 디렉토리에 대해서는 그 아래로 삭제를 시도한다.
  • 삭제를 시도한 대상이 디렉토리 인 경우 상위 디렉토리와 대상 디렉토리에 w (쓰기) 권한이 있으면 삭제됩니다.
  • 삭제를 시도한 대상이 디렉토리 인 경우,
    · 대상 디렉토리가 비어 있으면 상위 디렉토리에 w 권한이 있으므로 삭제됩니다.
    · 대상 디렉토리가 비어 있지 않으면 상위 디렉토리에 w 권한이 있어도 삭제되지 않습니다.
    ※비어 있지 않은 케이스
      - 대상 디렉토리에 w권한이 없고 아래 디렉토리나 파일을 삭제할 수 없음
    - 대상 디렉토리에 r 권한이 없으며 아래 참조를 할 수 없습니다
  • 삭제를 시도한 대상이 파일 인 경우, 상위 디렉토리에 w (쓰기) 권한이 있으면 (즉 소속 디렉토리에의 쓰기 권한이 있으면) 파일에 대한 권한의 유무에 관계없이 삭제된다

  • ⇒ 실행 유저의 권한에 따라서는 그다지 사라지지 않는다.
    (일단 풀 컨트롤 같은 것을 습관적으로 해 버리고 있으면 상당히 사라진다.)
    ⇒슈퍼 유저로 실수로 루트로부터 실행해 버리면 모든 것이 끝난다.

    실험



    전제 환경:
    CentOS Linux release 7.8.2003 (Docker 시작)

    디렉토리 구성:


    Docker 컨테이너에서 CentOS를 시작합니다.

    root 사용자로 실행
    ~$ docker run -it --name=centos centos:7 bash -rm
    


    CentOS 버전을 확인합니다.

    root 사용자로 실행
    # cat /etc/redhat-release 
    CentOS Linux release 7.8.2003 (Core)
    


    같은 그룹에 USER_AUSER_B 를 작성한다.

    root 사용자로 실행
    # adduser USER_A
    # adduser -g 1000 USER_B
    # cat /etc/passwd | grep USER
    USER_A:x:1000:1000::/home/USER_A:/bin/bash
    USER_B:x:1001:1000::/home/USER_B:/bin/bash
    


    상기 이미지 다이어그램과 동일한 디렉토리를 구성한다.
    나중에 USER_A와 같은 그룹에있는 USER_B에서 rm -rf를 실행하려면
    주목할 권한은 디렉토리 또는 파일 소유자와 동일한 그룹에 있는 사용자에 대한 권한 부분입니다. ( ll 명령 결과의 각 행 시작부터 5자 r, 6자 x, 7자 x)

    USER_A에서 실행
    $ ll -d $(find `pwd`) | grep Dir
    drwxr----- 3 USER_A USER_A 4096 Nov  5 03:02 /home/USER_A/Dir1_r
    drwxrwx--- 2 USER_A USER_A 4096 Nov  5 03:05 /home/USER_A/Dir1_r/Dir1_r_rwx
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:05 /home/USER_A/Dir1_r/Dir1_r_rwx/FIle1rw.dat
    drwx--x--- 3 USER_A USER_A 4096 Nov  5 03:03 /home/USER_A/Dir2_x
    drwxrwx--- 2 USER_A USER_A 4096 Nov  5 03:06 /home/USER_A/Dir2_x/Dir2_x_rwx
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:06 /home/USER_A/Dir2_x/Dir2_x_rwx/FIle2rw.dat
    drwxr-x--- 3 USER_A USER_A 4096 Nov  5 03:03 /home/USER_A/Dir3_rx
    drwxrwx--- 4 USER_A USER_A 4096 Nov  5 03:55 /home/USER_A/Dir3_rx/Dir3_rx_rwx
    drwxr----- 2 USER_A USER_A 4096 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r
    -rw------- 1 USER_A USER_A    0 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3no.dat
    -rw-r----- 1 USER_A USER_A    0 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3r.dat
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3rw.dat
    drwxrwx--- 2 USER_A USER_A 4096 Nov  5 03:56 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_rwx
    -rw------- 1 USER_A USER_A    0 Nov  5 03:56 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_rwx/File3no.dat
    -rw------- 1 USER_A USER_A    0 Nov  5 03:52 /home/USER_A/Dir3_rx/Dir3_rx_rwx/File3no.dat
    -rw-r----- 1 USER_A USER_A    0 Nov  5 03:52 /home/USER_A/Dir3_rx/Dir3_rx_rwx/File3r.dat
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:52 /home/USER_A/Dir3_rx/Dir3_rx_rwx/File3rw.dat
    

    USER_B 에서 rm -rf 를 실행합니다.

    USER_B에서 실행
    $ rm -rf /home/USER_A/*
    rm: cannot remove '/home/USER_A/Dir1_r/Dir1_r_rwx': Permission denied
    rm: cannot remove '/home/USER_A/Dir2_x': Permission denied
    rm: cannot remove '/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3r.dat': Permission denied
    rm: cannot remove '/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3no.dat': Permission denied
    rm: cannot remove '/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3rw.dat': Permission denied
    

    USER_B 에 의해서 rm -rf 실행 후 `USER_A`로 디렉토리 구성을 확인한다.

    USER_A에서 실행
    $ ll -d $(find `pwd`) | grep Dir
    drwxr----- 3 USER_A USER_A 4096 Nov  5 03:02 /home/USER_A/Dir1_r
    drwxrwx--- 2 USER_A USER_A 4096 Nov  5 03:05 /home/USER_A/Dir1_r/Dir1_r_rwx
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:05 /home/USER_A/Dir1_r/Dir1_r_rwx/FIle1rw.dat
    drwx--x--- 3 USER_A USER_A 4096 Nov  5 03:03 /home/USER_A/Dir2_x
    drwxrwx--- 2 USER_A USER_A 4096 Nov  5 03:06 /home/USER_A/Dir2_x/Dir2_x_rwx
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:06 /home/USER_A/Dir2_x/Dir2_x_rwx/FIle2rw.dat
    drwxr-x--- 3 USER_A USER_A 4096 Nov  5 03:03 /home/USER_A/Dir3_rx
    drwxrwx--- 3 USER_A USER_A 4096 Nov  5 03:59 /home/USER_A/Dir3_rx/Dir3_rx_rwx
    drwxr----- 2 USER_A USER_A 4096 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r
    -rw------- 1 USER_A USER_A    0 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3no.dat
    -rw-r----- 1 USER_A USER_A    0 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3r.dat
    -rw-rw---- 1 USER_A USER_A    0 Nov  5 03:07 /home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3rw.dat
    

    사라진 것은/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3no.dat/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3r.dat/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_r/File3rw.dat/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_rwx/home/USER_A/Dir3_rx/Dir3_rx_rwx/Dir3_rx_rwx_rwx/File3no.dat

    좋은 웹페이지 즐겨찾기