自分メモだけど公開して特に問題のない駄文。
調べた事をメモしてるだけ。
経緯
・昔AWSのEC2上で管理者権限とかについてだいぶ調べた、
・時間もたってだいぶ忘れていたのでrootユーザー権限周りから勉強しようと思った
・この記事読んで rm -r を知った
・rm -r bin をする際にbefore afterを調べたら中身が思いのほか興味深かった
・ついでにdirectory構造含め全部調べたくなった
(Docker でubuntu18.04のイメージ引っ張ってやってるので、ローカルへのダメージはない)
フォルダ構成
/ ディレクトリでls打ったら下記になった。
ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
中身を一つ一つ見てく
ls -a bin
色々入っている。よく見ると ls やmkdir, echo cp など定番の物も見受けられる。
ここによるとbin = binary code らしい。
要はbinaryで書かれたプログラムのリスト。
vimで中身見たかったけど、vim自体がインストールされてないって言われた
ls -a boot
. ..
なんじゃこりゃ?
某所のFHS2.2で規定されたディレクトリによると、
ここは起動に必要なファイルが入っているらしい。
ls -a dev
. .. console core fd full mqueue null ptmx pts random shm stderr stdin stdout tty urandom zero
色々ある。
ここはデバイスファイルが入っているらしい。
ls -a etc
こっちも色々ある。
設定ファイルがあるらしいので、まぁ多くなるよね
ls -a home
. ..
ユーザーのホームディレクトリ。初期は空でいいよね確かに。
ls -a lib
. .. init lsb systemd terminfo udev x86_64-linux-gnu
共有ライブラリがあるらしい。
ls -a lib64
. .. ld-linux-x86-64.so.2
ここも共有ライブラリらしい。
ls -a media
. ..
ls -a mnt
. ..
一時的なマウントポイント
ls -a opt
. ..
追加アプリケーション。そりゃ空だ。
ls -a proc
プロセス情報など
ls -a root
. .. .bashrc .profile
.bashrc と .profileはここにあった!
rootユーザー用のホームディレクトリ
ls -a run
. .. lock mount systemd utmp
ls -a sbin
システム管理用コマンドなど
ls -a srv
. ..
ls -a sys
. .. block bus class dev devices firmware fs hypervisor kernel module power
ls -a tmp
. ..
一時的なファイル
ls -a usr
. .. bin games include lib local sbin share src
各種プログラムなど
ls -a var
. .. backups cache lib local lock log mail opt run spool tmp
変更されるデータ
おまけ ls -a usr/bin
usr/binの方がbinよりコマンド多いね。
おまけ rm bin / rm -r bin
$ rm bin
rm: cannot remove 'bin': Is a directory
$ rm -r bin
$ ls bin
bash: /bin/ls: No such file or directory
$ ls
bash: /bin/ls: No such file or directory
rm bin で削除できなかったフォルダを、
rm -r bin で再帰的(関連する下位ファイルも全部)削除したら、
コマンドの入っているフォルダ削除したんで ls が効かなくなったという話。
みんな! rm -r directory は使わない方が賢明だよ!!!
ちなみに、Docker のコンテナ上でインタラクティブに作業しているので、
別のターミナルから docker stop 使うと、
作業中の画面には exit が出てインタラクティブ解除になります。
やっぱDockerは覚えておくべきだった。
もっとひどい事例はこちら!
このコマンドを試したら、警告が出て記事の通りにならなかった
ちなみに、cd は機能するので、 usr フォルダにも移動できたりする
$ cd usr # これはOK
$ pwd # これもOK
/user
ここによると、どうやらbinに入っている外部コマンドとは別のシェルの機能らしく、
内部コマンド/組み込みコマンドと呼ばれるらしい。
おまけ ls の色の意味
ls -l
を叩くと、以下の様にディレクトリの閲覧権限までが見られる。
その中で、色ついてるディレクトリがあり「これはなんだ?」と思って調べた次第。
--color オプションはあってもなくても結果同じ。
上記の表から一部引用(続きは上記リンクをクリックしてみてください)
この表によると tmp は緑背景/青文字っぽいので「Otherのライトアクセスが可能なディレクトリ」となります。
以上
コメントが書いてないのは、取り合えず用途のわからなかったディレクトリ。
そのうち追記する(かも)。