ファイルにまつわる情報 [ファイル操作・管理]
さて。
開始早々viの使い方を説明した。慣れない内は相当苦戦すると思うので、出来るだけ積極的に使って慣れるようにしておいてほしい。
では、いよいよ本題に進むことにする。
「サーバ管理者」の役割ってなんですか?
という問いかけを突き詰めると、「ファイルを管理することですよ」と答えることができるかもしれない。まあ、他にも
・ユーザーアカウントの管理
・プロセスの管理
・OSやアプリケーション(ミドルウェア・デーモンプロセス)の管理
・ハードウェア・ディスクの管理
とかいろいろ挙げられるけども、もっとも大きなウェイトを占めるのは「ファイルの管理」ではないかと思う。つまり、この「ファイルの管理」という役割を果たすために必要な操作、つまり「ファイルの操作」の知識はサーバ管理者として最も重要な知識であると言っても過言ではない。
よって、まず最初にこの「ファイルの操作」についてみっちり覚えてもらわなければならない。
1.ファイルにまつわる情報~lsコマンドで確認できること~
それでは、サーバにログインしたら、ターミナルから「ls -la」とコマンドを実行してもらいたい。
こんな内容が表示されたのではないかと思う。表示される情報はもっと多かったり少なかったりするかもしれないが、とりあえず数行表示されればOK。
各行ではなく、各カラムごとに注目してみよう。
まず、一番左側(各行の最初のカラム)の固まりから。
「drwx------」とか、「-rw-------」とか、「-rw-r--r--」とか、「-rw-rw-r--」とかいう表示が見える。この部分は、「ファイルのモード・権限情報」を記号で表している部分。この表示内容によって、
・それはファイルですか?ディレクトリですか?
・そのファイルを読める人は誰ですか?書き込める人は誰ですか?
というような情報を読み取ることができるようになる。
空白を置いてから、数字がポロッとある。上記の表示例では「2」とか「3」とか「1」とか出ている部分。これは、「リンク数」という情報を示している。「リンク」については別途アーティクルを改めて紹介するので、今はそれほど気にしなくても良い。
さらに空白を置いてから表示されているのは、「ファイルの所有者」である。このファイルの持ち主がここでわかる。
上記の表示例では、同じ名前が2回続けて表示されているが、最初のもの(左側のもの)が今紹介した「ファイルの所有者」で、その後(右側)に表示されているのが「グループ名」である。今はアカウント名(所有者名)とグループ名が同一のものになっているが、サーバ管理者の管理ポリシーによってはグループ名は他の表示になっているかもしれない。
空白を置いてからさらに表示されているのは、「ファイルのサイズ(バイト数)」である。ファイルの大きさがここでわかるのである。
サイズの後ろには、そのファイルの「タイムスタンプ」が表示される。「タイムスタンプ」とは、そのファイルが作成されたり、最後に更新されたりした日時のことである。
そして、空白を置いて最後に表示されているのは「ファイルの名前」である。これは見れば判ると思うが。
2.ファイルのモードと権限の情報について~いわゆる「パーミッション」~
lsコマンドでざっとファイルの状態を見てもらったが、先ほどの表示内容の中でとても重要な情報として「ファイルのモード・権限情報」が挙げられる。この部分の読み方をきちんと覚えてもらう必要がある。
まず、先頭の1文字と、後ろの9文字とに分けることができる。色分けするとこんな感じ。
「-rw-r--r--」
先頭の1文字(上記表示例で赤い部分)は、ファイルのモードをあらわしている。
ごく普通のファイル…-
ディレクトリ…d
リンクファイル…l
ブロックデバイス…b
キャラクタデバイス…c
ざっとこんな感じになっている。多いのは「-」「d」「l」くらいか。
先ほどのlsコマンド実行例の場合、最初の2行「.」と「..」だけこの部分が「d」と表示されていた。これによって、「.」と「..」はディレクトリであることがわかる。
続く9文字の部分(上記表示例で青い部分)は、そのファイル(やディレクトリやリンクファイル…)に対するアクセスの許可情報をあらわしている。この9文字の部分は、さらに3文字ずつ3分割して見る必要がある。
「rw-r--r--」
最初の3文字(青い部分)は、ファイルの持ち主に許されたファイルへのアクセス権限である。続く3文字(緑色の部分)は、ファイルのグループ名表示と同じグループに所属する人に許されたファイルへのアクセス権限である。そして最後の3文字(ピンク色の部分)は、アカの他人に許されたファイルへのアクセス権限となっている。
そして、それぞれの人が何を出来るのか…という情報がこの3文字に込められている。
この3文字の中に登場する情報としては、
そのファイルを読める…r
そのファイルに書き込める…w
そのファイルを「実行」できる…x
という意味がある。
たとえば3文字の表示が「r--」だった場合、その人はそのファイルに対して
・そのファイルを読める
・そのファイルには書き込めない
・そのファイルは実行できない
という許可情報を持っていることになるし、「rw-」だった場合は、その人はそのファイルに対して
・そのファイルを読める
・そのファイルに書き込める
・そのファイルは実行できない
という許可情報を持っていることになる。「---」だった場合は、その人はそのファイルに対して
・そのファイルは読めない
・そのファイルには書き込めない
・そのファイルは実行できない
と、要するに「アクセス禁止」状態にあることになる。
ところで、「実行できる」とか「実行できない」とか何なんだろうか?
これは、そのファイルが「実行可能ファイル」という形式のファイル、または「シェルスクリプト」とか「perlスクリプト」とかいった、何らかのプログラムされたファイルである場合に意味を持つ。
UNIX/Linuxの場合、多くのコマンドはこうした「実行可能ファイル」の形式で提供されている。OSはこれを読み込んでメモリの上に展開し、それを実行することで様々な機能を提供している。たとえば今回使った「ls」コマンドも、前回使った「vi」コマンド、そしてその前に使った「passwd」コマンドなども全て「実行可能ファイル」の形式で提供されている。
1行目のlsコマンドは許可情報が「rwxr-xr-x」と表示されている。「x」が付いているので、コマンドとして実行できるファイルであることがわかる。viもpasswdも同様。(passwdには見慣れない「s」が付いているが、今は気にしないように)
一方で、前アーティクルまででviの練習で使用していた「lesson1.txt」というファイルはというと…
これはごく普通のファイルなので(コマンドではないので)「x」がそもそも付いていない。よって、「ls」とか「vi」とかのようにコマンドとして入力しても実行されないのである。
このように、「実行権が無い」のでエラーになってしまう。
許可情報の部分的な見方がわかったところで、おさらいしてみよう。
「-rw------- 1 piro791 piro791 149 1月 15 19:24 .bash_history」
このファイルは、
・piro791さん(所有者)は読める / 書き込める / 実行はできない
・piro791グループに所属するpiro791さん(所有者)以外の人は、読めない / 書き込めない / 実行できない
・その他の人は、読めない / 書き込めない / 実行できない
ということが判る。要するに、piro791さん(所有者)だけがアクセスできるファイルですよ…ということ。
「-rw-r--r-- 1 piro791 piro791 124 1月 6 12:46 .bashrc」
このファイルは、
・piro791さん(所有者)は読める / 書き込める / 実行はできない
・piro791グループに所属するpiro791さん(所有者)以外の人は、読める / 書き込めない / 実行できない
・その他の人は、読める / 書き込めない / 実行できない
ということに。要するに、誰でも読めるが書き込めるのはpiro791さん(所有者)だけよ…ということ。
「-rwxr-xr-x 1 root root 95116 10月 27 11:12 /bin/ls」
このファイルは、
・rootさん(所有者)は読める / 書き込める / 実行できる
・rootグループに所属するrootさん(所有者)以外の人は、読める / 書き込めない / 実行できる
・その他の人は、読める / 書き込めない / 実行できる
ということに。まあ、lsコマンドそのものなので、誰でも実行できる(実行するためには読み取れる必要がある)けど、変更できるのはrootさん(所有者)だけよ…ということ。
コマンドのファイルを知らない人に書きかえられちゃうととんでもないことになるからね!!
開始早々viの使い方を説明した。慣れない内は相当苦戦すると思うので、出来るだけ積極的に使って慣れるようにしておいてほしい。
では、いよいよ本題に進むことにする。
「サーバ管理者」の役割ってなんですか?
という問いかけを突き詰めると、「ファイルを管理することですよ」と答えることができるかもしれない。まあ、他にも
・ユーザーアカウントの管理
・プロセスの管理
・OSやアプリケーション(ミドルウェア・デーモンプロセス)の管理
・ハードウェア・ディスクの管理
とかいろいろ挙げられるけども、もっとも大きなウェイトを占めるのは「ファイルの管理」ではないかと思う。つまり、この「ファイルの管理」という役割を果たすために必要な操作、つまり「ファイルの操作」の知識はサーバ管理者として最も重要な知識であると言っても過言ではない。
よって、まず最初にこの「ファイルの操作」についてみっちり覚えてもらわなければならない。
1.ファイルにまつわる情報~lsコマンドで確認できること~
それでは、サーバにログインしたら、ターミナルから「ls -la」とコマンドを実行してもらいたい。
[piro791@kagami ~]$ ls -la 合計 36 drwx------ 2 piro791 piro791 4096 1月 15 15:14 . drwxr-xr-x 3 root root 4096 1月 6 12:46 .. -rw------- 1 piro791 piro791 149 1月 15 19:24 .bash_history -rw-r--r-- 1 piro791 piro791 33 1月 6 12:46 .bash_logout -rw-r--r-- 1 piro791 piro791 176 1月 6 12:46 .bash_profile -rw-r--r-- 1 piro791 piro791 124 1月 6 12:46 .bashrc -rw-rw-r-- 1 piro791 piro791 7 1月 15 13:02 hoge -rw-rw-r-- 1 piro791 piro791 7 1月 15 15:14 lesson1.txt
こんな内容が表示されたのではないかと思う。表示される情報はもっと多かったり少なかったりするかもしれないが、とりあえず数行表示されればOK。
各行ではなく、各カラムごとに注目してみよう。
まず、一番左側(各行の最初のカラム)の固まりから。
「drwx------」とか、「-rw-------」とか、「-rw-r--r--」とか、「-rw-rw-r--」とかいう表示が見える。この部分は、「ファイルのモード・権限情報」を記号で表している部分。この表示内容によって、
・それはファイルですか?ディレクトリですか?
・そのファイルを読める人は誰ですか?書き込める人は誰ですか?
というような情報を読み取ることができるようになる。
空白を置いてから、数字がポロッとある。上記の表示例では「2」とか「3」とか「1」とか出ている部分。これは、「リンク数」という情報を示している。「リンク」については別途アーティクルを改めて紹介するので、今はそれほど気にしなくても良い。
さらに空白を置いてから表示されているのは、「ファイルの所有者」である。このファイルの持ち主がここでわかる。
上記の表示例では、同じ名前が2回続けて表示されているが、最初のもの(左側のもの)が今紹介した「ファイルの所有者」で、その後(右側)に表示されているのが「グループ名」である。今はアカウント名(所有者名)とグループ名が同一のものになっているが、サーバ管理者の管理ポリシーによってはグループ名は他の表示になっているかもしれない。
空白を置いてからさらに表示されているのは、「ファイルのサイズ(バイト数)」である。ファイルの大きさがここでわかるのである。
サイズの後ろには、そのファイルの「タイムスタンプ」が表示される。「タイムスタンプ」とは、そのファイルが作成されたり、最後に更新されたりした日時のことである。
そして、空白を置いて最後に表示されているのは「ファイルの名前」である。これは見れば判ると思うが。
2.ファイルのモードと権限の情報について~いわゆる「パーミッション」~
lsコマンドでざっとファイルの状態を見てもらったが、先ほどの表示内容の中でとても重要な情報として「ファイルのモード・権限情報」が挙げられる。この部分の読み方をきちんと覚えてもらう必要がある。
まず、先頭の1文字と、後ろの9文字とに分けることができる。色分けするとこんな感じ。
「-rw-r--r--」
先頭の1文字(上記表示例で赤い部分)は、ファイルのモードをあらわしている。
ごく普通のファイル…-
ディレクトリ…d
リンクファイル…l
ブロックデバイス…b
キャラクタデバイス…c
ざっとこんな感じになっている。多いのは「-」「d」「l」くらいか。
先ほどのlsコマンド実行例の場合、最初の2行「.」と「..」だけこの部分が「d」と表示されていた。これによって、「.」と「..」はディレクトリであることがわかる。
続く9文字の部分(上記表示例で青い部分)は、そのファイル(やディレクトリやリンクファイル…)に対するアクセスの許可情報をあらわしている。この9文字の部分は、さらに3文字ずつ3分割して見る必要がある。
「rw-r--r--」
最初の3文字(青い部分)は、ファイルの持ち主に許されたファイルへのアクセス権限である。続く3文字(緑色の部分)は、ファイルのグループ名表示と同じグループに所属する人に許されたファイルへのアクセス権限である。そして最後の3文字(ピンク色の部分)は、アカの他人に許されたファイルへのアクセス権限となっている。
そして、それぞれの人が何を出来るのか…という情報がこの3文字に込められている。
この3文字の中に登場する情報としては、
そのファイルを読める…r
そのファイルに書き込める…w
そのファイルを「実行」できる…x
という意味がある。
たとえば3文字の表示が「r--」だった場合、その人はそのファイルに対して
・そのファイルを読める
・そのファイルには書き込めない
・そのファイルは実行できない
という許可情報を持っていることになるし、「rw-」だった場合は、その人はそのファイルに対して
・そのファイルを読める
・そのファイルに書き込める
・そのファイルは実行できない
という許可情報を持っていることになる。「---」だった場合は、その人はそのファイルに対して
・そのファイルは読めない
・そのファイルには書き込めない
・そのファイルは実行できない
と、要するに「アクセス禁止」状態にあることになる。
ところで、「実行できる」とか「実行できない」とか何なんだろうか?
これは、そのファイルが「実行可能ファイル」という形式のファイル、または「シェルスクリプト」とか「perlスクリプト」とかいった、何らかのプログラムされたファイルである場合に意味を持つ。
UNIX/Linuxの場合、多くのコマンドはこうした「実行可能ファイル」の形式で提供されている。OSはこれを読み込んでメモリの上に展開し、それを実行することで様々な機能を提供している。たとえば今回使った「ls」コマンドも、前回使った「vi」コマンド、そしてその前に使った「passwd」コマンドなども全て「実行可能ファイル」の形式で提供されている。
-rwxr-xr-x 1 root root 95116 10月 27 11:12 /bin/ls -rwxr-xr-x 1 root root 594740 9月 20 06:24 /bin/vi -rwsr-xr-x 1 root root 22984 1月 7 2007 /usr/bin/passwd
1行目のlsコマンドは許可情報が「rwxr-xr-x」と表示されている。「x」が付いているので、コマンドとして実行できるファイルであることがわかる。viもpasswdも同様。(passwdには見慣れない「s」が付いているが、今は気にしないように)
一方で、前アーティクルまででviの練習で使用していた「lesson1.txt」というファイルはというと…
-rw-rw-r-- 1 piro791 piro791 7 1月 15 15:14 lesson1.txt
これはごく普通のファイルなので(コマンドではないので)「x」がそもそも付いていない。よって、「ls」とか「vi」とかのようにコマンドとして入力しても実行されないのである。
[piro791@kagami ~]$ ./lesson1.txt -bash: ./lesson1.txt: 許可がありません
このように、「実行権が無い」のでエラーになってしまう。
許可情報の部分的な見方がわかったところで、おさらいしてみよう。
「-rw------- 1 piro791 piro791 149 1月 15 19:24 .bash_history」
このファイルは、
・piro791さん(所有者)は読める / 書き込める / 実行はできない
・piro791グループに所属するpiro791さん(所有者)以外の人は、読めない / 書き込めない / 実行できない
・その他の人は、読めない / 書き込めない / 実行できない
ということが判る。要するに、piro791さん(所有者)だけがアクセスできるファイルですよ…ということ。
「-rw-r--r-- 1 piro791 piro791 124 1月 6 12:46 .bashrc」
このファイルは、
・piro791さん(所有者)は読める / 書き込める / 実行はできない
・piro791グループに所属するpiro791さん(所有者)以外の人は、読める / 書き込めない / 実行できない
・その他の人は、読める / 書き込めない / 実行できない
ということに。要するに、誰でも読めるが書き込めるのはpiro791さん(所有者)だけよ…ということ。
「-rwxr-xr-x 1 root root 95116 10月 27 11:12 /bin/ls」
このファイルは、
・rootさん(所有者)は読める / 書き込める / 実行できる
・rootグループに所属するrootさん(所有者)以外の人は、読める / 書き込めない / 実行できる
・その他の人は、読める / 書き込めない / 実行できる
ということに。まあ、lsコマンドそのものなので、誰でも実行できる(実行するためには読み取れる必要がある)けど、変更できるのはrootさん(所有者)だけよ…ということ。
コマンドのファイルを知らない人に書きかえられちゃうととんでもないことになるからね!!
コメント 0