全2件 (2件中 1-2件目)
1

こんばんは(^^)♪すこーし更新が遅くなりましたが、今日はファイルやディレクトリのアクセス権限のお話です!いきなり「アクセス権限」というむずかしそうな言葉が出てきましたが、これはいったい何でしょうか?例えば、その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」へ
May 22, 2024
コメント(0)

こんにちは(^^)/Windowsやスマホではコマンドではなく、GUI(グラフィカル ユーザー インターフェース:アイコンなどを使ってコマンドを打ち込まずにユーザーが操作できる方法)を使ってファイルの操作をしますね。そして、GUIでファイルやフォルダをコピーするには、一旦コピーしてからペースト(貼り付け)するというのが一般的です。(ドラックアンドドロップもありますが・・・)ところがシェルのコマンドでは、ドロップの必要はなく、コピーコマンドを使うとファイルのコピーが作成できてしまいます。(^^)さて、このファイルやディレクトリをコピーするコマンドは何でしょうか?ヒントはコピーの英語をアルファベット2文字で表します。↓↓↓↓↓↓↓↓↓↓↓答えはcpです!(^^)わずか4文字の「copy」という単語を2文字に短縮してしまうというのは、本気で打ち込む文字数を減らしにかかっていますね。(^^;)「cp」だけでなく今まで出てきたコマンドも、軒並み2文字で表現されているのは、単純にキーボードを打つ回数を減らすという意味だけでなく、昔は今ほど通信スピードが早くなかったので、なるべく通信で送る文字数を減らしたいということで、よく使うコマンドは少ない文字数で表現されていました。(さすがに、インターネットなどの通信で使うことを前提に作られたシェルですね(^^))さて、cpの基本的な使い方ですが、cp 「コピーしたいファイルやフォルダ名」 「コピー先」になります。例えば、「test.txt」というテキストファイルを「Documents」というディレクトリの中に移動するコマンドは、cp test.txt Documents/になります。ところがこのcpコマンド、コピー先はディレクトリでなくても構いません。例えば、「test.txt」と全く同じ内容の「test2.txt」を作りたい場合は、cp test.txt test2.txtとすると、ファイルのコピーが作成できてしまいます。ですから、「test.txt」を「Test」というディレクトリにコピーしようと思って、「Test」ディレクトリがない場合でも、cp test.txt Testとしてしまうと、「test.txt」というテキストファイルと同じ内容の「Test」というテキストファイルが作られてしまいます。(^^;)Linuxのコマンド上では「.txt」のような拡張子は見やすいように付けているだけなので、拡張子の無い「Test」というテキストファイルも普通に作れてしまいます。この場合、ディレクトリ内にコピーしたいという意志を明確にしたい場合は、cp test.txt Test/という風に、ディレクトリ名の最後に「/」を付けましょう。そうすると、もし「Test」というディレクトリが存在しないときは、というように、通常ファイルをディレクトリとしてコピーできないというエラーが出てくれます。(^^)ちなみに、コピーするときの注意点としては、オプションを付けないと所有者やパーミッションは、実行しているユーザーの新しいパーミッションが付けられてしまいます。その上、新しくコピーされたファイルやディレクトリのタイムスタンプもコピーされたときの日時になってしまいますね。そんなときは、「cp -p test.txt Documents/」というふうに「-p」オプションを付けると、元のファイルと同じパーミッションで同じ所有者(rootの場合だけ)で同じタイムスタンプとしてコピーされます。それから、ファイルだけでなくディレクトリも同じようにコピー出来ますね。試しに「mkdir Test」で「Test」というディレクトリを作って、それをコピーしてみます。(mkdirはディレクトリを作るコマンドです。(^^))「cp Test/ Documents/」とすると、「Test」ディレクトリが「Documents」ディレクトリの中にコピーされそうな気がしますが、ディレクトリをコピーするときは「-r」オプションを付けないと駄目みたいです。(^^;)「-r」オプションは、「--recursive」(再帰的)オプションの略で、ディレクトリの中にあるファイルやディレクトリを全てコピーするという意味になります。先程、「test.txt」を「Documents」ディレクトリの中にコピーしましたので、「-r」を付けて「Documents」フォルダをコピーすると、その中の「test.txt」もコピーされましたね。(^^)このように、ファイルやディレクトリをコピーするには「cp」コマンドを使ってください。「ペースト」は必要ありませんよ。(^^)♪それでは、また次回お会いしましょう(^^)/「Linuxシェルコマンド入門その1(ファイルやディレクトリの一覧)」へ 「Linuxシェルコマンド入門その3(管理者権限でシェル操作?)」へ「Linuxシェルコマンド入門その5(アクセス権限とは?)」へ 「つつみくんのLinux記その1」へ
May 5, 2024
コメント(0)
全2件 (2件中 1-2件目)
1

