パスワードを忘れた? アカウント作成
11410862 journal
日記

Sukoyaの日記: rootでrmコマンドの問題 7

日記 by Sukoya

いろいろ思うところはあるが、手動削除禁止とか、実機操作禁止とかいろいろ面倒であります。

近年だと、それ以前の問題ではあるのでありますが……

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 昔スーパーユーザーでrm -fr /してしまったことがあり、(/bin/lsも消えたので)シェル組込みのechoコマンドにてそのときの結果をみたところ
    /etc/init (いまどきなら/sbin/initなのかな)
    /bin/sh
    /bin/rm
    の3ファイルとその親ディレクトリーだけ残った記憶が。
    --
    iida
    • by Sukoya (33993) on 2014年08月06日 13時13分 (#2652145) 日記

      流石に自分自身までは消せないらしく。
      稼働中プロセスは消せなくて、中途半端にファイルを削除されてしまって問題が後から発覚するパターンもあったりするでありますね……

      親コメント
      • UNIX系の(inode系の)ファイルシステムだと、オープンしているファイルも消せたかと。
        inodeと参照カウントで管理しているので、「ディレクトリエントリ」は消えても「オープンしているファイルディスクリプタからの参照」は残っているので特に問題なく、
        ファイルをクローズした時点で、参照カウントが0になって完全開放されます。だから、

        % cp /bin/sh . ; ./sh -c '\
            ./sh -c "ls ./sh"; \
            rm -f ./sh; \
            ./sh -c "ls ./sh"; \
            echo ./sh is deleted\
        '
        ./sh
        ./sh: not found
        ./sh is deleted

        ぐらいのことはできます。

        プログラムのバージョンアップでファイルを削除してから新バージョンをコピーすると、稼働中の旧バージョンは何事も無かったかのように動き続ける、というのは結構便利。これのおかげで、Windowsのような「バージョンアップ時に再起動が必要」ってことには滅多にならない。

        #実は現在進行形で、GNU screen をバージョンアップしたらセッションの互換性がなくなって困ってるとこだったり。
        #しかたなく、バージョンアップ前から立ち上げていた、今はプログラムファイルの存在しない旧版screenを、立ち上げたままずっと使い続けてます@FreeBSD。

        親コメント
      • by Anonymous Coward

        YouTubeにコマンドを走らせてみた動画を最近見ました。
        メインメモリ(RAM)上にあるプロセスは動いているけど、どこをクリックしても無反応とかありますね。

    • by Anonymous Coward

      ちなみに最近の rm コマンドだと
      --no-preserve-root を付けないと期待した動作をしてくれません.

      • by Anonymous Coward

        何その GNU 限定な話は?

typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...