0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rmコマンドによる再起的な削除(-rオプション)で消えるもの、残るもの

Last updated at Posted at 2020-11-07

結論

image.png
※ r は読取、x は実行、w は書込の権限を示す(-は権限なし)

  • 実行ユーザーがrx(読取・実行)権限をもつディレクトリに対してはその配下への削除が試みられる

  • 削除が試みられた対象がディレクトリの場合、上位ディレクトリと対象のディレクトリにw(書込)権限があると削除される

  • 削除が試みられた対象がディレクトリの場合、
    ・対象のディレクトリが空なら上位ディレクトリにw権限があることで削除される
    ・対象のディレクトリが空でないなら上位ディレクトリにw権限があっても削除されない
     ※空でないケース
      - 対象のディレクトリにw権限がなく配下のディレクトリまたはファイルが削除できない
      - 対象のディレクトリにr権限がなく配下の参照ができない

  • 削除が試みられた対象がファイルの場合、上位ディレクトリにw(書込)権限があると(つまり所属ディレクトリへの書込権限があると)ファイルに対する権限の有無に依らず削除される

⇒実行ユーザーの権限次第ではあまり消えない。
(とりあえずフルコントロールみたいなことを習慣的にやってしまっていると結構消える。)
⇒スーパーユーザーで誤ってルートから実行してしまうと全てが終わる。

実験

前提環境:
 CentOS Linux release 7.8.2003 (Docker起動)

ディレクトリ構成:
image.png


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_Brm -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_Brm -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

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?