rm 명령에 의한 재기적 삭제 (-r 옵션)로 사라지는 것, 남은 것
6650 단어 ShellScriptrm
결론
* r은 읽기, x는 실행, w는 쓰기 권한을 나타냅니다 (-는 권한 없음)
· 대상 디렉토리가 비어 있으면 상위 디렉토리에 w 권한이 있으므로 삭제됩니다.
· 대상 디렉토리가 비어 있지 않으면 상위 디렉토리에 w 권한이 있어도 삭제되지 않습니다.
※비어 있지 않은 케이스
- 대상 디렉토리에 w권한이 없고 아래 디렉토리나 파일을 삭제할 수 없음
- 대상 디렉토리에 r 권한이 없으며 아래 참조를 할 수 없습니다
⇒ 실행 유저의 권한에 따라서는 그다지 사라지지 않는다.
(일단 풀 컨트롤 같은 것을 습관적으로 해 버리고 있으면 상당히 사라진다.)
⇒슈퍼 유저로 실수로 루트로부터 실행해 버리면 모든 것이 끝난다.
실험
전제 환경:
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_A
와 USER_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
Reference
이 문제에 관하여(rm 명령에 의한 재기적 삭제 (-r 옵션)로 사라지는 것, 남은 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ysskjck/items/ae8db0df06de1f19151e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
~$ docker run -it --name=centos centos:7 bash -rm
# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
# 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
$ 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
$ 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
$ 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
Reference
이 문제에 관하여(rm 명령에 의한 재기적 삭제 (-r 옵션)로 사라지는 것, 남은 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ysskjck/items/ae8db0df06de1f19151e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)