tamakipedia

フロントエンドエンジニア。Typescriptもう特訓中です。一日の振り返りや学んだことをちょっとずつ吐いています。

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