0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linux パーミッションと権限について(自分用メモ

Posted at

パーミッションとは、ファイルやディレクトリに対する権限。権限には「読み取り権」「書き込み権」「実行権」の3種類

・読み
ーファイル
ファイル内容を参照(cat,moreなど)

ーディレクトリ
ディレクトリの内容を参照(ls,findなど)

・書き
ーファイル
ファイルに書き込み(viなど)

ーディレクトリ
ディレクトリ内に真摯ファイルを作成。既存ファイルの名前変更や削除(touch,mv,rmなど)

・実行
ーファイル
ファイルを実行

ーディレクトリ
ディレクトリ内のファイルへのアクセス。ディレクトリへの移動(cd)

ファイルやディレクトリを新規作成した際の、デフォルトのパーミッションを設定するにはumaskコマンドを利用します。

umask [マスク値]

umaskコマンドではマスク値というものを設定して、新規に作成するファイルとディレクトリのデフォルトのパーミッションを決定します。マスク値はユーザ毎に指定できます。通常「/etc/bashrc」などに設定されており、シェルの起動時にシステムのデフォルト値に戻ります。

マスク値が0の場合に使用されるデフォルトのパーミッションは、ファイルが「666」、ディレクトリが「777」です。これらの値から、指定したマスク値を引いた値が新たなデフォルトのパーミッションとして設定されます。

666 - マスク値 = ファイルのデフォルトのパーミッション
777 - マスク値 = ディレクトリのデフォルトのパーミッション

パーミッションの表記は各桁が独立して、左から所有ユーザ、所有グループ、その他のユーザを表します。ですのでumask値を引く際も各桁ごとに引きます。
なお、ファイルのデフォルトのパーミッションは「666」で実行権が無いので、umask値に関わらず実行権は設定されません。

また、特殊なパーミッションとして、以下の3つがあります。

・SUID
実行ファイルに設定する事で、そのプログラムをどのユーザが実行しても、プログラムの所有ユーザの権限で実行されます。
設定はchmodコマンドで、通常のパーミッションの値に4000を加えた値を設定するか、所有ユーザに「s」という権限を追加します(u+s)。
これが設定された代表的なプログラムに「passwd」コマンドがあります。

・SGID
実行ファイルに設定する事で、そのプログラムをどのユーザが実行しても、プログラムの所有グループの権限で実行されます。
設定はchmodコマンドで、通常のパーミッションの値に2000を加えた値を設定するか、所有グループに「s」という権限を追加します(g+s)。

・スティッキービット
ディレクトリに設定する事で、そのディレクトリに対して書き込み権限を持つユーザでも、自分が所有する以外のファイルを削除できなくなります。
設定方法はchmodコマンドで、通常のパーミッションの値に1000を加えた値を設定するか、その他ユーザに「t」という権限を追加します(o+t)。
これが設定された代表的なディレクトリに「/tmp」ディレクトリがあります。

ファイルやディレクトリのパーミッションを変更するにはchmodコマンドを利用します。

chmodコマンドの書式は以下のとおりです。
chmod [-R] パーミッション ファイルまたはディレクトリ

「-R」オプションを使用すると、指定したディレクトリおよびその配下にあるファイルのパーミッションを変更することが出来ます。

パーミッションの指定には数値か記号のどちらかを用います。
・数値の場合
chmod -R 755 dir

・記号の場合
・対象
u 所有者
g 所有グループ
o その他のユーザ
a 全てのユーザ

・操作
+権限を追加
- 権限を削除
= 権限を指定

・権限
r 読み取り権
w書き込み権
x実行権
s SUIDまたはSGID
t スティッキービット

対象、操作、権限の順に指定します。また「,」を使用して繰り返すことも出来ます。

指定したファイルまたはディレクトリの所有ユーザや所有グループを変更するにはchownコマンドを利用します。所有ユーザを変更できるのはrootユーザのみです。
また、所有グループのみを変更可能なchgrpコマンドもあります。ユーザが所属しているグループであれば、一般ユーザでも変更できます。

・所有ユーザのみを変更する場合
chown [-R] ユーザ名 ファイルまたはディレクトリ

・所有ユーザと所有グループを同時に変更する場合
chown [-R] ユーザ名:グループ名 ファイルまたはディレクトリ

・所有グループのみを変更する場合
chown [-R] :グループ名 ファイルまたはディレクトリ
chgrp [-R] グループ名 ファイルまたはディレクトリ

「-R」オプションを使用すると、指定したディレクトリ、およびその配下にあるファイルの所有ユーザやグループを再帰的に変更できます。
なお、「:」の部分は「.」としても同じです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?