こんにちは。AWSの勉強するに当たりLinuxも必然的にさわるので学んでいるねこだくさんです。
Linuxを触っているとファイルやディレクトリを実行する際にpermission denied
と怒られることがあります。
権限足りてねーよって意味ですが、その際の解決方法と実行ファイルってなんぞ?ということを勉強してみました。
前回学んだこと
前回はパスの通し方について学びました。
実行ファイルとは
Exacutable File(実行可能ファイル)は内容がプログラムであるファイルのことです。
実行ファイルを開くことでプログラムが実行されます。
Windowsの場合拡張子が.exeとなっているファイルなどを指します。
ファイル権限とは
Linuxではファイルやディレクトリを実行できるかどうかといったことをユーザー単位・権限で管理しています。
これをファイル・ディレクトリの権限と呼んでいます。Permission(ファイル属性)として表現します。
Permissionとな?
所有権として自分・グループ・他人の3つのがあり、権限として読める(Readable)・書ける(Writable)・実行できる(eXecutable)の3つがあります。
所有権
所有者 | 意味 |
---|---|
Owner | 所有者・本人 |
Group | 同じサーバーに所属するユーザー |
Other | それ以外 |
権限
権限 | 数字 | 文字 |
---|---|---|
読み取り | 4 | r |
書き込み | 2 | w |
実行 | 1 | x |
めんどくさいので数字の組み合わせで表現してます。
Permission確認
ls -l
コマンドを使用します。設定されている場合ll
でも確認可能です。
仮想環境Envaderで実施してみます。
$ ls -l
total 1900
-rwxr-xr-x 1 envader envader 1941911 9月 28 2021 run1
-rwxr-xr-x
一番左がファイルの種類を表し、以降3桁ごとにユーザー、グループ、その他の権限を表しています。
数字で表すと755
となります。
つまりこのrun1というファイルの実行権限は
- ユーザーは読み取り・書き込み・実行が
- グループは読み取り・実行
- その他のユーザーは読み取り・実行
となります。
Permission変更
個のファイルに対し実行権限は不要だよという場合chmod
コマンドを使用し実行権限を変更することができます。
chmod 644 run1
a
(全員)から実行権限を取り除く以下の指定方法でも同じ結果となります。
chmod a-x run1
$ ll
total 1900
-rw-r--r-- 1 envader envader 1941911 9月 28 2021 run1
コード参考:実行ファイルについて
学んだこと
- 実行ファイルってのは選択することで実行できるプログラムのファイル
- 実行ファイル等を実行するに当たり権限の変更が必要な場合
chmod
コマンドを使用する
猫たちはそのへんで転がっています。
自分で熊チョップ食らうポジションに行って解せぬ表情の猫
コメント