LoginSignup
0
0

More than 1 year has passed since last update.

【Linux】chmodコマンドについて(ファイル/ディレクトリの権限変更)

Last updated at Posted at 2022-08-30

権限不足でファイルの書き込み等が行えない

権限回りの問題で、スクリプトの実行が行えない/ファイルの移動が行えない等の問題が発生する事があります。
そんな時にパーミッションの変更を行う事で、事象の解決に繋がる事がございます。

以下のようなファイルが存在して、 test_01 以外のユーザーは読み込みだけが許可されているような状況があるとします。所有者は test_01ユーザー となり、現在は test_02ユーザー でログインしています。

[test_02@localhost tmp]$ ll
合計 0
-rw-r--r--. 1 test_01 test_01  0  8月 13 19:35 memo.txt
-rw-r--r--. 1 test_01 test_01  4  8月 30 07:04 test.sh

現在の状況では、test_02ユーザーはファイルの書き込みは行えないです。
試しにコマンドの実行結果を書き込みしてみましたが、許可がないとエラーが発生しました。
また、スクリプトファイルについても実行権が付与されていないので、動かせません。
※権限的な説明がしたいので、フルパスで動かしました。(bashコマンド使えば、権限関係なく動かせます。)

[test_02@localhost tmp]$ ll > memo.txt
-bash: memo.txt: 許可がありません
[test_02@localhost tmp]$ /tmp/test.sh
-bash: /tmp/test.sh: 許可がありません

chmodについて

パーミッションの変更を、chmodコマンドで行います。
構文は、chmod 数値 ファイル名 となっております。
数値は、それぞれ所有者/グループ/その他のユーザー で指定します。

744で指定した場合は、所有者は読み取り/書き込み/実行権が付与され、グループ/その他のユーザーには読み取り権のみが付与されます。

所有者のみに読み取り/書き込み/実行権を付与したい場合は chmod 700 ファイル名 を実行する事で可能です。

下記表を参照下さい。
読み取りのみを行いたい場合は、4を指定。読み取り + 書き込み を行いたい場合は、4 + 2 で6を指定します。数字を加算すれば、複数の権限付与を行えます。

数字 内容
4  読み取り(r)
2  書き込み (w)
1  実行(x)

実際にやってみた

実際にパーミッションの変更を行います。
所有者じゃないユーザでchmodコマンドを実行をすると、エラーになります。
なので、所有者ユーザにスイッチします。

ユーザーをスイッチ
[test_02@localhost tmp]$ ll
合計 0
-rw-r--r--. 1 test_01 test_01  0  8月 13 19:35 memo.txt
-rw-r--r--. 1 test_01 test_01  4  8月 30 07:04 test.sh
[test_02@localhost tmp]$ chmod 746 memo.txt
chmod: `memo.txt' のパーミッションを変更しています: 許可されていない操作です
[test_02@localhost tmp]$ su - test_01
[test_01@localhost ~]$

chmodコマンドで、パーミッションの変更を行います。
memo.txt のその他ユーザに読み込み(4) + 書き込み (2) を指定。
test.sh のその他ユーザに読み込み(4) + 実行 (1) を指定。
llコマンドで権限が付与されたか、確認します。

権限の付与
[test_01@localhost ~]$ chmod 746 ../../tmp/memo.txt
[test_01@localhost ~]$ chmod 745 ../../tmp/test.sh
[test_01@localhost ~]$ ll /tmp
合計 4
-rwxr--rw-. 1 test_01 test_01  0  8月 13 19:35 memo.txt
-rwxr--r-x. 1 test_01 test_01  4  8月 30 07:04 test.sh

test_02ユーザーにスイッチして、書き込みと実行がそれぞれ行えるかを確認します。

実践
[test_02@localhost tmp]$ ll > memo.txt
[test_02@localhost tmp]$ cat memo.txt
合計 4
-rwxr--rw-. 1 test_01 test_01  0  8月 30 07:37 memo.txt
-rwxr--r-x. 1 test_01 test_01  4  8月 30 07:04 test.sh
[test_02@localhost tmp]$ /tmp/test.sh
/tmp

無事両方行える事を確認しました。

終わりに

chmodコマンドは結構使います。
覚えておいて損はないとか思います

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0