Linux の権限を確認する
ファイルを実行しようとするとき
たまに、次のようなエラーが出ることがあります。
~/a/b/cde ❯❯❯ ./hello.sh zsh: permission denied: ./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 .. -rw-r--r-- 1 koutamakin staff 22 3 10 05:59 hello.sh
これは、現在いるディレクトリ内にあるもの全てのリストとその権限の状態についての内容です。
より細かいls
コマンドって感じですかね。
パーミッションの読み方
-rw-r--r-- 1 koutamakin staff 22 3 10 05:59 hello.sh
hello.sh の前に謎の10桁のアルファベットの羅列があります。
これがパーミッションです。
それぞれの桁ごとに所有者・ 所有グループ・それ以外のユーザーを表しています。
一文字目 → ファイルなのかディレクトリなのか 二〜四文字 → 所有者の権限 五〜七文字 → 所有グループの権限 八〜十文字 → 所有グループ以外の権限
-rw-r--r--
だと
種別が「ファイル」であり
所有者が「読み書き」
所有グループが「読み」
それ以外が「読み」
ができる、といった状態です。
パーミッションの変更
❯❯❯ chmod 744 hello.sh
このchmod
(チェンジモード)と呼ばれるコマンドを叩きます。
744
は変更内容を表しています。
❯❯❯ 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--
というように表現されます。
改めて権限の変更コマンド
❯❯❯ chmod (数字三つ) (ファイル名)
で権限を変更することができ、三桁の数字に関しては
「所有者」「所有グループ」「それ以外」の順で与えたい権限を数字で書きます。
下の記事参考にさせていただきました。
ありがとうございます!!!!
:wq
qiita.com