パーミッションの変更方法とパスの通し方。覚えておきたいUNIXコマンド

パーミッションの変更方法とパスの通し方。覚えておきたいUNIXコマンド
この記事はこんな悩みを解決します
  • パーミッションの変更方法が知りたい
  • パーミッションって何?
  • パスの通し方が知りたい

ファイルの読み込みや編集、実行を行う際にはアクセス権限が付与されていなければなりません。この権限のことをパーミッションと言います。プログラミングをする上で様々な場面で使うことになるので覚えておきましょう。

この記事を読むことでパーミッションの変更方法が分かります。

パーミッションの変更方法とパスの通し方。覚えておきたいUNIXコマンド

パーミッションとはセキュリティや誤動作を最小限にするために必要な設定です。これを適切に設定できていないとプログラムがうまく動かなかったり、取り返しのつかないミスになるなどトラブルの原因となります。

まずばパーミッションの確認方法を紹介します。

パーミッションの確認方法

下記のコマンドにより各ファイルのパーミッションが確認できます。

ls -l

これにより下記のようなメッセージが出ると思います。
一番右にファイルやディレクトリの名前が書いてあり、それに対するパーミッションやユーザー名、グループ名が左側に書かれています。
数字に関しては無視で構いません。

mbp:sample user$ ls -l
total 8
drwxr-xr-x  3 user  staff   96  6 22 22:12 sample1
drwxr-xr-x  4 user  staff  128  6 22 21:48 sample2
--w-r--r--  1 user  staff   60  6 23 21:41 test1

最初の drwxr-xr-x の部分がアクセス権を示しています。最初の文字が d の場合はディレクトリを示しています。- の場合はファイルを示しています。

次に rwxr-xr-x の部分ですが、これは rwx 、 r-x 、 r-x に分けられます。

  • rwx は u(ser) に対する権限(今回はuser)
  • r-x は g(roup) に対する権限(今回はstaff)
  • r-x は o(ther) に対する権限(その他)

また、rwxのそれぞれの意味は下記のようになります。

  • r;read 読み込み可能
  • w;write 書き込み可能
  • x;execute 実行可能

drwxr-xr-x 3 user staff 96 6 22 22:12 sample1 の場合
sample1というディレクトリにuserのユーザーが読み書き実行可能、staffのグループとその他の人はが読みと実行が可能ということを表しています。

パーミッションの変更方法

パーミッションの変更にはchmodというコマンドを使います。

chmod (u,g,o)+(r,w,x) ファイル名

パーミッションがないと下記のようなメッセージが出ます。

mbp:sample user$ cat test1
cat: test1: Permission denied

そのため、読み込みの権限を追加してあげます。

mbp:sample user$ ls -l test1
--w-r--r--  1 user  staff   60  6 23 21:41 test1
mbp:sample user$ chmod u+r test1 //ユーザーにread権限を付与
mbp:sample user$ ls -l test1
-rw-r--r--  1 user  staff  60  6 23 21:41 test1

userの権限に r が追加されました。
これによりtest1が読み込めるようになります。

mbp:sample user$ cat test1
hello,hello,hello,hello,hello,hello,hello,hello,hello,hello

パーミッションを数値で理解する

パーミッションは記号ではなく数値で用いられることもよくあります。

rwxに対してr に4、w に2、x に1を割り当てます。それらを合計し3桁の数字で表します。
例えば、rwxr-xr-x は 755、rwxrw-r– は 764となります。

実際にパーミッションを変更するときには下記のような使い方になります。

mbp:sample user$ ls -l test1
-rw-r--r--  1 user  staff  60  6 23 21:41 test1
mbp:sample user$ chmod 744 test1
mbp:sample user$ ls -l test1
-rwxr--r--  1 user  staff  60  6 23 21:41 test1

userに読み書き実行の権限(rwx)がついたのが分かります。

ユーザーとグループの変更

パーミッションを許可しているユーザーとグループを変更する chownコマンドもあります。

sudo chown ユーザー名:グループ名 ファイル名

これによりファイルの権限が与えられてたユーザーやグループを変更できます。ただ、sudoは強力なコマンドなので気をつけて使用するようにしましょう。

パーミッションの例

では、実際にパーミッションをどのように使うか簡単な例を見ていきましょう。

helloというファイルを使ってhelloというメッセージを表示させていきます。
まずはhelloというメッセージのファイルを作ります。

mbp:sample user$ vim hello

今回はbashを使うので下記のように編集します。(bash はシェルのようなものでコマンドとコンピューターの仲介をしてくれます。ざっくりとした説明ですが。)

#!/bin/bash
echo "hello"
~                                                                               
~                                                                               
~                                                                               
"hello" 2L, 25C

:wq で上書き保存して終了します。

ファイルの情報を見ると実行権限が付与されていないのが分かります。

mbp:sample user$ ls -l hello
-rw-r--r--  1 user  staff   25  6 24 20:28 hello

実行権限を付与します。

mbp:sample user$ chmod 744 hello
mbp:sample user$ ls -l hello
-rwxr--r--  1 user  staff  25  6 24 20:39 hello

実行権限が付与されました。
では、このファイルを使ってみます。

mbp:sample user$ ./hello // ./は現在のディレクトリを意味します。
hello

無事に実行できました。
しかし、./ でディレクトリを指定しなければならず、面倒臭いです。
どこからでも使えるようにPATHを通すやり方も見ていきます。

PATHの通し方

まず、このままではhelloが実行できないことを確認します。

mbp:sample user$ hello
-bash: hello: command not found

コマンドが見つからない、というメッセージが出たのでパスを通していきます。

まず、現在地を調べます。

mbp:sample user$ pwd
/Users/user/sample

コマンドを検索している場所を調べます。

mbp:sample user$ echo $PATH

:(コロン)で区切られた中に現在地があるか見ていきます。
ないと思うのでPATHに現在地を登録していきます。

sudo vim /etc/paths

PATHの一覧が表示されるので「i」で編集モードにして最後に現在地を入力します。「esc」でコマンドモードに切り替えて:wq で終了します。

うまくいかない場合は下記のコマンドもあります。
export PATH=現在地:$PATH

export PATH=/Users/user/sample:$PATH

これでパスが通るので hello が使えるようになります。

mbp:sample user$ hello
hello

うまく動きましたね。

まとめ

今回はファイルやフォルダのパーミッションの変更方法やパスの通し方を紹介しました。

プログラミングを始める時に権限を変更したり、パスを通したりすることがあります。焦らずに落ち着いて問題が起こった場合にはこの記事を思い出して貰えたらと思います。

関連記事