Linuxシェルコマンド入門その5(アクセス権限とは?)
こんばんは(^^)♪すこーし更新が遅くなりましたが、今日はファイルやディレクトリのアクセス権限のお話です!いきなり「アクセス権限」というむずかしそうな言葉が出てきましたが、これはいったい何でしょうか?例えば、その2で紹介した「cd」を使っても入れないディレクトリがあったり、その1で紹介した「ls」でも中身が見られないディレクトリがあったりします。(^^;)これは、そのディレクトリに「アクセス権限が無いので見られない」ということです。しかし、この権限をほぼ全て与えられているユーザーがいます。それが「root」ユーザーです!(^^)その3の管理者権限でシェル操作でも書きましたが、rootユーザーは何でも出来てしまうので、いつでもrootで操作すればアクセス権限なんて考えなくても良いのに!という考え方もあります。自分一人で使うLinuxでは、それもありかもしれませんが、そこには大きな危険が伴います。例えば、Linuxで滅びの呪文と言われている「rm -rf /」はLinux上にある全てのファイルを消しに行くことで有名です。「rm」は「remove」の略で、取り除くという意味で、「-r」オプションは、その4でも説明しましたが「recursive」(再帰的)という意味で「/」ディレクトリ以下のファイルを全てということになります。その後ろの「f」オプションは「force」(強制する)という意味で、「ファイルを削除しますか?」という質問に全て強制的にYesで答えるということになります。(ちなみに、「-r -f」のようにオプションを2つ付けるときに「-rf」とまとめて書くことが出来ます。)そうすると、Linuxのファイルやディレクトリは全てルートフォルダ「/」の下にありますので、理論上全てのファイルを消しに行ってくれます。(^^;)まあ、最近はこれを防止するために「--no-preserve-root」というオプションを付けないと、実行できなくなっていますので、「rm -rf /*」としないと本当には滅びませんが、こんな危険なコマンドもrootではアクセス権限に関係なく実行できてしまいます。実際に、私が二十数年前に最初にLinuxを古いPCにインストールしたときは、root権限が自由に使えるのがうれしくて全てrootユーザーで操作していましたが、途中で変な操作をしてあっさり動かなくなってしまったということがあります。ですので、必要なとき以外は、システムファイルや設定ファイルを変更できない「一般ユーザー」で操作することを強くオススメします。(^^;)さて、非常に前置きが長くなってしまいましたが、アクセス権限を変更するコマンドは何でしょうか?ヒントは「change mode」の略です。↓↓↓↓↓↓↓↓↓↓↓答えはchmodです!(^^)「change directory」のときは「cd」でしたが、「change mode」は「ch」+「mod」で「chmod」なので「cmじゃないの?」と思った方も多かったかもしれませんね。(「change」を「ch」と略すコマンドは他にも結構たくさんあります。)さて「アクセス権限」を変更するコマンドは分かりましたが、そもそもLinuxの「アクセス権限」はどうなっているのでしょうか?実は「ls -l」コマンドを使うと左側にアクセス権限が表示されていますので、ここで確認することが出来ます。一番左の「d」は「ディレクトリです」という意味ですが、その後の「rwxr-xr-x」というのが、このディレクトリのアクセス権限です。この文字列は3つに分かれていて、それぞれが「r」(読み取り)と「w」(書き込み)と「x」(実行)の意味をもっています。最初の「rwx」はファイルの所有者は「読み取り」も「書き込み」も「実行」も許可されているという意味になります。2番めの「r-x」はファイルの所有グループと同じグループに所属しているユーザーは「読み取り」と「実行」が許可されていて、真ん中の「w」のところが「-」になっているのは、「書き込み」は許可されていないということになります。3番めの「r-w」は所有者でもなくて、グループも違うユーザーは「読み取り」と「実行」が許可されているという意味になります。真ん中にあたりにある「tutumikun tutumikun」は、左が所有者(そのファイルやディレクトリを所有しているユーザー)で、右側が所有グループ(そのファイルやディレクトリを所有しているグループ)になります。これらの組み合わせで、誰がどんなアクセス権限を持っているかを表せるようになっています。(^^)ちなみに、一番下の「test.txt」はアクセス権限が「rw-r--r--」になっていますので、所有者(tutumikunユーザー)は「読み取り」と「書き込み」、所有グループ(tutumikunグループ)は「読み取り」、その他の人は「読み取り」が許可されてるということになります。では、このアクセス権を変更してみましょう。例えば、所有グループ(group)に「書き込み(w)」を許可する場合は、「chmod g+w test.txt」とします。g(グループ)にw(書き込み)を+(許可)するという意味ですね。↑所有グループ(真ん中)に「w」が追加されましたね。(^^)♪ちなみに、許可を取り消すのは「+」を「-」にすれば良いので、例えば、その他の人(other)から「読み取り(r)」ができなくするには、「chmod o-r test.txt」とします。↑その他の人(右側)の「r」が消えました。所有者(所有ユーザー)(user)の権限を帰る場合は、「u」を使いますが、これを1つずつ変更するのは少し面倒ですよね。そこで、数字で一気に変更するということも出来ます。(^^)「r」を「4」、「w」を「2」、「x」を「1」という数字にして、そのそれぞれの合計で3桁の数字を作ります。rwx rwx rwx421 421 421 ↓ 7 7 7そうすると、この数字を直接指定して、「chown 777 test.txt」のように一気に変更することが出来てしまいます。rw- r-- ---42 4 ↓ 6 4 0という感じで、好きなアクセス権限に自由に変更することができます。最後にアクセス権限の意味ですが、これはファイルとディレクトリで少し違います。【ファイルの場合】「読み取り(r)」はファイルの中身を読み取ることができるか(readable)「書き込み(w)」はファイルの中身を書き換えることができるか(writable)「実行(x)」はファイルを実行することができるか(executable)【ディレクトリの場合】「読み取り(r)」はディレクトリのリスト表示ができるか(readable)「書き込み(w)」はディレクトリの中にファイルやディレクトリを作れるか(writable)「実行(x)」はディレクトリの中に移動できるか(executable)このように、必要なアクセス権を設定して、ファイルやディレクトリを間違って書き換えたり、他の人から見られたりしないように管理してみましょう。(^^)/「Linuxシェルコマンド入門その1(ファイルやディレクトリの一覧)」へ 「Linuxシェルコマンド入門その4(ファイルやディレクトリのコピー)」へ 「つつみくんのLinux記その1」へ