chmod

ファイルやディレクトリの「読み取り」「書き込み」「実行」の許可を設定します。自 分が作った文章を見られたくない場合だってありますよね。そんな場合に使います。

「ls」で、よく使うオプションとして以下の例を挙げました。

% ls -al
drwx--s--x 23 susaki  teacher   2048 Mar 12 16:21 .
drwxr-sr-x 18 root    daemon     512 Aug 30  2000 ..
-rw-------  1 susaki  teacher   1869 Jul 12  2000 .cshrc
-rw-------  1 susaki  teacher    175 Dec  3  2000 document.txt
-rw-------  1 susaki  teacher   1869 Nov 28  2000 image1.jpg
-rw-------  1 susaki  teacher    512 Jan  9 18:10 program

この場合、「a」と「l」の2つのオプションを使用しています。「a」オプションは、す べてのファイルを表示せよ、という意味で、ただ「ls」と打ち込むだけでは表示されな いファイル、例えば「.cshrc」のようなファイルも表示されます。「l」オプション は、ロングオプションで、詳細な情報も表示されます。具体的には、「document.txt」 を例に挙げると、

-rw-------  1 susaki  teacher    175 Dec  3  2000 document.txt
<--- 1 -->  2 <-3->   <--4-->     5  <--- 6 ----> <--- 7 ---->
  1. パーミッション (1桁目はディレクトリかどうか、2-4、5-7、8-10桁目は、オーナー、グループ、その 他の人々に対するパーミッション:「r」は「読み込み可能」、「w」は「書き込み可 能」を意味し、その他に「x」が「実行可能」を意味する。)
  2. リンク数
  3. オーナー名
  4. オーナーが属するグループ名
  5. バイトサイズ
  6. 更新日時
  7. ファイル名

このパーミッションの設定を、「chmod」で行うわけです。例えば、「document1.txt」 が、同じグループに属するユーザーに対しても読み取り可能にしたいとすると、

% chmod g+r document1.txt

とします。その結果、もう一度「ls -al」を行うと、

-rw-r-----  1 susaki  teacher    175 Dec  3  2000 document1.txt

と、左から5番目の部分に「r」がつきました。これで、同じグループに属するユーザー も「document1.txt」を読み取れるようになりました。

この状態で、逆に同じグループ のユーザーにも読み取られないようにするには、

% chmod g-r document1.txt

とします。その結果、再度「ls -al」を行うと、

-rw-------  1 susaki  teacher    175 Dec  3  2000 document1.txt

と戻ります。ここで、

オーナ。[              :u
同じグループのユーザー:g
その他のユーザ。[      :o

読み取り可能          :r
書き込み可能          :w
実行可能              :x

を表しますので、必要に応じて、上の例の「g」や「r」を変更してください。例えば、 シェルスクリプトを書いた後、「実行可能」なモードにしなくてはなりません。 「process1.csh」というシェルスクリプトを、オーナーだけ実行可能にするため には、

% chmod u+x process1.csh

とします。「ls -al process1.csh」で確認すると、

-rwx------  1 susaki  teacher    239 Sep 16  2000 process1.csh

というように、「x」が表示されます。これを誰でも実行可能にするには、

% chmod a+x process1.csh

とします。これは

% chmod u+x process1.csh
% chmod g+x process1.csh
% chmod o+x process1.csh

と、3回命令するのと同じことで、「a」を使うと楽ができます。この結果を、「ls -al process1.csh」で確認すると、

-rwx--x--x  1 susaki  teacher    239 Sep 16  2000 process1.csh

となるはずです。


[UNIXコマンドのページ] [須崎純一のトップページ]
須崎純一 京都大学大学 工学研究科都市環境工学専攻 環境情報学講座