ファイルの権限とその変更方法について
どうもこんにちは。
プラコレ新卒ぴよぴよエンジニアのkoです。
最近は、任せてもらえるものも増え、理解不能なことも爆発的に増えてきました。その中でも今回は、ファイルの権限についてお話しできればなと思います。
パーミッションとは?
Lunixのようなシステムでは、ファイルやディレクトリ一つ一つに許可を与えて管理できるようになっています。そのことを「パーミッション」と言います。
Linuxを始めとしたUnixLikeSystemではファイルやディレクトリ一個一個に許可属性を与え、管理出来るようになっている。これを「パーミッション」といいます。
ファイルに書かれているスクリプトを実行しようとするとき
たまに、次のようなエラーが出ることがあります。
1 2 |
~/a/b/cde ❯❯❯ ./hello.sh zsh: permission denied: ./hello.sh |
「権限がありません」とでますが、これが実行権限の与えられていない状態です。
パーミッションの確認
ディレクトリの中身を確認するls
に-la
オプションをつけて
ファイルの権限を確認できます。
1 |
❯❯❯ ls -la |
すると、次のようにファイルやディレクトの中身が
細かく表示されます。
1 2 3 |
drwxr-xr-x 3 ko staff 96 3 10 06:02 . drwxr-xr-x 11 ko staff 352 2 27 07:46 hello.php -rw-r--r-- 1 ko staff 22 3 10 05:59 hello.sh |
これは、現在いるディレクトリ内にあるもの全てのリストとその権限の状態についての内容です。
次に、内容を細かく見ていきます。
パーミッションの読み方
権限についての説明がなされているのが一番最初のアルファベット10桁の部分です。
1 2 3 4 |
一文字目 → ファイルなのかディレクトリなのか 二〜四文字 → 所有者の権限 五〜七文字 → 所有グループの権限 八〜十文字 → 所有グループ以外の権限 |
-rw-r--r--
だと
種別が「ファイル」であり
所有者が「読み書き」
所有グループが「読み」
それ以外が「読み」
ができる、といった状態です。
パーミッションの変更
1 |
❯❯❯ chmod 744 hello.sh |
このchmod
(チェンジモード)と呼ばれるコマンドを叩きます。
744
は変更内容を表しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
❯❯❯ ls -la drwxr-xr-x 3 koutamakin staff 96 3 10 06:02 . drwxr-xr-x 11 koutamakin staff 352 2 27 07:46 .. -rw-r--r-- 1 koutamakin staff 22 3 10 05:59 hello.sh ❯❯❯ chmod 744 hello.sh ❯❯❯ ls -la drwxr-xr-x 3 koutamakin staff 96 3 10 06:02 . drwxr-xr-x 11 koutamakin staff 352 2 27 07:46 .. -rwxr--r-- 1 koutamakin staff 22 3 10 05:59 hello.sh |
変更して、再度パーミッションの確認を行うと
四文字目が-
からx
に変わりました。
これがモードです。
モード(数字) | モード(英語) | 権限 |
---|---|---|
4 | r | 読み |
2 | w | 書き |
1 | x | 実行 |
上の合計値で、何が許されているかわかります。
「7」は4+2+1なので上記の「読み」「書き」「実行」全てができる状態でrwx
「6」は4+2なので、「読み」「書き」ができる状態でrw-
「4」は4だけ、つまり「読み」r--
というように表現されます。
改めて権限の変更コマンド
1 |
❯❯❯ chmod (数字三つ) (ファイル名) |
で権限を変更することができ、三桁の数字に関しては
「所有者」「所有グループ」「それ以外」の順で与えたい権限を数字で書きます。
おしまい!