Linux でファイル権限を変更する方法
Linux は複数のユーザを持つことができる OS です。そのため、Linux ではファイルへのアクセス権限を管理する必要があります。あるユーザがファイルへのアクセス権限を持っていない場合、Permission denied error が表示されることがあります。Linux では、chmod コマンドラインユーティリティを用いてファイルのアクセス権限を変更することができます。
Linux ファイルのパーミッションを表示する
現在の作業ディレクトリ内のすべてのファイルとディレクトリのパーミッションを表示します。には、ls -l コマンドを使用します。
ls -l
出力:
-rw-rw-r-- 1 zeppy zeppy 123 Oct 4 20:47 1.sh
-rw-rw-r-- 1 zeppy zeppy 46 Sep 30 20:36 file.txt
各ファイルの先頭にある部分は、その場所にある特定のファイルのパーミッションを表しています。出力では、-rw-rw-r-- はファイルのパーミッションを表しています。
- 先頭の
-は、その内容がファイルであることを表します。 rw-はuserのパーミッションを表します。rw-はuser-groupのパーミッションを表します。r--はothersのパーミッションを表します。
r は読み込みパーミッション、w は書き込みパーミッション、x は実行パーミッション、- はパーミッションなしを表します。
出力が示すように、user と group は読み込みと書き込みのパーミッションのみを持ち、実行のパーミッションは持っていないが、others はカレントディレクトリ内のファイルの両方に対して読み込みのパーミッションのみを持っています。
chmod コマンドでファイル/ディレクトリのパーミッションを変更する
構文
chmod permissions filename
ここで、permissions は設定したいパーミッションを表し、filename はパーミッションを設定したいファイルの名前を表します。
パーミッションは絶対モードでもシンボリックモードでも表現できます。
例:filename を用いてファイルのパーミッションを設定する。chmod コマンドを使ってファイルのパーミッションを設定する
chmod 760 file.txt
ファイル file.txt に対して、owner または user に読み込み、書き込み、実行のパーミッションを設定し、group に読み込み、書き込みのパーミッションを設定し、others にはパーミッションを設定しません。ここでは、パーミッションは絶対モードを用いて表現されます。
chmod u=rwx,g=rw,o=--- file.txt
シンボリックモードを用いて、読み書きと実行のパーミッションを owner または user に設定し、読み書きのパーミッションを group に設定し、others にはパーミッションを与えないようにします。
例:シンボリックモードを用いて chmod コマンドを用いてディレクトリのパーミッションを設定する
ディレクトリ内のすべてのファイルのパーミッションを設定するには、chmod コマンドに -R または --recursive オプションを付ける。
chmod -R 760 testdir
これは絶対モードを用いて、ディレクトリ testdir に対して、読み書きと実行のパーミッションを owner または user に、読み書きのパーミッションを group に、そして others にはパーミッションを設定しないようにします。
chmod -R u=rwx,g=rw,o=--- testdir
シンボリックモードを用いて、ディレクトリ testdir に対して、owner または user の読み取り、書き込み、実行のパーミッションを設定し、group の読み取りと書き込みのパーミッションを設定し、others のパーミッションを設定しないようにします。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn